Lukas van der Gaag – HBO ICT – Software Engineering – 2021/2022
Inhoud
Joins................................................................................................................................................................................... 2
Subtypering ....................................................................................................................................................................... 2
Constraints ........................................................................................................................................................................ 3
Aggregation ....................................................................................................................................................................... 3
Sub-queries ....................................................................................................................................................................... 4
Pattern matching .............................................................................................................................................................. 4
Views ................................................................................................................................................................................. 4
Gebruikersbeheer ............................................................................................................................................................. 5
Gebruikers beheren ...................................................................................................................................................... 5
Toegang beheren .......................................................................................................................................................... 5
Stored procedures ............................................................................................................................................................ 6
Stored functions ................................................................................................................................................................ 6
Transactions ...................................................................................................................................................................... 8
Eisen aan transacties..................................................................................................................................................... 8
NoSQL................................................................................................................................................................................ 9
Aggregation in MongoDB .................................................................................................................................................. 9
1
, Joins
Een JOIN-clause wordt in SQL gebruikt om data van meerdere tabellen te combineren in een
resultaat, gebaseerd op een relatie tussen één of meerdere kolommen van de ene naar de
andere tabel (bijvoorbeeld foreign key -> primary key).
Er zijn een aantal verschillende soorten JOINs in SQL:
• INNER JOIN: Selecteert records van kolommen die matchen in beide tabellen.
• LEFT JOIN: Geeft alle records van de linker (eerste) tabel terug en daarnaast de
matchende records van de rechter (tweede) tabel.
• RIGHT JOIN: Geeft alle records van de rechter (tweede) tabel terug en daarnaast de
matchende records van de linker (eerste) tablel.
• FULL JOIN: Geeft alle records terug wanneer er een match is in de linker of rechter
tabel.
• SELF JOIN: Hierbij kan je elk van de bovenstaande JOINs gebruiken. Dit doe je omdat
een kolom uit de tabel een relatie heeft met een andere kolom binnen dezelfde tabel.
Subtypering
Subtypering wordt in SQL gebruikt om, net als in Java, je data op te delen in verschillende groepen die één parent
hebben. Je hebt dan een parent tabel, waar child tabellen onder hangen. Zo kan je bijvoorbeeld een parent hebben
met de naam “eten”, die standaard informatie bevat van eten (zoals koolhydraten, suikers, etc.), en dan een child
tabel genaamd “ijs”. Deze child tabel bevat alle informatie van de eten-tabel, met specifiekere data van ijs, die
andere tabellen dus niet nodig hebben.
De link leggen tussen deze twee tabellen kan op vier manieren:
1. Generate all, inherit identifier: Elke entiteit krijgt zijn eigen tabel. De primary key van de parent wordt
meegenomen in de child tabellen (als foreign key)
2. Generate parent: Je maakt maar één tabel: de parent. En alle kolommen van de childs komen ook hierin. Het
is hierbij wel belangrijk dat sommige kolommen van de childs een standaard waarden hebben of null mogen
zijn.
3. Generate children: Je maakt alleen tabellen voor de childs. Je neemt hierbij alle informatie van de parent
mee in de child. De children hebben dus deels overeenkomende kolomnamen.
4. Generate all, inherit all: Je maakt voor elke entiteit een eigen tabel, en elke tabel bevat ook alle kolommen
van de parent. Zo kun je ook instanties maken van de childs zonder de parent.
2