Ga naar inhoud

Header

Datatypes en functies

Introductie

Data komt in verschillende soorten voor.

Denk maar aan:

  • Getallen
  • Tekst
  • Datums
  • Etc.

SQL kent voor verschillende soorten data in kolommen, verschillende datatypes.

Verschillende datatypes heeft meerdere voordelen, bijvoorbeeld:

  • Optimaler geheugengebruik.
  • Verschillende functies voor verschillende eigenschappen van datatypes, denk aan:
    • Berekeningen voor getallen.
    • Aanpassingen doen op, en zoeken in, tekst.




1. Verschillende SQL datatypes

Verschillende veelvoorkomende SQL datatypes zijn:

  • INT: gehele getallen.
  • DECIMAL, FLOAT: kommagetallen.
  • VARCHAR, NVARCHAR: tekst.
  • DATETIME: datum en tijd.
  • BIT/BOOL: waar/niet waar (boolean).

Zie het voorbeeld in tabel movies:

Header




2. Verschillende functies voor verschillende datatypes

Er zijn verschillende handige functies.

We kennen de functie COUNT() al, om het aantal rijen van een selectie te berekenen:

SELECT
  COUNT(*)
FROM
  movies;
count
36
  • Hierbij wordt het aantal rijen in tabel movies geteld.


2.1. Functies voor getallen

Functie MIN() geeft de laagste, minimale, waarde:

SELECT
  MIN(year)
FROM
  movies;
min
1972


Functie MAX() geeft de hoogste, maximale, waarde:

SELECT
  MAX(year)
FROM
  movies;
max
2005


Functie AVG() (average) geeft het gemiddelde:

SELECT
  AVG(rank)
FROM
  movies;
avg
7.791176470588234


Functie SUM() geeft de som:

SELECT
  SUM(rank)
FROM
  movies;
sum
264.9


2.2. Functies voor tekst

Functie LENGTH() geeft de lengte, het aantal karakters, van de tekst:

SELECT
  name,
  LENGTH(name)
FROM
  movies;
name length
Aliens 6
Animal House 12
Apollo 13 9
... ...
Columns: 2
Rows: 36

Let op: LENGTH() werkt niet in in alle SQL-dialecten.



Functie UPPER() geeft de tekst in hoofdletters:

SELECT
  name,
  UPPER(name)
FROM
  movies;
name upper
Aliens ALIENS
Animal House ANIMAL HOUSE
Apollo 13 APOLLO 13
... ...
Columns: 2
Rows: 36


Functie LEFT(column_name, <n>) geeft het aantal karakters vanaf de linkerkant:

SELECT
  name,
  LEFT(name, 3)
FROM
  movies;
name left
Aliens Ali
Animal House Ani
Apollo 13 Apo
... ...
Columns: 2
Rows: 36
  • Je geeft hierbij het aantal karakters op.


Functie REPLACE(column_name, <old_string>, <new_string>) geeft de tekst waarbij je karakters kunt vervangen. Deze functie is hoofdlettergevoelig.

SELECT
  name,
  REPLACE(name, 'A', 'Prefix_A')
FROM
  movies;
name replace
Aliens Prefix_Aliens
Animal House Prefix_Animal House
Apollo 13 Prefix_Apollo 13
Batman Begins Batman Begins
Braveheart Braveheart
... ...
Columns: 2
Rows: 36
  • Je geeft hierbij de oude en nieuwe tekst op.
  • Let op dat je de teksten tussen enkele quotes plaatst.


Functie CONCAT(<string_1>, ..., <string_n>) plakt verschillende teksten aan elkaar:

SELECT
  name,
  CONCAT('before_', name, '_after')
FROM
  movies;
name replace
Aliens before_Aliens_after
Animal House before_Animal House_after
Apollo 13 before_Apollo 13_after
Batman Begins before_Batman Begins_after
Braveheart before_Braveheart_after
... ...
Columns: 2
Rows: 36
  • Je geeft hierbij de oude en nieuwe tekst op.
  • Let op dat je de teksten tussen enkele quotes plaatst.


2.3. Functies voor datums

In onze IMDb database bevinden zich geen datums.

Maar onderstaande functies zijn te gebruiken bij datums:



Functie EXTRACT(YEAR FROM <date>) geeft het jaar van een datum:

SELECT
  NOW() AS current_date,
  EXTRACT(
    YEAR
    FROM
      NOW()
  ) AS current_year;

current_date current_year
2023-08-22 10:32:15.129857+00 2023
Columns: 2
Rows: 1

Functie NOW() geeft de huidige datum en tijd:



Functie EXTRACT(MONTH FROM <date>) geeft de maand van een datum:

SELECT
  NOW() AS current_date,
  EXTRACT(
    MONTH
    FROM
      NOW()
  ) AS current_month;

current_date current_month
2023-08-22 10:34:09.949947+00 8
Columns: 2
Rows: 1


Er zijn nog veel meer functies. Bovenstaand overzicht toont slechts een indicatie van veelgebruikte functies. Let op: Er zijn verschillen tussen de SQL dialecten.




Samenvatting

  • Iedere kolom in een SQL database tabel heeft een datatype.
    • Het heeft effect op het geheugengebruik.
    • Voor verschillende datatypes kun je verschillende functies gebruiken.
  • Veelvoorkomende datatypes zijn:
    • INT: gehele getallen.
    • DECIMAL, FLOAT: kommagetallen.
    • VARCHAR, NVARCHAR: tekst.
    • DATETIME: datum en tijd.
    • BIT/BOOL: waar/niet waar (boolean).
  • Veelgebruikte functies zijn:
    • Algemeen:
      • COUNT(): tel het aantal rijen.
    • Getallen:
      • MIN(): geeft de minimale waarde.
      • MAX(): geeft de maximale waarde.
      • AVG(): geeft het gemiddelde.
      • SUM(): geeft de som.
    • Tekst:
      • LENGTH(): geeft het aantal karakters.
      • UPPER(): geeft tekst in hoofdletters.
      • LEFT(): geeft het eerste aantal karakters.
      • REPLACE(): vervangt een tekst door een andere tekst.
      • CONCAT(): voegt teksten samen.
    • Datums:
      • YEAR(): geeft het jaar.
      • MONTH(): geeft de maand.