Tässä oppituntisarjassa opit tekemään kyselyjä Microsoft SQL Serverille SQL SELECT -lausekkeen avulla. Kun olet lukenut tämän oppitunnin, osaat:
- Tunnistaa kaikki SQL Server SSMS (SQL Server Management Studio) -tietokannan taulut.
- Ymmärtää, miten taulukon sarakkeet luetellaan.
- Käyttääksesi sarakkeita, luodaksesi teksti- ja matemaattisia tuloksia ja asettaaksesi erillisiä arvoja, käytä SQL SELECT -lauseketta.
- Oppi joitakin tekniikoita komentojen debuggaamiseen ja virheiden korjaamiseen.
Tärkeää! Seuraa esimerkkejä tietokannassasi ja tee ne. Jos et ole vielä tehnyt sitä, rekisteröidy SQL Serverin aloitusoppaaseen. Saat ohjeita ilmaisen ohjelmiston ja esimerkkitietokannan lataamiseen.
Tietokantasi ymmärtäminen
Yksinkertainen select-lause koostuu kahdesta osasta. Ensimmäinen osa kuvaa, mitä sarakkeita haluamme tarkastella, ja toinen osa, mitä taulukkoa tarkastelemme. Select-lause näyttää seuraavalta:
SELECT LastName FROM Person.Person
Tässä esimerkissä LastName on sarake ja Person taulukko. Sarakkeet tulevat SELECT-avainsanan jälkeen, kun taas taulukkoa edeltää FROM.
Taulujen nimeäminen
Saatat ihmetellä, miksi Person-taulukkoon viitataan nimellä Person. Person edellä olevassa lausekkeessa. Tämä liittyy tapaan, jolla objektit järjestetään palvelimella. Tietokantaa voidaan ajatella sarjana sisäkkäisiä säiliöitä. Säiliöt ovat:
- Palvelin/Instanssi – Tietokoneessa käynnissä oleva SQL Serverin instanssi.
- Tietokannat – Yksi tai useampi tietokanta, joka on luotu instanssiin.
- Kaaviot – Tapa ryhmitellä loogisesti taulukoita ja muita tietokantaobjekteja.
Taulukon täysipainoinen nimi on ….. Jos siis todella haluaisimme olla yksiselitteisiä, voisimme käyttää jotain sellaista kuin
SELECT LastName FROM ...
kyselyn tekemiseen. Onneksi kirjoitamme kyselyt tyypillisesti yhden tietokannan puitteissa, joten meidän tarvitsee määrittää vain Schema ja TableName seuraavasti:
SELECT LastName FROM Person.Person
Mutta entä sulkeet ? Niitä käytetään, jos taulukon nimessä on välilyönti. Joten
SELECT Last NameFROM Person.Person Table
olisi virhe
SELECT FROM Person.
On OK. Minun neuvoni? Jos saat nimetä omat taulukkosi, älä käytä välilyöntejä, sulut ovat rumia! Jos sinun on pakko, tee kuten Oraclen väki tekee ja käytä alleviivauksia. Person_Table on paljon helpompi lukea kuin , henkilökohtaisesti pidän enemmän PersonTablesta.
Objekti-selaimen käyttäminen
Kyselyjen kirjoittamista varten sinun on tiedettävä, mitä tauluja ja sarakkeita tietokannoissasi on käytettävissä. Kun käytät SSMS:ää (SQL Server Management Studio), voit yksinkertaisesti laajentaa tietokannan taulukot-kansiota ja luetella kaikki tietokannassasi olevat taulukot. Kun löydät taulukon, josta haluat tietää enemmän, klikkaa taulukon nimeä laajentaaksesi sitä ja sitten sarakkeet-kansiota luetellaksesi kaikki sarakkeet.
Kyselyjen suorittaminen SSMS:ssä
Ennen kuin menemme liian pitkälle, näytän, miten kysely suoritetaan SSMS:ssä. Se on itse asiassa todella helppoa. Kun olet käynnistänyt SQL Server Management Studion, valitse tietokantasi. Napsauta sitten New Query (Uusi kysely) -painiketta, joka sijaitsee yläosan työkalupalkissa. Tämä näyttää oikealla olevan kyselyikkunan. Voit kirjoittaa tähän ikkunaan mitä tahansa, sillä se on periaatteessa tekstieditori. Leikkaa ja liitä tai kirjoita SQL-lause ja suorita lauseke napsauttamalla Suorita. Tulokset näkyvät ikkunan alaosassa, ja mahdolliset viestit, kuten virheet, näkyvät viestit-välilehdellä.
Valitse useita sarakkeita
Valitsemalla useamman kuin yhden sarakkeen voit erottaa ne toisistaan pilkulla. Esimerkiksi
SELECT FirstName, LastNameFROM Person.Person
palauttaa tulokseksi sekä etu- että sukunimen. Jos mietit, voit sekoittaa tapauksia kyselyitä kirjoittaessasi. Eli
SELECT FirstName, LastNameFROM Person.Person
toimii yhtä hyvin kuin
select FirstName, LastNamefrom Person.Person
Vinkki! Yleinen käytäntö on, että kaikki avainsanat kirjoitetaan isolla alkukirjaimella. Joidenkin DBA:iden mielestä näin kirjoitettuja komentoja on helpompi lukea. Henkilökohtaisesti en tee niin, mutta tätä blogia varten YRITTÄISIN 🙂
Rename SQL Columns
Voit nimetä uudelleen select-lauseiden tuloksena syntyvät sarakkeet. Voit tehdä tämän käyttämällä AS-lauseketta seuraavasti:
SELECT LastName as SirNameFROM Person.Person
Tämä näyttää tuloksen muodossa ”SirName” eikä ”LastName”. Tämä on mukava ominaisuus turhamaisuuden kannalta, mutta se on kätevä myös silloin, kun haluamme palauttaa laskentatuloksen ja meidän on annettava sille nimi. Oletetaan esimerkiksi, että haluat palauttaa LastName-nimen isoilla kirjaimilla. Voisit kirjoittaa
SELECT UPPER(LastName) AS SirNameFROM Customers
UPPER tunnetaan funktiona. SQL Serverissä on monia funktioita, joita voit käyttää monenlaisten laskutoimitusten suorittamiseen. Tutustumme niihin kaikkiin myöhemmin, mutta nyt on hyvä tietää, että voit liittää useita funktioita toisiinsa luodaksesi monimutkaisen lausekkeen, jonka avulla voit tulostaa tiedot haluamallasi tavalla.
Kompleksiset sarakkeen lausekkeet
Työntekijä-taulussamme on erilliset kentät etunimelle ja sukunimelle. Oletetaan, että henkilöstöosasto tarvitsee koko nimen suuraakkosin. Miten tekisit tämän? Yksinkertaisesti! Voisit kirjoittaa
SELECT UPPER(FirstName) + ' ' + UPPER(LastName) AS FullNameFROM Person.Person
Tämä lauseke saattaa näyttää monimutkaiselta, mutta kun hajotamme sen, huomaat, että se koostuu vain joukosta yksinkertaisia elementtejä.
- Kuten juuri opit, UPPER:ia käytetään palauttamaan sarakkeen yläkirjaimet.
- Merkintä + käskee SQL:ää yhdistämään kaksi arvoa toisiinsa.
Kaikkea, mikä on yksinkertaisten lainausmerkkien (’) sisällä, näytetään kirjaimellisesti sellaisenaan. Meidän tapauksessamme ’ ’ tarkoittaa yhden välilyönnin tulostamista. Jos lukisit lausekkeemme englanniksi, se kuuluisi seuraavasti: ”Ota FirstName:n iso alkukirjain yhdistä se välilyöntiin ja lisää sitten LastName:n iso alkukirjain siihen.”
Tee matematiikkaa SQL:llä!
Voit myös saada SQL:n tekemään matematiikkatemppuja puolestasi. Se voi tehdä melko monimutkaisia aritmeettisia laskutoimituksia, jos annat sen tehdä niin. Tänään näytän sinulle, miten kerrot kaksi lukua, mutta voit aivan yhtä hyvin lisätä, vähentää tai jakaa. Myöhemmin teemme siitä monimutkaisempaa, jotta voit elää uudelleen Algebra II -päiviäsi. 🙂 Tässä on joitakin yleisiä matemaattisia operaattoreita, joita voit käyttää SQL:ssä:
- * Kerro
- / Jaa
- + Lisää
- – Vähennä
Käytämme OrderDetails-taulukkoa ja laskemme kokonaishinnan kertomalla yksikköhinnan määrällä.
SELECT UnitPrice, OrderQty, UnitPrice * OrderQty AS TotalFROM Purchasing.PurchaseOrderDetail
Bitti ” UnitPrice * OrderQty” kertoo, että yksikköhinta kerrotaan määrällä.
Kerroin ja debuggasin
Viime aikoina olemme käyttäneet select-lauseen avulla kaikkia taulukon tietueita riippumatta siitä, toistuvatko jotkin arvot vai eivät. Voit halutessasi käyttää DISTINCT-avainsanaa kaksoiskappaleiden poistamiseksi tuloksista. Jos haluaisit esimerkiksi palauttaa vain yksilöllisen luettelon työntekijöiden tittelistä, käyttäisit tätä SQL-lausetta:
SELECT DISTINCT JobTitleFROM HumanResources.Employee
DISTINCT-lause toimii myös useammalle kuin yhdelle sarakkeelle. Halutessasi voisit saada erillisen luettelon työnimikkeistä ja sukupuolesta kirjoittamalla
SELECT DISTINCT JobTitle, GenderFROM HumanResources.Employee
!Trivia: ALL-avainsana on DISTINCT:n vastine, ja se on oletuskäyttäytyminen. Siksi emme kirjoita sitä lausekkeisiimme.
Virheiden löytäminen ja korjaaminen
Ennemmin tai myöhemmin kirjoitat komentoriville väärin select-lausekkeen ja tietokone huutaa sinulle – ”Syntaksivirhe!” tai ”Virheellinen sarakkeen nimi” Mitä tehdä? Muista vain, että select-lause koostuu kahdesta pääosasta: SELECT- ja FROM-osasta. Yleensä tietokanta katsoo ensin, ovatko nämä avainsanat läsnä, ja jos niitä ei ole, se aiheuttaa syntaksivirheen.
Tämä on vain hieno ilmaus sille, että ”olet kirjoittanut avainsanan väärin tai se on väärässä järjestyksessä” (esim. sinulla on Distinct ennen Selectiä kuten DISTINCT SELECTissä). Kun avainsanat on tarkistettu, lauseke tarkastetaan sen varmistamiseksi, että olet määritellyt taulukon. Kun taulukko on tiedossa, voidaan tarkistaa sarakkeet. Järjestys on siis se, että ensin tarkistetaan avainsanat, sitten taulukot ja lopuksi oikeat sarakkeet. Aina kun näytetään virhe, lue se huolellisesti. Todennäköisesti olet kirjoittanut jotain väärin. Tietokone kertoo sinulle lainausmerkeissä, mitä kirjoitit väärin; sinun tehtäväsi on sitten etsiä kirjoitusvirhe ja korjata se.
SQL Select Harjoituksia
Harjoittelu on tärkeää! Käytä esimerkkitietokantaa vastataksesi näihin kysymyksiin.
- Miten löydät AdventureWorks2012-tietokannan kaikkien taulujen nimet?
- Millä kahdella tavalla voit saada kaikkien sarakkeiden nimet Person.Person-taulukon sarakkeet?
- Valitse kaikkien työntekijöiden JobTitle ja BirthDate.
- Minkälainen olisi kunkin PurchaseOrderDetail-erän UnitPrice, jos olisi alennusmyynti?
Vastaukset löytyvät täältä
Onnittelut! Opit juuri käyttämään select-komentoa tietokannan kyselyyn. Lisää opetusohjelmia on tulossa, ja niissä sukellamme joihinkin tänään sivuttuihin alueisiin, kuten matemaattisiin operaattoreihin ja funktioihin. Muista! Haluan muistuttaa teitä kaikkia siitä, että jos teillä on muita kysymyksiä, joihin haluatte vastauksen, laittakaa kommenttia tai twiittailkaa minulle. Olen täällä auttamassa sinua.