Struktureeritud päringukeel (SQL) on tänapäevase andmebaasiarhitektuuri üks põhilisi ehituskive. SQL määratleb meetodid, mida kasutatakse relatsiooniliste andmebaaside loomiseks ja manipuleerimiseks kõigil peamistel platvormidel. Esmapilgul võib see keel tunduda hirmutav ja keeruline, kuid see pole kõik nii keeruline.
SQL-i kohta
SQL-i õige hääldus on vaidlusküsimus andmebaasikogukonnas. American National Standards Institute teatas oma SQL-standardis, et ametlik hääldus on "es queue" el. "Kuid paljud andmebaaside spetsialistid on võtnud sõna slängi häälduse" järg ". Palju nagu häälduse puhul kohta GIF, pole õiget vastust.
SQL on paljude maitsega. Oracle'i andmebaasid kasutavad oma patenteeritud PL / SQL-i. Microsoft SQL Server kasutab Transact-SQL-i. Kõik variatsioonid põhinevad tööstusharu standardil ANSI SQL.
Selles sissejuhatuses kasutatakse ANSI-ga ühilduvaid SQL-käske, mis töötavad mis tahes kaasaegses relatsioonide andmebaasisüsteemis.
DDL ja DML
SQL-käske saab jagada kaheks peamiseks alakeeleks. Andmemääratluse keel sisaldab käske, mida kasutatakse andmebaaside ja andmebaasi objektide loomiseks ja hävitamiseks. Pärast seda, kui andmebaasistruktuur on DDL-iga määratletud, saavad andmebaasi administraatorid ja kasutajad selles sisalduvate andmete sisestamiseks, hankimiseks ja muutmiseks kasutada andmekäitluskeelt.
SQL toetab kolmandat tüüpi süntaksit nimega Andmete juhtimise keel. DCL reguleerib turbele juurdepääsu andmebaasi objektidele. Näiteks a DCL-skript annab või tühistab konkreetsete kasutajakontode õiguse lugeda või kirjutada tabelitesse ühes või mitmes määratletud andmebaasi piirkonnas. Enamikus hallatavates mitme kasutaja keskkondades täidavad andmebaasi administraatorid tavaliselt DCL-skripte.
Andmete määratlemise keele käsud
Andmemääratluse keelt kasutatakse andmebaaside ja andmebaasi objektide loomiseks ja hävitamiseks. Neid käske kasutavad andmebaasi administraatorid peamiselt andmebaasiprojekti seadistamise ja eemaldamise etapis. DDL pöörleb nelja peamise käsu ümber -luua, kasutamine, muutaja tilk.
Loo
The luua käsk loob teie platvormile andmebaasid, tabelid või päringud. Näiteks käsk:
LOOME ANDMEBAASI töötajad;
loob tühja andmebaasi nimega töötajad oma DBMS-is. Pärast andmebaasi loomist on järgmine samm luua andmeid sisaldavaid tabeleid. Teine variant luua käsk selle eesmärgi täidab. Käsk:
CREATE TABLE personal_info (eesnimi char (20) pole null, perekonnanimi char (20) pole null, töötaja_id int pole null);
loob tabeli pealkirjaga personaalne informatsioon praeguses andmebaasis. Näites sisaldab tabel kolme atribuuti: eesnimi, perekonnanimija töötaja ID koos mõne lisateabega.
Kasutage
The kasutamine käsk määrab aktiivse andmebaasi. Näiteks kui töötate praegu müügiandmebaasis ja soovite välja anda mõned käsud, mis mõjutavad töötajate andmebaasi, sisestage need järgmise SQL-i käsuga:
USE töötajad;
Enne andmetega manipuleerivate SQL-käskude väljaandmist kontrollige veel kord andmebaasi, milles töötate.
Alter
Kui olete tabeli andmebaasis loonud, muutke selle definitsiooni muuta käsk, mis muudab tabeli struktuuri seda kustutamata ja uuesti loomata. Vaadake järgmist käsku:
ALTER TABEL personal_info LISA palgaraha null;
See näide lisab tabelile personal_info uue atribuudi - töötaja palga. The raha argument täpsustab, et töötaja palk salvestatakse dollarite ja sentide vormingus. Lõpuks null märksõna ütleb andmebaasile, et see on OK, kui see väli ei sisalda konkreetse töötaja väärtust.
Tilk
Andmemääratluse keele viimane käsk, tilk, eemaldab meie andmebaasisüsteemist kogu andmebaasi objektid. Näiteks meie loodud tabeli personal_info jäädavaks eemaldamiseks kasutage järgmist käsku:
DROP TABEL personal_info;
Samamoodi kasutatakse kogu töötaja andmebaasi eemaldamiseks järgmist käsku:
DROP DATABASE töötajad;
Kasutage seda käsku ettevaatlikult. The tilk käsk eemaldab teie andmebaasist terved andmestruktuurid. Kui soovite üksikud kirjed eemaldada, kasutage kustuta andmekäitluskeele käsk.
Andmetega manipuleerimise keele käsud
Andmega manipuleerimise keelt kasutatakse andmebaasi teabe hankimiseks, sisestamiseks ja muutmiseks. Need DML-i käsud pakuvad tüüpilist raamistikku andmebaasi tavapäraseks suhtlemiseks.
Sisesta
The sisestada käsk lisab olemasolevasse tabelisse kirjed. Tulles tagasi eelmise jaotise personal_info näite juurde, kujutage ette, et meie personaliosakond peab lisama oma andmebaasi uue töötaja. Kasutage sellele käsule sarnast käsku:
SISESTA personal_info
väärtused ('bart', 'simpson', 12345, 45000 dollarit);
Pange tähele, et kirjele on määratud neli väärtust. Need vastavad tabeli atribuutidele määratletud järjekorras: eesnimi, perekonnanimi, töötaja ID ja palk.
Valige
The valige käsk on SQL-is kõige sagedamini kasutatav käsk. See otsib konkreetse teabe operatiivsest andmebaasist. Vaadake mõnda näidet, kasutades uuesti töötajate andmebaasi tabelit personal_info.
Allpool näidatud käsk saab kogu tabelis personal_info sisalduva teabe. Tärn on SQL-is asendusmärk.
VALI *
FROM personal_info;
Teise võimalusena piirake atribuute, mis andmebaasist leitakse, täpsustades mida saab valitud. Näiteks võib personaliosakond nõuda kõigi ettevõtte töötajate perekonnanimede loendit. Järgmine SQL-käsk tooks ainult selle teabe:
VALI perekonnanimi
FROM personal_info;
The kus klausel piirab allalaaditavaid kirjeid nendele, mis vastavad määratud kriteeriumidele. Tegevjuht võib olla huvitatud kõigi kõrgelt tasustatud töötajate personaliarvestuse ülevaatamisest. Järgmine käsk toob kõik kirjed personal_info sisalduvate andmete kohta kirjetele, mille palgaväärtus on suurem kui 50 000 dollarit:
VALI *
FROM personal_info
KUS palk> 50000 dollarit;
Uuenda
The värskendus käsk muudab tabelis sisalduvat teavet kas hulgi või eraldi. Oletame, et ettevõte suurendab kõigile töötajatele iga-aastase palgatõusu 3-protsendilist elukallidust. Järgmine SQL-käsk rakendab selle tõrke kõigile andmebaasi salvestatud töötajatele:
UPDATE personal_info
SET palk = palk * 1,03;
Kui uus töötaja Bart Simpson näitab ülesannetest kaugemale ja kaugemale, soovib juhtkond tunnustada tema suurepäraseid saavutusi 5000 dollari suuruse tõusuga. WHERE klausel eristab Bartit selle tõusu kohta:
UPDATE personal_info
SET palk = palk + 5000
KUS töötaja_id = 12345;
Kustuta
Lõpuks vaatame kustuta käsk. Leiate, et selle käsu süntaks on sarnane teiste DML-i käskudega. Käsk DELETE koos a kus klausel, eemaldage kirje tabelist:
KUSTUTA personal_infost
KUS töötaja_id = 12345;
DML toetab ka koondvälju. Sees valige avaldus, matemaatilised operaatorid meeldivad summa ja loendama andmeid päringus kokku võtta. Näiteks päring:
valige arv (*) personal_infost;
loeb tabelis olevate kirjete arv.
Andmebaas liitub
A liituma avaldus ühendab andmed mitmes tabelis, et töödelda tõhusalt suuri andmehulki. Need väited on koht, kus asub andmebaasi tegelik jõud.
Uurida põhi kasutamist liituma toiming kahe tabeli andmete ühendamiseks, jätkake näite abil tabeliga personal_info ja lisage segule täiendav tabel. Oletame, et teil on tabel nimega distsiplinaarvaldus mis loodi järgmise avaldusega:
CREATE TABLE distsiplinaarkaristus (action_id int pole null, töötaja_id int not null, kommentaaride char (500));
See tabel sisaldab ettevõtte töötajate distsiplinaarmeetmete tulemusi. See ei sisalda töötaja kohta muud teavet kui töötaja number.
Oletame, et teie ülesandeks on koostada aruanne, milles on loetletud kõigi 40 000 dollari suuruse palgaga töötajate suhtes võetud distsiplinaarkaristused. JOIN-operatsiooni kasutamine on sel juhul lihtne. Selle teabe hankimiseks kasutage järgmist käsku:
VALI personal_info.enimi_nimi, personal_info.perekonnanimi, distsiplinaarkorraldus.ee
FROM personal_info INNER JOIN distsiplinaarkirja ON personal_info.töötaja_id = distsiplinaarne.töötaja_id
KUS personal_info.alga> 40000;
Liitumiste tüübid
Liitumisi on mitme maitsega. SQL-i lauses esimene tabel (tavaliselt nimetatakse Tabel A. või Vasak laud) liitub teise tabeliga (tavaliselt nimetatakse Tabel B või Parem tabel) asenditeadlikul viisil. Seega, kui muudate liitumisavalduses olevate tabelite järjekorda, erinevad toimingu tulemused. Peamised liitumistüübid hõlmavad järgmist:
- Sisemine liitumine: Vastab ainult kirjetele, kus peal tingimus sobib mõlemas tabelis samade kirjetega.
- Väline liitumine: Sobib ainult mõlema tabeli kirjetega välistada programmis tuvastatud tulemused peal seisund.
- Parem liitumine: Sobitab kõik tabeli B kirjed pluss tabeli A kirjed, mis vastavad tabelile peal seisund.
- Vasakpoolne liitumine: Sobitab kõik tabeli A kirjed pluss tabeli B kirjed, mis vastavad tabelile peal seisund.
- Ristliitumine: Sobib kõigi kirjetega, nagu oleksid tabelid identsed. See protsess genereerib nn karteesia toode. Tihti pole ristühendused soovimatud, kuna need sobivad tabeli A igale reale eraldi ja iga tabeli B reale. Seega, kui tabel A pakkus viit kirjet ja tabel B 9 kirjet, pakub ristliitmise päring 45 tulemuseks olevat rida.