Strukturirani jezik upita (SQL) jedan je od temeljnih gradivnih elemenata moderne arhitekture baza podataka. SQL definira metode korištene za stvaranje i manipulaciju relacijskim bazama podataka na svim glavnim platformama. Na prvi pogled jezik može izgledati zastrašujuće i složeno, ali nije sve tako teško.
O SQL-u
Ispravan izgovor SQL-a sporno je pitanje unutar zajednice baza podataka. U svom SQL standardu, Američki nacionalni institut za norme objavio je da je službeni izgovor "red čekanja" el. "Međutim, mnogi stručnjaci za baze podataka prešli su na nastavak žargonskog izgovora." Kao i kod izgovora od GIF, nema pravog odgovora.
SQL dolazi u mnogim okusima. Oracle baze podataka koriste svoj vlastiti PL / SQL. Microsoft SQL Server koristi Transact-SQL. Sve se varijacije temelje na industrijskom standardu ANSI SQL.
Ovaj uvod koristi naredbe SQL-a sukladne s ANSI-jem koje rade na bilo kojem modernom sustavu relacijskih baza podataka.
DDL i DML
SQL naredbe mogu se podijeliti u dva glavna podjezika. Jezik definicije podataka sadrži naredbe koje se koriste za stvaranje i uništavanje baza podataka i objekata baze podataka. Nakon što se struktura baze podataka definira s DDL-om, administratori baze podataka i korisnici mogu koristiti jezik za manipulaciju podacima za umetanje, dohvaćanje i izmjenu podataka sadržanih u njemu.
SQL podržava treću vrstu sintakse koja se naziva Jezik za kontrolu podataka. DCL upravlja sigurnosnim pristupom objektima unutar baze podataka. Na primjer, a DCL skripta daje ili opoziva određenim korisničkim računima pravo čitanja ili pisanja u tablice unutar jednog ili više definiranih područja baze podataka. U većini upravljanih višekorisničkih okruženja administratori baze podataka obično izvršavaju DCL skripte.
Naredbe jezika definicije podataka
Jezik definicije podataka koristi se za stvaranje i uništavanje baza podataka i objekata baze podataka. Te naredbe primarno koriste administratori baze podataka tijekom faza postavljanja i uklanjanja projekta baze podataka. DDL se vrti oko četiri primarne naredbe -stvoriti, koristiti, mijenjati, i pad.
Stvoriti
The stvoriti naredba uspostavlja baze podataka, tablice ili upite na vašoj platformi. Na primjer, naredba:
IZRADI BAZU BAZA zaposlenika;
stvara praznu bazu podataka s imenom zaposlenici na vašem DBMS-u. Nakon stvaranja baze podataka, sljedeći je korak stvaranje tablica koje sadrže podatke. Druga varijanta stvoriti zapovjedništvo ostvaruje tu svrhu. Naredba:
STVORI TABLICU personal_info (first_name char (20) not null, last_name char (20) not null, worker_id int not null);
uspostavlja tablicu s naslovom osobne informacije u trenutnoj bazi podataka. U primjeru tablica sadrži tri atributa: ime, prezime, i zaposlenik_id zajedno s nekim dodatnim informacijama.
Koristiti
The koristiti naredba određuje aktivnu bazu podataka. Na primjer, ako trenutno radite u prodajnoj bazi podataka i želite izdati neke naredbe koje će utjecati na bazu podataka zaposlenika, predgovorite im sljedeću SQL naredbu:
USE zaposlenici;
Još jednom provjerite bazu podataka u kojoj radite prije izdavanja SQL naredbi koje manipuliraju podacima.
Alter
Nakon što stvorite tablicu u bazi podataka, izmijenite njezinu definiciju pomoću mijenjati naredba koja mijenja strukturu tablice bez brisanja i ponovnog stvaranja. Pogledajte sljedeću naredbu:
ALTER TABLE personal_info DODAJ novac od plaće null;
Ovaj primjer dodaje novi atribut tablici personal_info - plaća zaposlenika. The novac argument određuje da plaće zaposlenika pohranjuju u formatu dolara i centi. Napokon, null ključna riječ govori bazi podataka da je u redu da ovo polje ne sadrži vrijednost za bilo kojeg zaposlenika.
Pad
Posljednja naredba jezika definicije podataka, pad, uklanja cijele objekte baze podataka iz našeg DBMS-a. Na primjer, da biste trajno uklonili tablicu personal_info koju smo stvorili, upotrijebite sljedeću naredbu:
TAPELA ZA SPUSTANJE personal_info;
Slično tome, naredba u nastavku koristila bi se za uklanjanje cijele baze podataka zaposlenika:
DROP BAZA PODATAKA zaposlenici;
Oprezno koristite ovu naredbu. The pad naredba uklanja cijele podatkovne strukture iz vaše baze podataka. Ako želite ukloniti pojedinačne zapise, upotrijebite izbrisati naredba jezika za manipulaciju podacima.
Naredbe jezika za manipulaciju podacima
Jezik za manipulaciju podacima koristi se za dohvaćanje, umetanje i izmjenu podataka iz baze podataka. Ove DML naredbe nude tipični okvir za rutinsku interakciju s bazom podataka.
Umetnuti
The umetnuti naredba dodaje zapise u postojeću tablicu. Vraćajući se na primjer personal_info iz prethodnog odjeljka, zamislite da naš odjel za ljudske resurse mora dodati novog zaposlenika u svoju bazu podataka. Upotrijebite naredbu sličnu ovoj:
INSERT INTO personal_info
vrijednosti ('bart', 'simpson', 12345, 45000 USD);
Imajte na umu da su za zapis određene četiri vrijednosti. Oni odgovaraju atributima tablice onim redoslijedom kako su definirani: ime, prezime, zaposlenik_id i plaća.
Odaberi
The Odaberi naredba je najčešće korištena naredba u SQL-u. Dohvaća određene podatke iz operativne baze podataka. Pogledajte nekoliko primjera, opet koristeći tablicu personal_info iz baze podataka zaposlenika.
Naredba prikazana u nastavku dohvaća sve informacije sadržane u tablici personal_info. Zvjezdica je zamjenski znak u SQL-u.
ODABERI *
FROM personal_info;
Alternativno, ograničavanjem atributa koji se preuzimaju iz baze podataka navedite što bude odabran. Na primjer, odjel za ljudske resurse može zahtijevati popis prezimena svih zaposlenika u tvrtki. Sljedeća SQL naredba dohvatit će samo te informacije:
ODABERITE prezime
FROM personal_info;
The gdje klauzula ograničava zapise koji se dohvaćaju na one koji zadovoljavaju određene kriterije. Izvršnog direktora moglo bi zanimati pregled kadrovskih evidencija svih visoko plaćenih zaposlenika. Sljedeća naredba dohvaća sve podatke sadržane u personal_info za zapise koji imaju vrijednost plaće veću od 50 000 USD:
ODABERI *
OD osobnih_informacija
GDJE plaća> 50000 USD;
ažuriranje
The ažuriranje naredba mijenja podatke sadržane u tablici, skupno ili pojedinačno. Pretpostavimo da tvrtka svim zaposlenicima godišnje povećava plaću za 3 posto troškova života. Sljedeća SQL naredba primjenjuje ovaj udarac na sve zaposlenike pohranjene u bazi podataka:
AŽURIRATI personal_info
SET plaća = plaća * 1,03;
Kad novi zaposlenik Bart Simpson pokaže uspješnost iznad i izvan dužnosti, uprava želi prepoznati njegova zvjezdana postignuća povišicom od 5000 dolara. Klauzula WHERE izdvaja Barta za ovu povišicu:
AŽURIRATI personal_info
SET plaća = plaća + 5000
WHERE zaposlenik_id = 12345;
Izbrisati
Na kraju, pogledajmo izbrisati naredba. Otkrićete da je sintaksa ove naredbe slična onoj u ostalim DML naredbama. Naredba DELETE s a gdje klauzula, ukloni zapis iz tablice:
IZBRIŠI IZ personal_info
WHERE zaposlenik_id = 12345;
DML podržava i agregatna polja. U Odaberi izjava, poput matematičkih operatora iznos i računati sažeti podatke unutar upita. Na primjer, upit:
odaberite count (*) iz personal_info;
broji broj zapisa u tablici.
Baza podataka pridružuje se
A pridružiti izjava kombinira podatke u nekoliko tablica za učinkovitu obradu velikih količina podataka. Te su izjave tamo gdje je stvarna snaga baze podataka.
Istražiti upotrebu osnovnog pridružiti operaciju kombiniranja podataka iz dvije tablice, nastavite s primjerom koristeći tablicu personal_info i dodajte dodatnu tablicu u miks. Pretpostavimo da imate tablicu koja se zove disciplinski postupak koji je stvoren sa sljedećom izjavom:
IZRADI TABELU disciplinarna_akcija (action_id int nije null, worker_id int not null, komentari char (500));
Ova tablica sadrži rezultate disciplinskih postupaka za zaposlenike tvrtke. Ne sadrži nikakve podatke o zaposleniku osim broja zaposlenika.
Pretpostavimo da ste dobili zadatak izraditi izvješće u kojem se navode disciplinske mjere poduzete protiv svih zaposlenika s plaćom većom od 40.000 USD. U ovom je slučaju upotreba JOIN operacije jednostavna. Dohvatite ove podatke pomoću sljedeće naredbe:
ODABERITE personal_info.first_name, personal_info.last_name, disciplinary_action.comments
OD personal_info UNUTAR PRIDRUŽITE se disciplinarnoj akciji ON personal_info.employee_id = disciplinary_action.employee_id
WHERE personal_info.salary> 40000;
Vrste pridruživanja
Spojevi dolaze u nekoliko okusa. U SQL izrazu prva tablica (koja se obično naziva Tablica A ili Lijevi stol) pridružuje se drugoj tablici (obično se naziva Tablica B ili Desni stol) na poziciono osviješten način. Stoga, ako promijenite redoslijed tablica u naredbi za pridruživanje, rezultati operacije će se razlikovati. Glavne vrste spajanja uključuju:
- Unutarnje pridruživanje: Podudara se samo sa zapisima na kojima je na uvjet odgovara istim zapisima u obje tablice.
- Vanjsko pridruživanje: Podudara se samo sa zapisima iz obje tablice koji isključiti rezultati identificirani u na stanje.
- Pravo pridruživanje: Odgovara svim zapisima iz tablice B plus zapisima iz tablice A koji se podudaraju s na stanje.
- Lijevo Pridružite se: Odgovara svim zapisima iz tablice A plus zapisima iz tablice B koji se podudaraju s na stanje.
- Cross Join: Odgovara svim zapisima kao da su tablice identične. Ovaj postupak generira nešto što se zove kartezijanski proizvod. Često su unakrsna spajanja nepoželjna, jer se podudaraju sa svakim redom tablice A, pojedinačno, sa svakim redom tablice B. Dakle, ako je tablica A ponudila pet zapisa, a tablica B 9 zapisa, upit za unakrsno spajanje nudi 45 rezultirajućih redaka.