Introductie

Voltooid

De SQL-taal

SQL is een acroniem voor Structured Query Language. SQL wordt gebruikt om te communiceren met relationele databases. SQL-instructies worden gebruikt voor het uitvoeren van taken zoals het bijwerken van gegevens in een database of het ophalen van gegevens uit een database. De SQL SELECT-instructie wordt bijvoorbeeld gebruikt om een query uit te voeren op de database en een set gegevensrijen te retourneren. Enkele algemene relationele databasebeheersystemen die gebruikmaken van SQL zijn Microsoft SQL Server, MySQL, PostgreSQL, MariaDB en Oracle.

Er is een SQL-taalstandaard gedefinieerd door het American National Standards Institute (ANSI). Elke leverancier voegt zijn eigen variaties en extensies toe.

A SQL SELECT query retrieves a table of data from a database

In deze module leert u het volgende:

  • Begrijpen wat SQL is en hoe deze wordt gebruikt
  • Databaseobjecten in schema's identificeren
  • SQL-instructietypen identificeren
  • De SELECT-instructie gebruiken om query's uit te voeren op tabellen in een database
  • Werken met gegevenstypen
  • NULL's verwerken

Transact-SQL

Eenvoudige SQL-instructies, zoals SELECT, INSERT, UPDATE en DELETE , zijn beschikbaar, ongeacht het relationele databasesysteem waarmee u werkt. Hoewel deze SQL-instructies deel uitmaken van de ANSI SQL-standaard, hebben veel databasebeheersystemen ook hun eigen extensies. Deze uitbreidingen bieden functies die niet in de SQL-standaard vervat zitten, en hebben betrekking op aspecten zoals beveiligingsbeheer en programmeerbaarheid. Microsoft-databasesystemen zoals SQL Server, Azure SQL Database, Azure Synapse Analytics en anderen gebruiken een dialect van SQL met de naam Transact-SQL of T-SQL. T-SQL bevat taalextensies voor het schrijven van opgeslagen procedures en functies, die toepassingscode zijn die is opgeslagen in de database en het beheren van gebruikersaccounts.

SQL is een declaratieve taal

Programmeertalen kunnen worden gecategoriseerd als procedureel of declaratief. Met procedurele talen kunt u een reeks instructies definiëren die de computer volgt om een taak uit te voeren. Met declaratieve talen kunt u de gewenste uitvoer beschrijven en de details van de benodigde stappen voor het produceren van de uitvoer naar de uitvoeringsengine laten staan.

SQL ondersteunt enkele procedurele syntaxis, maar het uitvoeren van query's op gegevens met SQL volgt meestal declaratieve semantiek. U gebruikt SQL om de gewenste resultaten te beschrijven en de queryprocessor van de database-engine ontwikkelt een queryplan om deze op te halen. De queryprocessor maakt gebruik van statistieken over de gegevens in de database en indexen die in de tabellen zijn gedefinieerd om een goed queryplan te maken.

Relationele gegevens

SQL wordt meestal (hoewel niet altijd) gebruikt om query's uit te voeren op gegevens in relationele databases. Een relationele database is een database waarin de gegevens zijn ingedeeld in meerdere tabellen (technisch aangeduid als relaties), die elk een bepaald type entiteit vertegenwoordigen (zoals een klant, product of verkooporder). De kenmerken van deze entiteiten (bijvoorbeeld de naam van een klant, de prijs van een product of de orderdatum van een verkooporder) worden gedefinieerd als de kolommen of kenmerken van de tabel, en elke rij in de tabel vertegenwoordigt een exemplaar van het entiteitstype (bijvoorbeeld een specifieke klant, product of verkooporder).

De tabellen in de database zijn aan elkaar gerelateerd met behulp van sleutelkolommen die de vertegenwoordigde specifieke entiteit uniek identificeren. Er wordt een primaire sleutel gedefinieerd voor elke tabel en er wordt een verwijzing naar deze sleutel gedefinieerd als een refererende sleutel in een gerelateerde tabel. Dit is gemakkelijker te begrijpen door een voorbeeld te bekijken:

A relational database containing four tables

In het diagram ziet u een relationele database die vier tabellen bevat:

  • Klanten
  • SalesOrderHeader
  • SalesOrderDetail
  • Product-

Elke klant wordt geïdentificeerd door een uniek CustomerID-veld . Dit veld is de primaire sleutel voor de tabel Klant . De tabel SalesOrderHeader heeft een primaire sleutel met de naam OrderID om elke order te identificeren en bevat ook een refererende klant-id-sleutel die verwijst naar de primaire sleutel in de tabel Klant , zodat deze identificeert welke klant aan elke order is gekoppeld. Gegevens over de afzonderlijke items in een order worden opgeslagen in de tabel SalesOrderDetail, met een samengestelde primaire sleutel die de OrderID in de tabel SalesOrderHeader combineert met een LineItemNo-waarde. De combinatie van deze waarden identificeert een regelitem op unieke wijze. Het veld Order-id wordt ook gebruikt als een refererende sleutel om aan te geven tot welke volgorde het regelitem behoort. Een veld Product-id wordt gebruikt als een refererende sleutel voor deprimaire product-id van de tabel Product om aan te geven welk product is besteld.

Op set gebaseerde verwerking

Settheorie is een van de wiskundige basisbeginselen van het relationele model van gegevensbeheer en is fundamenteel voor het werken met relationele databases. Hoewel u mogelijk query's in T-SQL kunt schrijven zonder grondig inzicht te hebben in sets, kan het uiteindelijk lastig zijn om een aantal complexere typen instructies te schrijven die nodig kunnen zijn voor optimale prestaties.

Zonder in te gaan op de wiskunde van de settheorie, kunt u een set beschouwen als een verzameling van bepaalde, afzonderlijke objecten die als geheel worden beschouwd. In termen die worden toegepast op SQL Server-databases, kunt u een set beschouwen als een verzameling afzonderlijke objecten die nul of meer leden van hetzelfde type bevatten. De tabel Klant vertegenwoordigt bijvoorbeeld een set: met name de set van alle klanten. U ziet dat de resultaten van een SELECT-instructie ook een set vormen.

Naarmate u meer leert over T-SQL-queryinstructies, is het belangrijk om altijd te denken aan de hele set, in plaats van afzonderlijke leden. Met deze mindset kunt u beter op set gebaseerde code schrijven, in plaats van één rij tegelijk te denken. Als u met sets werkt, moet u denken aan bewerkingen die 'allemaal tegelijk' plaatsvinden in plaats van één voor één.

Een belangrijk kenmerk om op te merken over settheorie is dat er geen specificatie is met betrekking tot de volgorde van de leden van een set. Dit gebrek aan volgorde is van toepassing op relationele databasetabellen. Er is geen concept van een eerste rij, een tweede rij of een laatste rij. Elementen kunnen in elke volgorde worden geopend (en opgehaald). Als u resultaten in een bepaalde volgorde wilt retourneren, moet u deze expliciet opgeven met behulp van een ORDER BY-component in uw SELECT-query.