Ebben a leckesorozatban megtanulja, hogyan kérdezhet le a Microsoft SQL Serverről az SQL SELECT utasítás segítségével. A lecke elolvasása után képes lesz:
- Egy SQL Server SSMS (SQL Server Management Studio) adatbázisban lévő összes tábla azonosítására.
- Megérti, hogyan kell felsorolni egy táblázat oszlopait.
- Az oszlopok megtekintéséhez, szöveges és matematikai eredmények létrehozásához és megkülönböztetett értékek beállításához használja az SQL SELECT utasítást.
- Tanuljon meg néhány technikát a parancsok hibakereséséhez és a hibák kijavításához.
Fontos! Kövesse az adatbázisban található példákat, és végezze el azokat. Ha még nem tette meg, iratkozzon fel az Útmutató az SQL Serverrel való kezdéshez című könyvemre. Útmutatást kaphat az ingyenes szoftver és mintaadatbázis letöltéséhez.
Az adatbázis megismerése
Egy egyszerű select utasítás két részből áll. Az első rész leírja, hogy milyen oszlopokat szeretnénk megtekinteni, a második rész pedig azt, hogy melyik táblát nézzük meg. A select utasítás így néz ki:
SELECT LastName FROM Person.Person
Ebben a példában a LastName az oszlop, a Person pedig a táblázat. Az oszlopok a SELECT kulcsszó után következnek; míg a tábla előtt a FROM áll.
Táblák elnevezése
Elgondolkodhat azon, hogy a Person tábla miért Person néven szerepel. Person táblára hivatkozik a fenti utasításban. Ennek köze van ahhoz, ahogyan az objektumok szerveződnek a kiszolgálón. Az adatbázist úgy lehet elképzelni, mint egymásba ágyazott tárolók sorozatát. A tárolók a következők:
- Server/Instance – A számítógépen futó SQL Server példány.
- Adatbázisok – A példányon létrehozott egy vagy több adatbázis.
- Sémák – A táblák és más adatbázis-objektumok logikai csoportosításának módja.
A tábla teljes minősített neve: ….. Tehát ha igazán egyértelműek akarunk lenni, akkor valami olyasmit használhatunk, mint
SELECT LastName FROM ...
a lekérdezéshez. Szerencsére jellemzően egy adatbázis kontextusában írunk lekérdezéseket, így csak a Schema és a TableName megadása szükséges, így:
SELECT LastName FROM Person.Person
De mi a helyzet a zárójelekkel ? Ezeket akkor használjuk, ha a tábla nevében szóköz van. Tehát
SELECT Last NameFROM Person.Person Table
hiba lenne
SELECT FROM Person.
Ez rendben van. A tanácsom? Ha elnevezheted a saját tábláidat, ne használj szóközöket, a zárójelek csúnyák! Ha muszáj, tedd úgy, ahogy az Oracle emberei teszik, és használj aláhúzásokat. A Person_Table sokkal könnyebben olvasható, mint a , személy szerint én jobban szeretem a PersonTable-t.
Using the Object Explorer
A lekérdezések írásához tudnod kell, hogy milyen táblák és oszlopok állnak rendelkezésre az adatbázisokban. Az SSMS (SQL Server Management Studio) használatakor egyszerűen kibonthatja az adatbázis táblák mappáját, hogy felsorolja az adatbázisban található összes táblát. Ha megtalálta azt a táblát, amelyről többet szeretne tudni, egyszerűen kattintson a tábla nevére a kibontáshoz, majd az oszlopok mappára az összes oszlop felsorolásához.
Kérdések futtatása az SSMS-ben
Mielőtt túl messzire mennénk, hadd mutassam meg, hogyan futtathatunk lekérdezést az SSMS-ben. Ez valójában nagyon egyszerű. Miután elindította az SQL Server Management Studio-t, ki kell választania az adatbázisát. Ezután kattintson a felső eszköztáron található Új lekérdezés gombra. Ekkor megjelenik a jobb oldalon a lekérdezés ablak. Ebbe az ablakba bármit beírhatsz, hiszen ez tulajdonképpen egy szövegszerkesztő. Vágjon ki és illesszen be vagy gépeljen be egy SQL utasítást, majd kattintson a Futtatás gombra az utasítás futtatásához. Az eredmények az ablak alsó részében jelennek meg, az esetleges üzenetek, például a hibák, pedig az üzenetek lapon jelennek meg.
Más oszlopok kiválasztása
Egynél több oszlop kiválasztásához csak válassza szét őket vesszővel. Például,
SELECT FirstName, LastNameFROM Person.Person
eredményként a keresztnevet és a vezetéknevet is visszaadja. Ha esetleg kíváncsi lenne, a lekérdezések írásakor keverheti az eseteket. Vagyis
SELECT FirstName, LastNameFROM Person.Person
Éppúgy működik, mint
select FirstName, LastNamefrom Person.Person
Tipp! Általános konvenció, hogy az összes kulcsszót nagybetűvel írjuk. Egyes DBA-k úgy érzik, hogy az így írt parancsok könnyebben olvashatók. Személy szerint én nem teszem ezt, de ennek a blognak a kedvéért megkísérlem 🙂
SQL oszlopok átnevezése
A select utasításokból származó oszlopokat átnevezheted. Ehhez használja az AS utasítást a következőképpen:
SELECT LastName as SirNameFROM Person.Person
Ez az eredményt “SirNév” helyett “Utónév”-ként jeleníti meg. Ez egy szép funkció a hiúság szempontjából, de akkor is jól jön, amikor egy számítási eredményt akarunk visszaadni, és nevet kell adnunk neki. Tegyük fel például, hogy a Utónevet nagybetűvel szeretnénk visszaadni. Azt írhatnád, hogy
SELECT UPPER(LastName) AS SirNameFROM Customers
UPPER ismert függvény. Az SQL Server számos függvényt tartalmaz, amelyekkel sokféle számítást végezhet. Később mindegyikkel foglalkozni fogunk, de egyelőre tudd, hogy több függvényt is összefűzhetsz, hogy összetett kifejezést hozz létre az adatok kimenetéhez, ahogyan azt szeretnéd.
Bonyolult oszlopkifejezések
A munkavállalói táblánk külön mezőt tartalmaz a keresztnév és a vezetéknév számára. Tegyük fel, hogy a HR részlegnek szüksége van a teljes névre nagybetűvel. Hogyan oldaná meg ezt? Egyszerűen! Írhatná
SELECT UPPER(FirstName) + ' ' + UPPER(LastName) AS FullNameFROM Person.Person
Ez az utasítás bonyolultnak tűnhet, de ha lebontjuk, látni fogja, hogy csak egy csomó egyszerű elemből áll.
- Amint az imént megtanulta, az UPPER-t arra használja, hogy visszaadja egy oszlop nagybetűjét.
- A + azt mondja az SQL-nek, hogy két értéket egyesítsen.
Minden, ami idézőjelben (‘) van, szó szerint úgy jelenik meg, ahogy van. Esetünkben a ‘ ‘ egyetlen szóköz kiadását jelenti. Ha magyarul olvasná a kifejezésünket, akkor így hangzana: “Vegyük a FirstName nagybetűjét kombináljuk egy szóközzel, majd adjuk hozzá a LastName nagybetűjét.”
Matekizálj az SQL-lel!
Az SQL-t matematikai trükkökre is ráveheted. Elég bonyolult aritmetikára képes, ha megengeded neki. Ma azt mutatom meg, hogyan szorozhat meg két számot, de ugyanilyen könnyen összeadhat, kivonhat vagy oszthat is. Később majd bonyolultabbá tesszük a dolgot, hogy újra átélhesd az Algebra II-es korszakodat 🙂 Íme néhány gyakori matematikai operátor, amelyet az SQL-ben használhatsz:
- * Szorozzuk
- / Osszuk
- + Adjuk
- – Kivonjuk
A OrderDetails táblát fogjuk használni, és az egységár és a mennyiség szorzataként kiszámítjuk a teljes árat.
SELECT UnitPrice, OrderQty, UnitPrice * OrderQty AS TotalFROM Purchasing.PurchaseOrderDetail
A bit ” UnitPrice * OrderQty” azt mondja, hogy az egységárat szorozzuk meg a Mennyiséggel.
Be Distinct and Debug
Az eddigiekben a select utasítással egy táblázat összes rekordját lekérdeztük, függetlenül attól, hogy egyes értékek ismétlődnek-e vagy sem. Ha szeretnénk, a DISTINCT kulcsszóval eltávolíthatjuk a duplikátumokat az eredményekből. Ha például csak az alkalmazottak címének egyedi listáját szeretnénk visszaadni, akkor ezt az SQL-kijelentést használnánk:
SELECT DISTINCT JobTitleFROM HumanResources.Employee
A DISTINCT-kijelentés egynél több oszlopra is működik. Ha szeretné, a munkakörök címének és nemének különálló listáját kaphatja meg a
SELECT DISTINCT JobTitle, GenderFROM HumanResources.Employee
beírásával!Apróságok: Az ALL kulcsszó a DISTINCT megfelelője, és ez az alapértelmezett viselkedés. Ezért nem írjuk bele az utasításainkba.
Hibák felderítése és kijavítása
Előbb-utóbb elrontunk egy select utasítást a parancssorban, és a számítógép felkiált – “Szintaxis hiba!” vagy “Érvénytelen oszlopnév” Mit tegyünk? Ne feledje, hogy a select utasítás két fő részből áll: a SELECT és a FROM részből. Általában az adatbázis először megnézi, hogy ezek a kulcsszavak jelen vannak-e, és ha nem, akkor Szintaxis hibát vált ki.
Ez csak egy díszes kifejezés arra, hogy “rosszul írtál egy kulcsszót, vagy rossz sorrendben van” (pl. a Distinct a Select előtt van, mint a DISTINCT SELECT-ben). A kulcsszavak ellenőrzése után a program megvizsgálja az utasítást, hogy megbizonyosodjon arról, hogy megadta-e a táblázatot. Ha a táblázat ismert, akkor ellenőrizheti az oszlopokat. A sorrend tehát az, hogy először a kulcsszavakat, majd a táblázatokat, végül pedig a helyes oszlopokat ellenőrzi. Ha hiba jelenik meg, olvassa el figyelmesen. Valószínűleg valamit elírtál. A számítógép idézőjelben megmondja, hogy mit írtál el; a te feladatod, hogy ezután megkeresd a helyesírási hibát, és kijavítsd.
SQL Select Gyakorlatok
Nagyon fontos a gyakorlás! A mintaadatbázis segítségével válaszoljon ezekre a kérdésekre.
- Hogyan találja meg az AdventureWorks2012 adatbázis összes táblájának nevét?
- Mely kétféleképpen kaphatja meg az összes oszlop nevét a Person.Person tábla oszlopait?
- Válassza ki a JobTitle és a BirthDate oszlopokat az összes alkalmazottra vonatkozóan.
- Mi lenne az egyes PurchaseOrderDetail tételek UnitPrice értéke, ha féláras akció lenne?
A válaszok itt vannak
Gratulálunk! Most tanultad meg, hogyan használd a select parancsot egy adatbázis lekérdezésére. További oktatóprogramok következnek, és ezekben belemerülünk néhány olyan területbe, amelyeket ma átfutottunk, mint például a matematikai operátorok és függvények. Ne feledje! Szeretném emlékeztetni mindannyiótokat, hogy ha további kérdéseitekre szeretnétek választ kapni, akkor írjatok hozzászólást vagy tweeteljetek nekem. Itt vagyok, hogy segítsek nektek.