Osnovne sql naredbe. Mehanizam pristupa podacima. Structured Query Language SQL. Povijest i standardi SQL-a. Obrada SQL naredbi od strane Oracle poslužitelja. Zahtjevi za uklanjanje
Sve konceptualne informacije o relacijskim bazama podataka i tablicama korisne su samo ako znate kako komunicirati s podacima. SQL jezik sastoji se od strukturiranih naredbi za dodavanje, mijenjanje i brisanje podataka iz baze podataka. Ove naredbe čine osnovu za interakciju s PostgreSQL poslužiteljem.
Ovaj odjeljak govori o "anatomiji" SQL naredbi. Ispituje strukturne komponente naredbi, opisujući funkcije svake komponente i njihove međusobne odnose. Standardni PostgreSQL klijent naredbenog retka, psql, ispisuje rezultate naredbi u danim primjerima.
Većina primjera SQL naredbi specifični su za booktown bazu podataka. Sav psql izlaz ima prefiks u obliku booktown=#.
Neki primjeri koriste testdb bazu podataka. Prema zadanim postavkama, psql prompt prikazuje samo naziv baze podataka i =# simbole, što pokazuje da je sustav spreman za izdavanje nove naredbe (iako ćete vidjeti da se simbol = dinamički mijenja dok se prati stanje SQL unosa). Knjiga nudi ovaj prompt zajedno s SQL ulazom i izlazom kako bi vam pomogao da se lakše snađete s izlazom psql klijenta.
Psql klijent je detaljno opisan u poglavlju 4. Ovdje se spominje samo da pojasni stil primjera SQL naredbi.
Bilješka
Shema baze podataka booktown (zajedno s primjerima zapisa) nalazi se u datoteci booktown.sql na CD-u. Da biste instalirali ovu bazu podataka, u naredbeni redak unesite naredbu psql - U postgres template! - f /mnt/cdrom/booktown.sql, gdje je /mnt/cdrom staza do montiranog CD-a, a postgres ime superkorisnika PostgreSQL-a.
SQL naredbe uvijek počinju radnjom (glagolom) - riječju ili skupinom riječi koja opisuje operaciju koja se izvodi. Osim toga, SQL naredba obično sadrži jedan ili više odjeljaka koji pojašnjavaju njezino značenje. U tablici 3.2 navodi glavne akcije SQL-a.
Tablica 3.2. Osnovne PostgreSQL radnje.
STVARANJE BAZE PODATAKA | Izrada nove baze podataka |
KREIRAJ INDEKS | Stvaranje novog indeksa na stupcu tablice |
STVORI NIZ | Stvaranje novog niza u postojećoj bazi podataka |
STVARANJE TABLICE | Stvaranje nove tablice u postojećoj bazi podataka |
STVARANJE OKIDAČA | Stvorite novu definiciju okidača |
KREIRAJ PRIKAZ | Stvorite novi prikaz za postojeću tablicu |
IZABERI | Odabir zapisa iz tablice |
UMETNUTI | Umetanje jednog ili više novih zapisa u tablicu |
AŽURIRAJ | Promjena podataka u postojećim zapisima |
IZBRISATI | Uklanjanje postojećih zapisa iz tablice |
ISPUSTI BAZU PODATAKA | Uništavanje postojeće baze podataka |
PAD INDEKS | Uklanjanje indeksa stupca iz postojeće tablice |
DROP SEKVENCIJA | Uništavanje postojećeg generatora sekvenci |
DROP STOL | Uništavanje postojeće tablice |
ISPUŠTANJE OKIDAČA | Uništavanje postojeće definicije okidača |
POGLED NA KAP | Uništavanje postojećeg prikaza |
KREIRAJ KORISNIKA | Kreiranje novog PostgreSQL korisničkog računa u sustavu |
PROMIJENI KORISNIKA | Izmjena postojećeg PostgreSQL korisničkog računa |
ISPUSTI KORISNIKA | Brisanje postojećeg PostgreSQL korisničkog računa |
GRANT | Dodjela prava pristupa objektu baze podataka |
OPOZVATI | Uklanjanje prava pristupa objektu baze podataka |
STVORI FUNKCIJU | Stvaranje nove SQL funkcije u bazi podataka |
STVORI JEZIK | Stvaranje nove definicije jezika u bazi podataka |
CREATE OPERATOR | Stvaranje nove SQL naredbe u bazi podataka |
STVARANJE VRSTE | Stvaranje novog SQL tipa podataka u bazi podataka |
Structured Query Language razvio je IBM ranih 1970-ih. Godine 1986. ANSI organizacije su prvi standardizirale SQL.
SQL je moćan, au isto vrijeme jednostavan jezik za upravljanje bazom podataka. Podržavaju ga gotovo sve moderne baze podataka. SQL je podijeljen u dva podskupa naredbi: DDL (Data Definition Language) i DML (Data Manipulation Language). DDL naredbe se koriste za stvaranje novih baza podataka, tablica i stupaca, a DML naredbe se koriste za čitanje, pisanje, sortiranje, filtriranje, brisanje podataka.
Ovaj članak će pobliže pogledati DML naredbe, budući da se one mnogo češće koriste.
DDL naredbeCREATE - koristi se za stvaranje novih tablica, stupaca i indeksa.
DROP - koristi se za uklanjanje stupaca i indeksa.
ALTER - koristi se za dodavanje novih stupaca u tablice i promjenu određenih stupaca.
DML naredbeSELECT je najčešće korištena naredba i koristi se za dohvaćanje skupa podataka iz tablice baze podataka. Naredba SELECT ima sljedeću sintaksu:
IZABERI lista_polja1 IZ naziv_tablice ]
Operatori unutar uglatih zagrada nisu obavezni, a okomita traka znači da jedna od navedenih fraza mora biti prisutna, ali ne obje.
Na primjer, stvorimo jednostavan upit za dobivanje podataka iz polja "ime" i "telefon" u tablici "prijatelji":
IZABERI ime, telefon IZ prijatelji
Ako trebate dobiti sva polja tablice, nije ih potrebno navoditi, samo stavite zvjezdicu (*):
IZABERI * IZ prijatelji
Da biste isključili duple unose s prikazanog popisa, koristite ključnu riječ DISTINCT:
ODABIR DISTINCT Ime IZ prijatelji
Ako trebate dobiti zaseban zapis, tada se koristi klauzula WHERE. Na primjer, moramo dobiti telefonski broj "Vasya Pupkin" iz tablice "prijatelji":
IZABERI * IZ prijatelji GDJE Ime = "Vasja Pupkin"
ili obrnuto, moramo saznati tko je vlasnik telefona 44-65-01:
IZABERI * IZ prijatelji GDJE telefon = "44-65-01"
Osim toga, možete koristiti zamjenske znakove, stvarajući tako uzorke pretraživanja. Za to se koristi LIKE operator. Operator LIKE ima sljedeće operatore zamjene:
* - odgovara nizu koji se sastoji od jednog ili više znakova;
Odgovara bilo kojem znaku;
Odgovara jednom znaku iz određenog skupa;
Na primjer, za dohvaćanje zapisa iz polja "ime" koje sadrži riječ "Vasya", zahtjev bi izgledao ovako:
ODABIR * IZ prijatelji GDJE Ime KAO "*Vasja*"
Klauzula ORDER BY koristi se za određivanje redoslijeda vraćanja podataka. Bez ovog operatora ne može se predvidjeti redoslijed vraćenih podataka. Ključne riječi ASC i DESC omogućuju određivanje smjera sortiranja. ASC sortira uzlaznim redoslijedom, a DESC redoslijed silaznim.
Na primjer, zahtjev za dobivanje popisa zapisa iz polja "ime" abecednim redom izgledao bi ovako:
ODABIR * IZ prijatelji NARUČI PO Ime
Imajte na umu da ključna riječ ASC nije potrebna jer je zadana.
INSERT - ova naredba služi za dodavanje novog zapisa u tablicu. Napisano je na sljedeći način:
UMETNUTI U naziv_tablice VRIJEDNOSTI ( popis_vrijednosti)
Imajte na umu da vrste vrijednosti na popisu vrijednosti moraju odgovarati vrstama vrijednosti polja tablice, na primjer:
UMETNUTI U prijatelji VRIJEDNOSTI ( "Anka mitraljezac", "32-09-81" )
Ovaj primjer dodaje novi unos u tablicu prijatelja s navedenim vrijednostima.
UPDATE - Ova naredba se koristi za ažuriranje podataka u tablici i najčešće se koristi u kombinaciji s WHERE klauzulom. Naredba UPDATE ima sljedeću sintaksu:
AŽURIRAJ naziv_tablice SET naziv polja = značenje
Ako izostavite klauzulu WHERE, ažurirat će se podaci u svim definiranim poljima u tablici. Na primjer, promijenimo telefonski broj Vasye Pupkuna:
AŽURIRAJ prijatelji SET telefon = "55-55-55" GDJE Ime = "Vasja Pupkin"
DELETE - kao što ste vjerojatno već shvatili, ova naredba služi za brisanje zapisa iz tablice. Kao i UPDATE, naredba DELETE se obično koristi s klauzulom WHERE; ako je ova klauzula izostavljena, svi podaci iz navedene tablice bit će izbrisani. Sintaksa naredbe DELETE je sljedeća:
IZBRIŠI IZ naziv_tablice
Na primjer, maknimo ovog dosadnog Vasju Pupkina sa stola :) :
IZBRIŠI IZ prijatelji GDJE Ime = "Vasja Pupkin"
KrajU ovom sam članku govorio o glavnim SQL operatorima, oni su sasvim dovoljni za rad s bazama podataka, o ostalim operatorima govorit ću detaljnije drugi put.
SQL ili Structured Query Language jezik je koji se koristi za upravljanje podacima u sustavu relacijske baze podataka (RDBMS). Ovaj će članak pokriti najčešće korištene SQL naredbe s kojima bi svaki programer trebao biti upoznat. Ovaj je materijal idealan za one koji žele obnoviti svoje znanje SQL-a prije razgovora za posao. Da biste to učinili, pogledajte primjere dane u članku i zapamtite da ste učili baze podataka u paru.
Imajte na umu da neki sustavi baza podataka zahtijevaju točku i zarez na kraju svake izjave. Točka i zarez je standardni pokazivač na kraj svake izjave u SQL-u. Primjeri koriste MySQL, pa je točka-zarez obavezan.
Postavljanje baze podataka za primjereNapravite bazu podataka da biste pokazali kako timovi rade. Za rad ćete morati preuzeti dvije datoteke: DLL.sql i InsertStatements.sql. Nakon toga otvorite terminal i prijavite se na MySQL konzolu pomoću sljedeće naredbe (članak pretpostavlja da je MySQL već instaliran na sustavu):
Mysql -u root -p
Zatim unesite svoju lozinku.
Pokrenite sljedeću naredbu. Nazovimo bazu podataka "sveučilište":
STVARANJE BAZE PODATAKA sveučilište; USE sveučilište; IZVOR; SOURCE Naredbe za rad s bazama1. Pregled dostupnih baza podataka PRIKAŽI BAZE PODATAKA; 2. Izrada nove baze podataka CREATE DATABASE; 3. Odabir baze podataka za korištenje USE; 4. Uvezite SQL naredbe iz .sql datoteke SOURCE ; 5. Uklanjanje baze podataka DROP DATABASE ; Rad s tablicama6. Pregledajte tablice dostupne u bazi podataka SHOW TABLES;
Možda ćete morati stvoriti ograničenja za određene stupce u tablici. Prilikom izrade tablice možete postaviti sljedeća ograničenja:
- ćelija tablice ne može imati NULL vrijednost;
- primarni ključ - PRIMARY KEY (col_name1, col_name2, ...) ;
- strani ključ - FOREIGN KEY (col_namex1, …, col_namexn) REFERENCE table_name(col_namex1, …, col_namexn) .
Možete navesti više od jednog primarnog ključa. U ovom slučaju dobit ćete kompozitni primarni ključ.
PrimjerNapravite tablicu "instruktor":
CREATE TABLE instruktor (ID CHAR(5), ime VARCHAR(20) NOT NULL, naziv_odjela VARCHAR(20), plaća NUMERIC(8,2), PRIMARNI KLJUČ (ID), FOREIGN KEY (ime_odjela) REFERENCE odjel (ime_odjela));
8. Podaci u tabliciMožete pregledati razne informacije (vrstu vrijednosti, ključ ili ne) o stupcima tablice pomoću sljedeće naredbe:
OPISATI ;
Kada dodajete podatke u svaki stupac u tablici, ne morate navesti nazive stupaca.
INSERT INTO VALUES (, , , ...);
10. Ažuriranje tabličnih podataka UPDATE SET = , = , ... WHERE ; 11. Brisanje svih podataka iz tablice DELETE FROM ; 12. Uklanjanje tablice DROP TABLE ; Naredbe za kreiranje upita13. IZABERISELECT se koristi za dohvaćanje podataka iz određene tablice:
SELECT , , ... FROM ;
Sljedeća naredba može prikazati sve podatke iz tablice:
SELECT * FROM ;
Stupci tablice mogu sadržavati duple podatke. Upotrijebite SELECT DISTINCT za dohvaćanje samo podataka koji nisu duplicirani.
SELECT DISTINCT , , … FROM ;
Možete koristiti ključnu riječ WHERE u SELECT za navođenje uvjeta u upitu:
SELECT , , ... ODAKLE ;
U zahtjevu se mogu navesti sljedeći uvjeti:
- usporedba teksta;
- usporedba numeričkih vrijednosti;
- logički operatori AND (i), OR (ili) i NOT (negacija).
Isprobajte sljedeće naredbe. Obratite pozornost na uvjete navedene u WHERE:
SELECT * FROM kolegij WHERE dept_name=’Comp. Sci.'; SELECT * FROM tečaj WHERE bodovi>3; SELECT * FROM kolegij WHERE dept_name="Comp. Sci." I krediti>3;
Operator GROUP BY često se koristi s agregatnim funkcijama kao što su COUNT, MAX, MIN, SUM i AVG za grupiranje izlaznih vrijednosti.
SELECT , , … FROM GROUP BY ;
PrimjerPrikažimo broj predmeta za svaki fakultet:
SELECT COUNT(course_id), dept_name FROM course GROUP BY dept_name;
Ključna riječ HAVING dodana je u SQL jer se WHERE ne može koristiti s agregatnim funkcijama.
ODABERITE , , ... IZ GRUPE IMAJUĆI
PrimjerPrikažimo popis fakulteta koji imaju više od jednog kolegija:
SELECT COUNT(course_id), dept_name FROM course GROUP BY dept_name HAVING COUNT(course_id)>1;
ORDER BY se koristi za sortiranje rezultata upita u silaznom ili uzlaznom redoslijedu. ORDER BY će sortirati uzlaznim redoslijedom osim ako nije navedeno ASC ili DESC.
ODABERITE , , … IZ REDOSLIJEDA PO , , … ASC|DESC;
PrimjerPrikažimo popis tečajeva uzlaznim i silaznim redoslijedom bodova:
SELECT * FROM kolegij ORDER BY bodovi; SELECT * FROM kolegij ORDER BY bodovi DESC;
BETWEEN se koristi za odabir vrijednosti podataka iz određenog raspona. Mogu se koristiti numeričke i tekstualne vrijednosti, kao i datumi.
SELECT , , … OD GDJE IZMEĐU I ;
PrimjerPrikažimo popis instruktora čija je plaća veća od 50.000, ali manja od 100.000:
SELECT * FROM instruktor WHERE plaća IZMEĐU 50000 I 100000;
Operator LIKE koristi se u WHERE za određivanje uzorka pretraživanja za sličnu vrijednost.
Postoje dva besplatna operatora koji se koriste u LIKE:
- % (ništa, jedan ili više znakova);
- _ (jedan znak).
Prikažimo popis tečajeva čija imena sadrže "do" i popis tečajeva čija imena počinju sa "CS-":
SELECT * FROM tečaj WHERE naslov LIKE ‘%to%’; SELECT * FROM tečaj WHERE course_id LIKE "CS-___";
Koristeći IN možete navesti više vrijednosti za WHERE klauzulu:
SELECT , , … FROM WHERE IN (, , …);
PrimjerPrikažimo popis studenata komp. smjerova. znanosti, fizike i elektr. engleski:
SELECT * FROM student WHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');
JOIN se koristi za povezivanje dvije ili više tablica koristeći zajedničke atribute unutar njih. Slika ispod prikazuje različite načine pridruživanja u SQL-u. Obratite pozornost na razliku između lijevog vanjskog spoja i desnog vanjskog spoja:
SELECT , , … FROM JOIN ON = ;
Primjer 1Prikazat ćemo popis svih kolegija i relevantne informacije o fakultetima:
SELECT * FROM kolegij JOIN department ON course.dept_name=department.dept_name;
Prikazat ćemo popis svih potrebnih tečajeva i detalje o njima:
SELECT prereq.course_id, title, dept_name, credits, prereq_id FROM prereq LEFT OUTER JOIN tečaj ON prereq.course_id=course.course_id;
Prikazat ćemo popis svih tečajeva, bez obzira jesu li obavezni ili ne:
SELECT course.course_id, title, dept_name, credits, prereq_id FROM prereq RIGHT OUTER JOIN course ON prereq.course_id=course.course_id;
Pogled je virtualna SQL tablica stvorena kao rezultat izvršavanja izraza. Sadrži retke i stupce i vrlo je sličan običnoj SQL tablici. Pogled uvijek prikazuje najnovije podatke iz baze podataka.
Stvaranje CREATE VIEW AS SELECT , , ... FROM WHERE ; Uklanjanje DROP VIEW ; PrimjerKreirajmo prikaz koji se sastoji od tečajeva s 3 kredita:
Ove se funkcije koriste za dobivanje zbirnog rezultata koji se odnosi na dotične podatke. Sljedeće su najčešće korištene agregatne funkcije:
- COUNT (col_name) - vraća broj redaka;
- SUM (col_name) - vraća zbroj vrijednosti u ovom stupcu;
- AVG (col_name) - vraća prosječnu vrijednost zadanog stupca;
- MIN (col_name) - vraća najmanju vrijednost danog stupca;
- MAX (col_name) - Vraća najveću vrijednost danog stupca.
Ugniježđeni podupiti su SQL upiti koji uključuju klauzule SELECT, FROM i WHERE ugniježđene unutar drugog upita.
PrimjerPronađimo tečajeve koji su se održavali u jesen 2009. i proljeće 2010.:
SELECT DISTINCT course_id FROM odjeljak WHERE semestar = 'Jesen' AND godina= 2009 AND course_id IN (SELECT course_id FROM odjeljak WHERE semestar = 'Proljeće' AND year= 2010);
Kirill Pozdeev, prevoditelj
Kako Yandex koristi vaše podatke i strojno učenje za personalizaciju usluga -.
SQL (ˈɛsˈkjuˈɛl; engleski strukturirani upitni jezik - “structured query language”) je deklarativni programski jezik koji se koristi za stvaranje, modificiranje i upravljanje podacima u relacijskoj bazi podataka.
Usklađenost sa SQL standardima za različite baze podataka:
SQL (Structured Query Language – strukturirani upitni jezik). SQL je prvenstveno informacijski logički jezik dizajniran za opisivanje pohranjenih podataka, dohvaćanje pohranjenih podataka i modificiranje podataka.
SQL nije programski jezik. Kako je SQL postajao sve složeniji, postao je sve više aplikacijski programski jezik, a korisnici sada mogu koristiti alate za izradu vizualnih upita.
SQL je jezik koji ne razlikuje velika i mala slova. Stringovi u SQL-u su zatvoreni u jednostruke navodnike.
SQL jezik je skup iskaza. SQL izjave se dijele na:
Data Definition Language (DDL) - jezik opisa shema u ANSI-ju, sastoji se od naredbi koje kreiraju objekte (tablice, indekse, poglede itd.) u bazi podataka (CREATE, DROP, ALTER itd.).
Operatori za manipulaciju podacima (Data Manipulation Language, DML) su skup naredbi koje određuju koje su vrijednosti prikazane u tablicama u bilo kojem trenutku (INSERT, DELETE, SELECT, UPDATE itd.).
izjave o definiciji pristupa podacima (Data Control Language, DCL) – sastoji se od alata koji određuju hoće li korisniku dopustiti izvršavanje određenih radnji ili ne (GRANT/REVOKE, LOCK/UNLOCK).
Transaction Control Language (TCL) operatori
Nažalost, ovi pojmovi se ne koriste univerzalno u svim implementacijama. ANSI ih naglašava i korisne su na konceptualnoj razini, ali većina SQL programa ih malo tretira odvojeno, tako da one u biti postaju funkcionalne kategorije SQL naredbi.
ODABERITE odjeljak PRIDRUŽI SEJednostavan JOIN (=intersection JOIN =INNER JOIN) - znači prikazati samo zajedničke zapise obje tablice. Način na koji se zapisi smatraju dijeljenima određuju polja u izrazu spajanja. Na primjer, sljedeći unos: FROM t1 JOIN t2 ON t1. id = t2. iskaznica
znači da će se prikazati zapisi s istim ID-om koji postoje u obje tablice.
LEFT JOIN (ili LEFT OUTER JOIN) znači prikazati sve zapise iz lijeve tablice (onog koji je prvi u izrazu spajanja) bez obzira na to postoje li odgovarajući zapisi u desnoj tablici. Ako u desnoj tablici nema zapisa, postavlja se prazna vrijednost NULL.
RIGHT JOIN (ili RIGHT OUTER JOIN) djeluje suprotno od LEFT JOIN-a - prikazuje sve zapise iz desne (druge) tablice i samo one koji odgovaraju iz lijeve (prve) tablice.
Ostale vrste JOIN spajanja: MINUS - oduzimanje; FULL JOIN - potpuno spajanje; CROSS JOIN - “Svatko sa svakim” ili operacija kartezijanskog produkta.
INSERT IGNORE Ako navedete ključnu riječ IGNORE u naredbi INSERT s redovima koji imaju višestruke vrijednosti, tada će svi redovi koji imaju duplikate PRIMARY ili UNIQUE ključeva u toj tablici biti zanemareni i neće biti umetnuti. Ako ne navedete IGNORE, ova operacija umetanja prekida se kada naiđe na redak koji ima dvostruku vrijednost za postojeći ključ
Naredba REPLACE razlikuje se od INSERT samo po tome što ako postoji zapis u tablici s istom vrijednošću u indeksiranom polju (jedinstveni indeks) kao novi zapis, tada se stari zapis briše prije dodavanja novog.
AŽURIRAJ< tablename>SET ( | ) .,. .< COLUMN name> = < VALUE expresslon>[GDJE< predlcate>| GDJE STRUJA OD< cursor name>(*samo za prilog*) ] ; UPDATE peers SET zone= "voip" ; # ažuriraj sve retke u stupcu zone tablice ravnopravnih korisnika UPDATE stat SET whp= "13x13x13" WHERE id = 1 ; AŽURIRAJ zemlje SET nm_ukr= ( SELECT del_countries. ukrajinski FROM del_countries WHERE zemlje. nm_en= del_countries. engleski ) ;Upotreba WordPressa, postavka: u tablici wp_posts izbrišite sva pojavljivanja retka
AŽURIRAJ wp_posts SET post_content = REPLACE (post_content, "" , "" ) ;IZBRIŠI IZ