Lesson Learning
Lesson Learning: SQL
Naast PHP, HTML, CSS heb ik mij ook in andere programmeertalen verdiept. Zoals SQL, het schrijven van queries. Het slim gebruiken van queries zodat je vlug testresultaten kunt vinden.
Herhaling is het toverwoord, en begrippen zijn prettig om te delen. Daarom hieronder een lijst van begrippen, veelal begrippen die niet alleen bij SQL van toepassing zijn, maar eigenlijk bij elke programmeertaal.
- Keyword: actiewoord, voorbeeld select, from of select list (meerdere kolommen selecteren), formaat: in hoofdletters (will be in upper-case)
- Identifer: indenteit of een eigenschap
- A Wildcard 'select list' character: dat is het sterretje, om willekeurige / alle kolommen van de tabel te selecteren.
- Clause: een voorwaarde of bepaling, waar moet iets aan voldoen of waar komt het vandaan?
- Table names worden in het enkelvoud (will be singular) geschreven, dus tabel Person en niet tabel Persons, ook al komen er meerdere personen in voor.
- Aliasing the table name: je kunt het voluit schrijven, maar het is ook prima op 1 of enkele letters als alias voor een tabelnaam te gebruiken.
- Kolomnamen mogen nooit herhaald (will never be repeated) worden. Lijkt mij logisch, want anders kun je er moeilijk op zoeken...
- Voorbeeld vragen: (Who are all my... Wie zijn al mijn contacten, of geef mij alle contacten die beginnen met een J (select x from y where x like 'J%').
The LIKE keyword allows you to find out the most popular rows in your table. This is not true, also false! Related Clip: BETWEEN
- How many contacts do I have - Hoeveel contacten heb ik?... (select count(x) from y group by x having count(x) >= 2.
- Constrain the Number of Results: Ofwel als je je resultaat wilt beperken, dan kun je middels 'where x = 'sdfhsk' criteria opstellen waar je resultaat aan moet doen (of niet mag doen... where != 'fsdf' of where x between 1 and 4.).
Met 'Distinct' achter select te zetten, en 1 kolomnaam selecteer je van alles 1 rij, zodat je alle unieke waarden op een rij krijgt :).
- Expression: regular expressions, booleans expressions: het zijn bepaalde uitdrukkingen van combinaties van waarden, variabelen, operatoren en functies die geïnterpreteerd worden volgens bepaalde regels en vervolgens uitgerekend worden om een bepaalde waarde/resultaat op te leveren. Men zegt dat 'de expressie evalueert naar die waarde/'.
Achter 'Where' staat zo'n expressie, zo'n regel waar het resultaat aan moet voldoen wanneer de querie uitgevoerd wordt.
- Boolean operators: zoals =, <> of != (not equal to), >, <, >=, <=.
- Set Function: Order by; Group by; Having; dit zijn functies om het resultaat op een bepaalde volgorde te zetten (te orderen), of een bepaald resultaat te kunnen tellen hoeveel van een bepaalde voorkomt.
Andere functies om uit te proberen zijn MAX/MIN om een maximale of minimale waarde te pakken, AVG - Avarage een gemiddelde waarde of SUM, de som van bepaalde waarden
Uit te proberen: Count(distinct columnName) from y where x='J'.
- Om verschillende tabellen te mergen om daaruit nieuwe resultaten te creeeren gebruik je joins. De simpelste is cross join, maar deze is meteen te expliciet om hem netjes te gebruiken. Liever niet dus.
A common use of a Set function is to Find out the number of rows in a table. Related Clip: Demo - CROSS JOIN
wel te gebruiken zijn inner join, left join en right join. Is er verschil tussen left/right join en left/right outer join?
Inner joins kunnen niet omgaan met NULL waarden, daarom kun je soms beter outer joins gebruiken. En outer joins werken ook waneer er geen match in een tweede tabel is.
Left of Right zegt iets over in welk tabel er geen match hoeft te zijn.
Uit te proberen: Full outer join > er kan zowel links als rechts een NULL waarde zijn, waardoor er geen match is...
Uit te proberenLSelf join... bevat (contains) hierarchy data.
- Bulk insert > meerdere rijen invoegen
- Creating databases and tables: DDL: Data Definition Language
- Use Database Command > wel zo handig, dan weet de (MY)SQL server tenminste waar hij de query moet uitvoeren.
Fully Qualified table name > databaseName.y ; in plaats van use te gebruiken. (Met betrekking op de OTAP straat waarbij je voor elke straat een eigen databaseNaam gebruikt is dit niet handig, tenzij je hier een parameter van te voren voor definieert. Maar waarom zou je dan niet gewoon use gebruiken? Misschien wanneer je meerdere databases door elkaar wilt queriën? Dit heb ik tot nu toe nog nooit zo gebruikt...)
Uitprobeer commando : create database x (je kunt niet 2x dezelfde naam gebruiken).
Create table: denk aan: tabelnaam enkelvoud!
- 'Select * From y ;' > query
- 'Where x= ....' > expression
- Standard SQL Data types: character: set to N statically. bijvoorbeeld een VARCHAR(256).
Character varying: set to N dynamicaly, storage can be less than NULL.
Binary: Hexadecimal data = meer voor bestanden die je in je database wilt zetten, bijvoorbeeld een fotogallerij of een pdf document.
Smallint (getallen van maximaal 5 getallen, zowel negatief als positief. In gebruik het minste geheugen maar wanneer je een getal als 100.000 wil wegschrijven dan kun je beter integer gebruiken.)
Integer (getallen van maximaal 10 getallen, zowel negatief als positief, bijvoorbeeld een id.)
Bigint (getallen van maximaal 19 getallen, zowel negatief als positief)
Boolean (true or false)
Date (yyyy-mm-dd)
Time (HH-MM_SS[sF] where F is the fractional part of the timestamp)
Timestamp (Date and Time)
- NULL Values: als een veld niet verplicht is dan mag het NULL zijn, ofwel leeg.
NOT NULL is the default NULL constraint for column definitions under ANSI SQL.: this is false! Related Clip: Demo - CREATE DATABASE
- Primary Key: sleutel van een rijd, mag dus niet null zijn en moet een unieke waarde zijn.
- Constraint: SQL-beperking: dit wordt gebruikt om regels voor de gegevens in een tabel op te geven om voor een betere nauwkeurigheid en betrouwbaarheid van de gegevens te zorgen. Dit kan bij deleten van bepaalde regels ook voor een belemmering zorgen, wanneer er een afhankelijkheid/relatie met een ander tabel in staat.
- Alter table: je gebruikt een bestaand tabel om gegevens (tijdelijk) in een ander tabel op te slaan.
ALTER TABLE allows you to: change colums and constraints - Related Clip: Demo - CREATE TABLE
De instructie ALTER TABLE wordt gebruikt om kolommen in een bestaande tabel toe te voegen, te verwijderen of aan te passen.
De instructie ALTER TABLE wordt ook gebruikt om verschillende beperkingen toe te voegen en te laten vallen in een bestaand tabel.
- Create/Drop table: eerste creeëren, tweede droppen of verwijderen van het tabel.
- What must you do to rollback a DELETE statement? >>>> Run the DELETE statement in the context of a SQL Transaction - Related Clip: Demo - UPDATE