Cursus
Een database modelleert entiteiten uit de echte wereld, zoals professoren en universiteiten, door ze in tabellen op te slaan. Elke tabel bevat gegevens van één type entiteit. Dit vermindert redundantie doordat entiteiten slechts één keer worden opgeslagen. Zo is er bijvoorbeeld maar één rij nodig met de gegevens van een bepaald bedrijf. Ten slotte kun je met een database de relatie tussen entiteiten modelleren.
SQL staat voor Structured Query Language, een programmeertaal voor het opslaan, manipuleren en opvragen van gegevens in een relationele database.
SQL is de standaardtaal voor relationele databasesystemen. Alle relationele databasebeheersystemen (RDBMS) zoals MySQL, MS Access, Oracle, Sybase, Informix, Postgres en SQL Server gebruiken SQL als hun standaard databasetaal.
PostgreSQL-database
information_schema is een metadatabase die informatie over je huidige database bevat. Het is niet specifiek voor PostgreSQL en ook beschikbaar in andere databasebeheersystemen zoals MySQL of SQL Server. information_schema heeft meerdere tabellen die je kunt bevragen met de bekende SELECT * FROM-syntaxis:
- tables: informatie over alle tabellen in je huidige database
- columns: informatie over alle kolommen in alle tabellen in je huidige database
SELECT table_schema, table_name
FROM information_schema.tables;
table_schema | table_name
-------------------+------------------------------
pg_catalog | pg_statistic
pg_catalog | pg_type
pg_catalog | pg_policy
pg_catalog | pg_authid
pg_catalog | pg_shadow
public | university_professors
pg_catalog | pg_settings
...
Commando's in SQL
Data Definition Language (DDL)
- CREATE: maakt een nieuwe tabel of een weergave van een tabel.
- ALTER: wijzigt de bestaande tabel.
- DROP: verwijdert de volledige tabel of andere objecten in de database.
Data Manipulation Language (DML)
- SELECT: haalt bepaalde records op uit één of meer tabellen.
- INSERT: maakt een record aan in de bestaande tabel.
- UPDATE: wijzigt het bestaande record van de tabel.
- DELETE: verwijdert de records in de tabel en kan zelfs de volledige tabel verwijderen.
Kolommen van een bepaalde tabel bekijken
information_schema bevat ook informatie over kolommen in de tabel "columns". Zodra je de naam van een tabel kent, kun je de bijbehorende kolommen opvragen via de tabel "columns".
SELECT table_name, column_name, data_type FROM information_schema.columns WHERE table_name = 'pg_config';
table_name | column_name | data_type
-----------+-------------+-----------
pg_config | name | text
pg_config | setting | text
Hier zie je dat de systeemtabel pg_config slechts twee kolommen heeft – vermoedelijk voor het opslaan van naam-waardeparen.
Interactief voorbeeld
In deze oefening heb je alleen informatie nodig uit het 'public'-schema, dat is gespecificeerd als de kolom table_schema van de tabellen tables en columns. Het 'public'-schema bevat informatie over door gebruikers gedefinieerde tabellen en databases. De andere types table_schema bevatten systeeminformatie – hier zijn we alleen geïnteresseerd in door gebruikers gedefinieerde zaken.
Je krijgt informatie over alle tabelnamen in de huidige database, terwijl je je query beperkt tot het 'public' table_schema.
## Query the right table in information_schema
SELECT table_name
FROM information_schema.tables
## Specify the correct table_schema value
WHERE table_schema = 'public';
Wanneer we bovenstaande code uitvoeren, levert dat het volgende resultaat op:

Wil je meer leren over relationele databases in SQL? Bekijk dan deze video uit onze cursus Introduction to Relational Databases in SQL.
Deze content is afkomstig uit DataCamp’s cursus Introduction to Relational Databases in SQL van Timo Grossenbacher.
Bekijk ook onze tutorial Introduction to Indexing in SQL.
