SQL Server Essentials: Gebruik van SQL SELECT en de WHERE en HAVING Clauses om Gegevens op te Halen

In deze artikel, zal ik de basis van het gebruik van de SQL SELECT-instructie behandelen om gegevens op te vragen uit één of meerdere SQL Server tabellen. Ik zal ook uitleggen hoe u geselecteerde kolommen kunt opvragen, evenals hoe u de SQL WHERE en HAVING-clausules kunt gebruiken om rijen te filteren.

De voorbeelden in dit artikel maken allemaal gebruik van de AdventureWorksLT2019 voorbeelddatabase. In het vorige artikel uit deze serie legde ik uit hoe u SQL Server-tabellen kunt vullen met behulp van de INSERT, UPDATE en DELETE-instructies. Deze Structured Query Language (SQL)-instructies wijzigen de inhoud van een tabel, maar de SQL SELECT-instructie heeft een ander doel.

Advertentie

 

Hoe een eenvoudige SQL SELECT-instructie te gebruiken

De SQL SELECT instructie wordt gebruikt om gegevens op te vragen uit een tabel. Het volgende codevoorbeeld illustreert de meest basale syntaxis van de SELECT-instructie.

SELECT columns FROM schema_name.table_name;

Zoals u zou moeten weten, zijn tabelgegevens georganiseerd in een rij-en-kolomformaat. Elke rij vertegenwoordigt een uniek record in een tabel, en elke kolom vertegenwoordigt een veld in de dataset.

De eerste overeenkomst van de SELECT-instructie is een lijst van de kolomnamen die zullen worden opgehaald. Hier geeft u een lijst op van door komma’s gescheiden kolommen waaruit u gegevens wilt ophalen.

Advertentie

Vervolgens specificeert de FROM-clausule de brontabel en de schemanaam indien nodig. SQL Server gebruikt schema’s om tabellen en andere databaseobjecten logisch te groeperen. Het standaardschema voor elke database is dbo, en omdat het schema dat hier wordt gebruikt, kan worden weggelaten.

De volgende lijst toont een voorbeeld van een eenvoudige SELECT-instructie:

  • Het eerste USE commando stelt de huidige database in op AdventureWorksLT2019.
  • De SELECT-instructie levert een kolommenlijst voor de resultaatset die zal worden opgehaald uit de SalesLT.Customer tabel.
  • In dit geval gebruikt de AdventureWorksLT2019 voorbeelddatabase de schemanaam ‘SalesLT’ (onder andere), dus moet je de schemanaam, een punt en vervolgens de tabelnaam, die ‘Customers’ is, opnemen.
  • De ‘FirstName’ en ‘LastName’ kolommen halen de voornaam en de achternaam van de klant op.
USE AdventureWorksLT2019
SELECT FirstName, LastName from SalesLT.Customer
An example of a simple SQL SELECT statement (Image credit: Petri/Michael Otey)

Als verkorte notatie kunt u een asterisk (*) gebruiken om alle kolommen in de tabel op te halen, ongeacht het aantal kolommen. U kunt hieronder een voorbeeld daarvan zien:

USE AdventureWorksLT2019
SELECT * from SalesLT.Customer
You can use an asterisk (*) to retrieve all of the columns in the table (Image credit: Petri/Michael Otey)

De SELECT * -instructie is handig voor ad-hoc query’s of voor het bekijken van de kolommen en gegevens van een tabel waar u niet bekend mee bent. U moet deze instructie echter niet gebruiken voor productiecode – het haalt meestal meer gegevens op dan uw toepassing nodig heeft, en u wilt uw SQL Server-werklast niet verhogen.

Advertisement

Hoe filter je rijen met de SQL WHERE-clausule

Het echte kracht van de SELECT-instructie ligt in zijn filter- en joinmogelijkheden. De SELECT-query kan optioneel een WHERE-clausule gebruiken om de gegevens te filteren die zullen worden geretourneerd.

De WHERE-clausule gebruikt één of meer Booleaanse voorwaarden om de gewenste tabelgegevens te selecteren. De WHERE-clausule komt altijd na de FROM-clausule en voor de GROUP BY, HAVING, en ORDER BY-clausules.

U kunt hieronder een voorbeeld zien van het gebruik van de SQL WHERE-clausule. Hier wordt de WHERE-clausule gebruikt om een selectielijst te filteren die de kolommen ‘Voornaam’, ‘Achternaam’, ‘Telefoon’ en ‘Bedrijfsnaam’ bevat uit de rijen die de waarde ‘Sharp Bikes’ bevatten in de kolom ‘Bedrijfsnaam’.

USE AdventureWorksLT2019
SELECT FirstName, LastName, Phone, CompanyName FROM SalesLT.Customer WHERE CompanyName = 'Sharp Bikes';
Using the WHERE clause to filter data that will be returned (Image credit: Petri/Michael Otey)

Filteren rijen die een waarde bevatten als onderdeel van een string

De kracht van het gebruik van de WHERE-clausule met het SELECT-statement ligt in zijn flexibiliteit. De WHERE-clausule gaat veel verder dan de eenvoudige gelijkheid, “groter dan” en “kleiner dan” vergelijkingsoperatoren. Laten we eens wat dieper ingaan op enkele dingen die u kunt doen met de WHERE-clausule, te beginnen met het gebruik van de SQL LIKE-operator.

De LIKE-operator wordt gebruikt om te bepalen of een specifieke tekenreeks overeenkomt met een gespecificeerd patroon. In het onderstaande voorbeeld halen we alle rijen op uit de klantentabel die het woord ‘Bike’ ergens in de kolom ‘Bedrijfsnaam’ bevatten. Hier moeten we het % jokerteken zowel voor als na het woord ‘Bike’ gebruiken.

USE AdventureWorksLT2019
SELECT SalesPerson, CompanyName FROM SalesLT.Customer WHERE CompanyName LIKE('%Bike%');
Using the WHERE clause with the LIKE operator (Image credit: Petri/Michael Otey)

Filteren van rijen die voldoen aan een van drie voorwaarden

U kunt ook de WHERE-clausule gebruiken om rijen te filteren op basis van meerdere verschillende waarden. De volgende codelijst toont hoe u de SELECT-instructie met een WHERE-clausule kunt gebruiken om drie verschillende waarden uit de producttabel te selecteren. In dit voorbeeld wordt de WHERE-clausule gebruikt met de OF-operator om rijen te selecteren waar de ‘ProductID’ gelijk is aan 680, 711 of 722.

USE AdventureWorksLT2019
SELECT Name, ProductID, ProductNumber FROM SalesLT.Product
 WHERE ProductID = 680 OR ProductID = 711 OR ProductID = 722; 
Filtering rows that meet different conditions with the WHERE clause (Image credit: Petri/Michael Otey)

Filteren van rijen die in een lijst van waarden staan

Op dezelfde manier kunt u de WHERE-clausule gebruiken om rijen te selecteren die zijn opgenomen in een lijst die is gedefinieerd met behulp van de IN-operator. In het volgende voorbeeld zal het SELECT-statement de rijen retourneren die de waarden ‘Bothell’, ‘Bellevue’ of ‘Renton’ bevatten in de kolom ‘City’ van de tabel SalesLT.Address.

USE AdventureWorksLT2019
SELECT AddressID, AddressLine1, City FROM SalesLT.Address
WHERE City IN ('Bothell', 'Bellevue', 'Renton');
Filtering rows that are in a list of values with the IN operator (Image credit: Petri/Michael Otey)

Filteren van rijen met een waarde tussen twee waarden

U kunt ook de WHERE-clausule van het SELECT-statement gebruiken met de BETWEEN-operator om rijwaarden te selecteren die vallen binnen een bepaald vooraf gedefinieerd bereik in een specifieke kolom. Het volgende voorbeeld toont hoe u BETWEEN kunt gebruiken om alleen de rijen in de Product-tabel terug te krijgen die een waarde in de kolom ‘ListPrice’ hebben die groter is dan 10 en kleiner dan 50.

USE AdventureWorksLT2019
SELECT ProductID, Name  FROM SalesLT.Product  WHERE ListPrice Between 10 AND 50; 
Filtering rows that have a value between two values (Image credit: Petri/Michael Otey)

Rijen filteren met de HAVING-clausule

Je kunt ook rijen filteren in een resultaatset door de HAVING-clausule te gebruiken. De HAVING-clausule is toegevoegd aan SQL Server omdat het WHERE-trefwoord niet kan worden gebruikt met aggregaatfuncties zoals GROUP BY. Het wordt gebruikt om een zoekvoorwaarde op te geven voor een groep of een aggregaat die één of meer voorwaarden bevat die waar zijn voor verschillende groepen records.

De HAVING-clausule komt altijd na de GROUP BY-clausule en voor de ORDER BY-clausule, zoals je kunt zien in de volgende SQL-instructie. In dit voorbeeld bestaat de resultaatset uit de ‘SalesOrderID’ en de kolomalias ‘SubTotal’. De volgorde is oplopend (ascending) en de rijen zijn gegroepeerd door de ‘SalesOrderID’.

USE AdventureWorksLT2019 ; 
SELECT SalesOrderID, SUM(LineTotal) AS SubTotal 
FROM SalesLT.SalesOrderDetail  GROUP BY SalesOrderID 
HAVING SUM(LineTotal) > 5000.00 
ORDER BY SalesOrderID ;
Filtering rows with the HAVING clause (Image credit: Petri/Michael Otey)

Samenvatting

In deze tutorial heb ik de basisprincipes uitgelegd van het gebruik van de T-SQL SELECT-instructie om rijen op verschillende manieren te filteren. De WHERE-clausule biedt een uiterst flexibele reeks operators waarmee u rijen kunt selecteren op basis van verschillende voorwaarden. Op dezelfde manier stelt de HAVING-clausule u in staat groepen rijen te selecteren die aan een bepaalde voorwaarde voldoen. Bedankt voor het lezen en blijf op de hoogte voor mijn volgende artikel in deze SQL Server Essential-serie.

Gerelateerd artikel:

Source:
https://petri.com/sql-select-where-clause/