In deze serie lessen leert u hoe u Microsoft SQL Server kunt benaderen met behulp van het SQL SELECT statement. Na het lezen van deze les bent u in staat om:
- Alle tabellen in een SQL Server SSMS (SQL Server Management Studio) Database te identificeren.
- Begrijpen hoe je een lijst van de kolommen van een tabel.
- Om kolommen te bekijken, tekst en wiskundige resultaten te creëren en verschillende waarden in te stellen, gebruikt u de SQL SELECT verklaring.
- Leer enkele technieken om uw commando’s te debuggen en fouten te herstellen.
Belangrijk! Volg de voorbeelden in uw database en doe ze. Als u dat nog niet hebt gedaan, meld u dan aan voor mijn gids Aan de slag met SQL Server. U kunt begeleiding krijgen bij het downloaden van de gratis software en de voorbeelddatabase.
Uw database begrijpen
Een eenvoudige select statement bestaat uit twee delen. Het eerste deel beschrijft welke kolommen we willen bekijken en het tweede deel welke tabel we bekijken. Een select statement ziet er als volgt uit:
SELECT LastName FROM Person.Person
In dit voorbeeld is LastName de kolom en Person de tabel. De kolommen komen na het SELECT sleutelwoord; terwijl de tabel wordt voorafgegaan door FROM.
Tabelnaamgeving
Je vraagt je misschien af waarom de Person tabel Person wordt genoemd. Person in de bovenstaande verklaring. Dit heeft te maken met de manier waarop objecten zijn georganiseerd op de server. De database kan worden gezien als een serie geneste containers. De containers zijn de:
- Server/Instance – De instantie van SQL Server die op de computer draait.
- Databases – Een of meer databases die op de instantie zijn gemaakt.
- Schema’s – Een manier om tabellen en andere databaseobjecten logisch te groeperen.
De volledig gekwalificeerde naam voor een tabel is …. Dus als we echt expliciet willen zijn, zouden we iets als
SELECT LastName FROM ...
kunnen gebruiken om een query te doen. Gelukkig schrijven we queries meestal binnen de context van één database, zodat we alleen het Schema en de TabelNaam hoeven op te geven, en wel als volgt:
SELECT LastName FROM Person.Person
Maar hoe zit het met de haakjes? Die worden gebruikt als uw tabel een spatie in de naam heeft. Dus
SELECT Last NameFROM Person.Person Table
zou een fout geven
SELECT FROM Person.
Is OK. Mijn advies? Als je je eigen tabellen een naam mag geven, gebruik dan geen spaties, haakjes zijn lelijk! Als je toch moet, doe dan zoals de Oracle mensen en gebruik underscores. Person_Table is veel gemakkelijker te lezen dan , persoonlijk geef ik de voorkeur aan PersonTable.
Gebruik van de Object Explorer
Om queries te kunnen schrijven moet je weten welke tabellen en kolommen er in je databases beschikbaar zijn. Wanneer u SSMS (SQL Server Management Studio) gebruikt, kunt u eenvoudig de tabellenmap van de database uitbreiden om een lijst van alle tabellen in uw database te krijgen. Zodra u een tabel hebt gevonden waarover u meer wilt weten, klikt u op de tabelnaam om deze uit te vouwen, en vervolgens op de map met de kolommen om een lijst met alle kolommen te krijgen.
Het uitvoeren van queries in SSMS
Voordat we te ver gaan, laat ik u zien hoe u een query in SSMS uitvoert. Het is eigenlijk heel eenvoudig. Nadat u SQL Server Management Studio hebt gestart, selecteert u uw database. Klik vervolgens op de knop New Query in de bovenste werkbalk. Er verschijnt nu een query-venster aan de rechterkant. U kunt in dit venster alles typen wat u wilt, omdat het in feite een teksteditor is. Knip en plak of typ een SQL-instructie, klik dan op Uitvoeren om de instructie uit te voeren. De resultaten worden getoond in het onderste deel van het venster en eventuele berichten, zoals fouten, worden getoond in het tabblad messages.
Selecteer meerdere kolommen
Om meer dan één kolom te selecteren, scheidt u ze gewoon met een komma. Bijvoorbeeld,
SELECT FirstName, LastNameFROM Person.Person
geeft zowel de voornaam als de achternaam als resultaat. Voor het geval je het je afvraagt, je kunt de hoofd- en kleine letters door elkaar gebruiken bij het schrijven van queries. Dat wil zeggen
SELECT FirstName, LastNameFROM Person.Person
Werkt net zo goed als
select FirstName, LastNamefrom Person.Person
Tip! Een gebruikelijke conventie is om alle trefwoorden in hoofdletters te schrijven. Sommige DBA’s vinden dat het makkelijker is om commando’s te lezen die op deze manier geschreven zijn. Persoonlijk doe ik dat niet, maar voor deze blog zal ik het proberen. 🙂
Rename SQL Columns
Je kunt de kolommen die uit je select statements komen een andere naam geven. Om dit te doen gebruik je het AS statement zoals dit:
SELECT LastName as SirNameFROM Person.Person
Dit geeft het resultaat weer als “SirName” in plaats van “LastName.” Dit is een leuke functie vanuit het oogpunt van ijdelheid, maar het komt ook van pas wanneer we een berekeningsresultaat willen teruggeven en het een naam moeten geven. Stel bijvoorbeeld dat u de LastName in hoofdletters wilt teruggeven. Dan zou u kunnen schrijven
SELECT UPPER(LastName) AS SirNameFROM Customers
UPPER staat bekend als een functie. SQL Server heeft vele functies die u kunt gebruiken om vele soorten berekeningen uit te voeren. We zullen ze later allemaal bekijken, maar voor nu moet u weten dat u verschillende functies aan elkaar kunt rijgen om een complexe uitdrukking te maken waarmee de gegevens worden uitgevoerd zoals u dat wilt.
Complexe kolomuitdrukkingen
Onze werknemerstabel bevat afzonderlijke velden voor voornaam en achternaam. Stel dat de HR-afdeling een volledige naam in hoofdletters wil zien. Hoe zou u dat doen? Heel eenvoudig! U zou kunnen schrijven
SELECT UPPER(FirstName) + ' ' + UPPER(LastName) AS FullNameFROM Person.Person
Deze verklaring ziet er misschien ingewikkeld uit, maar als we hem eenmaal uit elkaar halen, zult u zien dat hij uit een aantal eenvoudige elementen bestaat.
- Zoals u zojuist hebt geleerd, wordt UPPER gebruikt om de hoofdletters van een kolom weer te geven.
- De + vertelt SQL om twee waarden samen te voegen.
Alles tussen enkele aanhalingstekens (‘) wordt letterlijk weergegeven zoals het is. In ons geval betekent de ‘ ‘ om een enkele spatie uit te voeren. Als je onze uitdrukking in het Engels leest, zou het zijn: “Neem de hoofdletter van de voornaam, combineer die met een spatie en voeg dan de hoofdletter van de achternaam toe.”
Wiskunde met SQL!
Je kunt SQL ook wiskunde trucjes voor je laten doen. Het kan behoorlijk ingewikkeld rekenen als je het toestaat. Vandaag zal ik laten zien hoe je twee getallen kunt vermenigvuldigen, maar je kunt net zo goed optellen, aftrekken of delen. Later zullen we het wat ingewikkelder maken, zodat je je Algebra II dagen kunt herleven. 🙂 Hier zijn enkele veelgebruikte wiskunde operatoren die u in SQL kunt gebruiken:
- * Vermenigvuldigen
- / Delen
- + Optellen
- – Aftrekken
We zullen de tabel OrderDetails gebruiken en de totale prijs berekenen door de prijs per eenheid te vermenigvuldigen met het aantal.
SELECT UnitPrice, OrderQty, UnitPrice * OrderQty AS TotalFROM Purchasing.PurchaseOrderDetail
De bit ” UnitPrice * OrderQty” zegt om UnitPrice te vermenigvuldigen met Quantity.
Be Distinct and Debug
Tot nu toe hebben we het select statement gebruikt om alle records in een tabel op te halen, ongeacht of sommige waarden herhalen of niet. Als u wilt, kunt u het DISTINCT sleutelwoord gebruiken om duplicaten uit uw resultaten te verwijderen. Als u bijvoorbeeld alleen een unieke lijst met titels van werknemers wilt, gebruikt u deze SQL-instructie:
SELECT DISTINCT JobTitleFROM HumanResources.Employee
De DISTINCT-instructie werkt ook op meer dan één kolom. Als u wilt, kunt u een afzonderlijke lijst van functiebenamingen en geslachten krijgen door te typen
SELECT DISTINCT JobTitle, GenderFROM HumanResources.Employee
! Trivia: Het ALL sleutelwoord is de tegenhanger van DISTINCT en is het standaard gedrag. Daarom schrijven we het niet in onze statements.
Fouten vinden en corrigeren
Ooit typ je een select statement verkeerd in de commandoregel en de computer schreeuwt naar je – “Syntax Error!” of “Invalid Column Name” Wat te doen? Denk eraan dat een select statement uit twee delen bestaat: het SELECT en het FROM gedeelte. In het algemeen kijkt de database eerst of deze sleutelwoorden aanwezig zijn, en als dat niet het geval is, ontstaat er een Syntax error.
Dit is gewoon een mooie uitdrukking voor “je hebt een sleutelwoord verkeerd gespeld of je hebt het in een verkeerde volgorde” (bijv. je hebt Distinct voor Select zoals in DISTINCT SELECT). Zodra de sleutelwoorden zijn gecontroleerd, wordt het statement geïnspecteerd om er zeker van te zijn dat je een tabel hebt opgegeven. Zodra de tabel bekend is, kunnen de kolommen worden gecontroleerd. De volgorde is dus eerst controleren op trefwoorden, dan op tabellen, en als laatste op correcte kolommen. Als er een fout wordt weergegeven, lees die dan zorgvuldig. De kans is groot dat je iets verkeerd hebt gespeld. De computer zal u tussen aanhalingstekens vertellen wat u verkeerd hebt gespeld; het is uw taak om vervolgens de spelfout te vinden en deze te corrigeren.
SQL Select Oefeningen
Het is belangrijk om te oefenen! Gebruik de voorbeelddatabase om deze vragen te beantwoorden.
- Hoe kun je alle tabelnamen vinden in de database AdventureWorks2012?
- Wat zijn twee manieren om de namen van alle kolommen in de tabel Person.Person tabel?
- Select JobTitle en BirthDate voor alle werknemers.
- What zou de UnitPrice van elke PurchaseOrderDetail items zijn als er een halve korting was?
Answers are Here
Gefeliciteerd! U hebt zojuist geleerd hoe u de select-opdracht kunt gebruiken om een database te bevragen. Er volgen nog meer tutorials, en daarin zullen we dieper ingaan op enkele gebieden die we vandaag hebben behandeld, zoals wiskundige operatoren en functies. Denk eraan! Ik wil jullie er allemaal aan herinneren dat als je andere vragen hebt die je beantwoord wilt zien, je een reactie kunt plaatsen of me kunt tweeten. Ik ben er om je te helpen.