Osnovni ukazi sql. Mehanizem za dostop do podatkov. Structured Query Language SQL. Zgodovina in standardi SQL. Obdelava ukazov SQL s strežnikom Oracle. Zahteve za odstranitev
Vse konceptualne informacije o relacijskih zbirkah podatkov in tabelah so uporabne samo, če veste, kako s podatki komunicirati. Jezik SQL je sestavljen iz strukturiranih ukazov za dodajanje, spreminjanje in brisanje podatkov iz baze podatkov. Ti ukazi tvorijo osnovo za interakcijo s strežnikom PostgreSQL.
Ta razdelek govori o "anatomiji" ukazov SQL. Preučuje strukturne komponente ukazov, opisuje funkcije vsake komponente in njihove medsebojne odnose. Standardni odjemalec ukazne vrstice PostgreSQL, psql, natisne rezultate ukazov v navedenih primerih.
Večina primerov ukazov SQL je specifičnih za bazo podatkov booktown. Vsi izhodi psql imajo predpono obliko booktown=#.
Nekateri primeri uporabljajo testno bazo podatkov testdb. Poziv psql privzeto prikaže samo ime baze podatkov in simbole =# , kar pomeni, da je sistem pripravljen za izdajo novega ukaza (čeprav boste videli, da se simbol = dinamično spreminja, ko se spremlja stanje vnosa SQL). Knjiga ponuja ta poziv skupaj z vnosom in izhodom SQL, ki vam pomaga, da se lažje znajdete pri izhodu odjemalca psql.
Odjemalec psql je podrobno opisan v 4. poglavju. Tukaj je omenjen le zaradi pojasnitve sloga primerov ukazov SQL.
Opomba
Shema baze podatkov booktown (skupaj z vzorčnimi zapisi) se nahaja v datoteki booktown.sql na CD-ju. Če želite namestiti to zbirko podatkov, v ukazni poziv vnesite ukaz psql - U postgres template! - f /mnt/cdrom/booktown.sql, kjer je /mnt/cdrom pot do nameščenega CD-ja in postgres ime superuporabnika PostgreSQL.
Ukazi SQL se vedno začnejo z dejanjem (glagolom) – besedo ali skupino besed, ki opisuje operacijo, ki se izvaja. Poleg tega ukaz SQL običajno vsebuje enega ali več razdelkov, ki pojasnjujejo njegov pomen. V tabeli 3.2 navaja glavna dejanja SQL.
Tabela 3.2. Osnovna dejanja PostgreSQL.
USTVARITE BAZO PODATKOV | Ustvarjanje nove baze podatkov |
USTVARI INDEKS | Ustvarjanje novega indeksa v stolpcu tabele |
USTVARI ZAPOREDJE | Ustvarjanje novega zaporedja v obstoječi bazi podatkov |
USTVARI TABELO | Ustvarjanje nove tabele v obstoječi bazi podatkov |
USTVARI SPROŽILEC | Ustvari novo definicijo sprožilca |
USTVARI POGLED | Ustvarite nov pogled za obstoječo tabelo |
IZBERI | Izbiranje zapisov iz tabele |
VSTAVI | Vstavljanje enega ali več novih zapisov v tabelo |
NADGRADNJA | Spreminjanje podatkov v obstoječih evidencah |
IZBRIŠI | Odstranjevanje obstoječih zapisov iz tabele |
SPUSTI BAZO PODATKOV | Uničenje obstoječe baze podatkov |
SPUSTI INDEKS | Odstranjevanje indeksa stolpca iz obstoječe tabele |
DROP SEKVENCA | Uničenje obstoječega generatorja zaporedja |
PADNA MIZA | Uničenje obstoječe tabele |
SPUSTI SPROŽILEC | Uničenje obstoječe definicije sprožilca |
SPUSTI POGLED | Uničenje obstoječega pogleda |
USTVARI UPORABNIKA | Ustvarjanje novega uporabniškega računa PostgreSQL v sistemu |
SPREMENI UPORABNIKA | Spreminjanje obstoječega uporabniškega računa PostgreSQL |
IZBRIŠITE UPORABNIKA | Brisanje obstoječega uporabniškega računa PostgreSQL |
GRANT | Dodeljevanje pravic dostopa do objekta baze podatkov |
PREKLIC | Odstranjevanje pravic dostopa do objekta baze podatkov |
USTVARITE FUNKCIJO | Ustvarjanje nove funkcije SQL v bazi podatkov |
USTVARJANJE JEZIKA | Ustvarjanje nove definicije jezika v bazi podatkov |
CREATE OPERATOR | Ustvarjanje novega stavka SQL v bazi podatkov |
USTVARITE VRSTO | Ustvarjanje novega podatkovnega tipa SQL v bazi podatkov |
Structured Query Language je IBM razvil v zgodnjih sedemdesetih letih prejšnjega stoletja. Leta 1986 so organizacije ANSI prvič standardizirale SQL.
SQL je močan in hkrati preprost jezik za upravljanje baz podatkov. Podpirajo ga skoraj vse sodobne baze podatkov. SQL je razdeljen na dve podskupini ukazov: DDL (Data Definition Language) in DML (Data Manipulation Language). Ukazi DDL se uporabljajo za ustvarjanje novih baz podatkov, tabel in stolpcev, ukazi DML pa se uporabljajo za branje, pisanje, razvrščanje, filtriranje, brisanje podatkov.
Ta članek bo podrobneje obravnaval ukaze DML, saj se uporabljajo veliko pogosteje.
Ukazi DDLCREATE - uporablja se za ustvarjanje novih tabel, stolpcev in indeksov.
DROP - uporablja se za odstranjevanje stolpcev in indeksov.
ALTER - uporablja se za dodajanje novih stolpcev v tabele in spreminjanje določenih stolpcev.
Ukazi DMLSELECT je najpogosteje uporabljen ukaz in se uporablja za pridobivanje nabora podatkov iz tabele zbirke podatkov. Ukaz SELECT ima naslednjo sintakso:
IZBERI seznam_polj1 OD ime_tabele ]
Operatorji znotraj oglatih oklepajev so neobvezni, navpična vrstica pa pomeni, da mora biti prisoten eden od podanih stavkov, ne pa obeh.
Na primer, ustvarimo preprosto poizvedbo za pridobitev podatkov iz polj »ime« in »telefon« v tabeli »prijatelji«:
IZBERI ime, telefon OD prijatelji
Če želite dobiti vsa polja tabele, jih ni treba navesti, samo postavite zvezdico (*):
IZBERI * OD prijatelji
Če želite iz prikazanega seznama izključiti podvojene vnose, uporabite ključno besedo DISTINCT:
IZBERI DISTINCT ime OD prijatelji
Če potrebujete ločen zapis, potem uporabite stavek WHERE. Na primer, iz tabele »prijatelji« moramo dobiti telefonsko številko »Vasya Pupkin«:
IZBERI * OD prijatelji KJE ime = "Vasya Pupkin"
ali obratno, ugotoviti moramo, kdo je lastnik telefona 44-65-01:
IZBERI * OD prijatelji KJE telefon = "44-65-01"
Poleg tega lahko uporabite nadomestne znake in tako ustvarite iskalne vzorce. Za to se uporablja operator LIKE. Operator LIKE ima naslednje nadomestne operatorje:
* - se ujema z nizom, sestavljenim iz enega ali več znakov;
Ujema se s katerim koli znakom;
Ujema se z enim znakom iz določenega niza;
Na primer, če želite pridobiti zapise iz polja "ime", ki vsebuje besedo "Vasya", bi zahteva izgledala takole:
IZBERI * IZ prijatelji KJE ime Všeč mi je "*Vasja*"
Klavzula ORDER BY se uporablja za določitev vrstnega reda vrnjenih podatkov. Brez tega operaterja vrstnega reda vrnjenih podatkov ni mogoče predvideti. Ključni besedi ASC in DESC omogočata določitev smeri razvrščanja. ASC razvršča v naraščajočem vrstnem redu, DESC pa v padajočem vrstnem redu.
Na primer, zahteva za pridobitev seznama zapisov iz polja "ime" po abecednem vrstnem redu bi bila videti takole:
IZBERI * IZ prijatelji NAROČI PO ime
Upoštevajte, da ključna beseda ASC ni obvezna, ker je privzeta.
INSERT - ta ukaz se uporablja za dodajanje novega zapisa v tabelo. Zapisano je takole:
VSTAVITE V ime_tabele VREDNOTE ( seznam_vrednosti)
Upoštevajte, da se morajo vrste vrednosti na seznamu vrednosti ujemati z vrstami vrednosti polj tabele, na primer:
VSTAVITE V prijatelji VREDNOTE ( "Anka strojnica", "32-09-81" )
Ta primer doda nov vnos v tabelo prijateljev s podanimi vrednostmi.
UPDATE – ta ukaz se uporablja za posodabljanje podatkov v tabeli in se najpogosteje uporablja v povezavi s klavzulo WHERE. Ukaz UPDATE ima naslednjo sintakso:
NADGRADNJA ime_tabele NASTAVI ime_polja = pomen
Če izpustite stavek WHERE, se posodobijo podatki v vseh definiranih poljih v tabeli. Na primer, spremenimo telefonsko številko Vasje Pupkuna:
NADGRADNJA prijatelji NASTAVI telefon = "55-55-55" KJE ime = "Vasya Pupkin"
DELETE - kot ste verjetno že razumeli, se ta ukaz uporablja za brisanje zapisov iz tabele. Tako kot UPDATE se tudi ukaz DELETE običajno uporablja s klavzulo WHERE; če je ta klavzula izpuščena, bodo vsi podatki iz navedene tabele izbrisani. Sintaksa ukaza DELETE je naslednja:
IZBRIŠI IZ ime_tabele
Na primer, odstranimo tega nadležnega Vasya Pupkina z naše mize :) :
IZBRIŠI IZ prijatelji KJE ime = "Vasya Pupkin"
KonecV tem članku sem govoril o glavnih operaterjih SQL, ki so povsem dovolj za delo z bazami podatkov, o preostalih operaterjih bom podrobneje govoril drugič.
SQL ali Structured Query Language je jezik, ki se uporablja za upravljanje podatkov v sistemu relacijskih baz podatkov (RDBMS). Ta članek obravnava pogosto uporabljene ukaze SQL, ki bi jih moral poznati vsak programer. To gradivo je idealno za tiste, ki želijo obnoviti svoje znanje SQL pred razgovorom za službo. Če želite to narediti, si oglejte primere v članku in ne pozabite, da ste baze podatkov preučevali v parih.
Upoštevajte, da nekateri sistemi baz podatkov zahtevajo podpičje na koncu vsakega stavka. Podpičje je standardni kazalec na konec vsakega stavka v SQL. Primeri uporabljajo MySQL, zato je podpičje obvezno.
Nastavitev baze podatkov za primereUstvarite zbirko podatkov za prikaz delovanja skupin. Za delo boste morali prenesti dve datoteki: DLL.sql in InsertStatements.sql. Po tem odprite terminal in se prijavite v konzolo MySQL z naslednjim ukazom (članek predvideva, da je MySQL že nameščen v sistemu):
Mysql -u root -p
Nato vnesite geslo.
Zaženite naslednji ukaz. Poimenujmo zbirko podatkov »univerza«:
CREATE DATABASE univerza; USE univerza; VIR; SOURCE Ukazi za delo z zbirkami podatkov1. Ogled razpoložljivih baz podatkov PRIKAŽI PODATKOVNE BAZE; 2. Ustvarjanje nove podatkovne baze CREATE DATABASE; 3. Izbira baze podatkov za uporabo USE; 4. Uvozite ukaze SQL iz datoteke .sql SOURCE ; 5. Odstranitev baze podatkov DROP DATABASE ; Delo s tabelami6. Oglejte si tabele, ki so na voljo v bazi podatkov SHOW TABLES;
Morda boste morali ustvariti omejitve za določene stolpce v tabeli. Pri ustvarjanju tabele lahko nastavite naslednje omejitve:
- celica tabele ne more imeti vrednosti NULL;
- primarni ključ - PRIMARNI KLJUČ (ime_stolpca1, ime_stolpca2, ...) ;
- tuji ključ - TUJI KLJUČ (col_namex1, …, col_namexn) REFERENCE table_name(col_namex1, …, col_namexn) .
Določite lahko več kot en primarni ključ. V tem primeru boste dobili sestavljeni primarni ključ.
PrimerUstvari tabelo "inštruktor":
CREATE TABLE inštruktor (ID CHAR(5), ime VARCHAR(20) NOT NULL, ime_oddelka VARCHAR(20), plača NUMERIC(8,2), PRIMARNI KLJUČ (ID), TUJI KLJUČ (ime_oddelka) REFERENCE oddelek (ime_oddelka));
8. Podatki o tabeliOgledate si lahko različne informacije (vrsto vrednosti, ključ ali ne) o stolpcih tabele z naslednjim ukazom:
OPIŠI ;
Ko dodate podatke v vsak stolpec v tabeli, vam ni treba podati imen stolpcev.
VSTAVI V VREDNOSTI (, , , ...);
10. Posodabljanje podatkov tabele UPDATE SET = , = , ... WHERE ; 11. Brisanje vseh podatkov iz tabele DELETE FROM ; 12. Odstranjevanje tabele DROP TABLE ; Ukazi za ustvarjanje poizvedb13. IZBERISELECT se uporablja za pridobivanje podatkov iz določene tabele:
IZBERI , , ... IZ ;
Naslednji ukaz lahko prikaže vse podatke iz tabele:
IZBERI * IZ ;
Stolpci tabele lahko vsebujejo podvojene podatke. Uporabite SELECT DISTINCT, da pridobite samo podatke, ki niso podvojeni.
IZBERI DISTINCT , , … FROM ;
Za določitev pogojev v poizvedbi lahko uporabite ključno besedo WHERE v SELECT:
IZBERI , , ... OD KJE ;
V zahtevku je mogoče navesti naslednje pogoje:
- primerjava besedil;
- primerjava številskih vrednosti;
- logični operatorji IN (in), ALI (ali) in NE (negacija).
Poskusite naslednje ukaze. Bodite pozorni na pogoje, navedene v WHERE:
SELECT * FROM tečaj WHERE dept_name=’Comp. znanost'; IZBERITE * IZ predmeta WHERE krediti>3; SELECT * FROM tečaj WHERE dept_name="Comp. Sci." IN krediti>3;
Operator GROUP BY se pogosto uporablja z združevalnimi funkcijami, kot so COUNT, MAX, MIN, SUM in AVG, za združevanje izhodnih vrednosti.
IZBERI , , … IZ SKUPINE PO ;
PrimerPrikažemo število predmetov za vsako fakulteto:
SELECT COUNT(course_id), dept_name FROM course GROUP BY ime_oddelka;
Ključna beseda HAVING je bila dodana v SQL, ker WHERE ni mogoče uporabiti z združevalnimi funkcijami.
IZBERITE , , ... IZ SKUPINE TAKO, DA IMATE
PrimerPrikažemo seznam fakultet, ki imajo več kot en predmet:
SELECT COUNT(course_id), dept_name FROM course GROUP BY dept_name HAVING COUNT(course_id)>1;
ORDER BY se uporablja za razvrščanje rezultatov poizvedbe v padajočem ali naraščajočem vrstnem redu. ORDER BY bo razvrstil v naraščajočem vrstnem redu, razen če je določen ASC ali DESC.
IZBERI , , … OD ORDER BY , , … ASC|DESC;
PrimerPrikažimo seznam tečajev v naraščajočem in padajočem vrstnem redu kreditov:
IZBERI * IZ tečaja ORDER BY kreditov; IZBERI * IZ tečaja ORDER BY kreditov DESC;
BETWEEN se uporablja za izbiro vrednosti podatkov iz določenega obsega. Uporabite lahko številske in besedilne vrednosti ter datume.
IZBERI , , … OD KJE MED IN ;
PrimerPrikažimo seznam inštruktorjev, katerih plača je večja od 50.000, vendar manjša od 100.000:
IZBERI * OD inštruktorja WHERE plača MED 50000 IN 100000;
Operator LIKE se uporablja v WHERE za podajanje iskalnega vzorca za podobno vrednost.
Obstajata dva prosta operaterja, ki se uporabljata v LIKE:
- % (brez, en ali več znakov);
- _ (en znak).
Prikažimo seznam tečajev, katerih imena vsebujejo "do", in seznam tečajev, katerih imena se začnejo s "CS-":
SELECT * FROM tečaj WHERE naslov LIKE ‘%to%’; SELECT * FROM tečaj WHERE course_id LIKE "CS-___";
Z uporabo IN lahko določite več vrednosti za stavek WHERE:
SELECT , , … FROM WHERE IN (, , …);
PrimerPrikažimo seznam študentov iz Comp smeri. znanost, fizika in elektr. angleščina:
SELECT * FROM študent WHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');
JOIN se uporablja za povezovanje dveh ali več tabel z uporabo skupnih atributov v njih. Spodnja slika prikazuje različne načine združevanja v SQL. Upoštevajte razliko med levim zunanjim spojem in desnim zunanjim spojem:
SELECT , , … FROM JOIN ON = ;
Primer 1Prikazali bomo seznam vseh predmetov in ustrezne informacije o fakultetah:
IZBERITE * IZ tečaja JOIN Department ON course.dept_name=department.dept_name;
Prikazali bomo seznam vseh obveznih tečajev in podrobnosti o njih:
SELECT prereq.course_id, title, dept_name, Credits, prereq_id FROM prereq LEFT OUTER JOIN tečaj ON prereq.course_id=course.course_id;
Prikazali bomo seznam vseh tečajev, ne glede na to, ali so obvezni ali 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 navidezna tabela SQL, ustvarjena kot rezultat izvajanja izraza. Vsebuje vrstice in stolpce in je zelo podobna običajni tabeli SQL. Pogled vedno prikazuje najnovejše informacije iz baze podatkov.
Ustvarjanje CREATE VIEW AS SELECT , , ... FROM WHERE ; Odstranjevanje DROP VIEW ; PrimerUstvarimo pogled, sestavljen iz tečajev s 3 kreditnimi točkami:
Te funkcije se uporabljajo za pridobitev skupnega rezultata v zvezi z zadevnimi podatki. Naslednje so običajno uporabljene agregatne funkcije:
- COUNT (col_name) - vrne število vrstic;
- SUM (col_name) - vrne vsoto vrednosti v tem stolpcu;
- AVG (col_name) - vrne povprečno vrednost danega stolpca;
- MIN (col_name) - vrne najmanjšo vrednost danega stolpca;
- MAX (col_name) – Vrne največjo vrednost danega stolpca.
Ugnezdene podpoizvedbe so poizvedbe SQL, ki vključujejo klavzule SELECT, FROM in WHERE, ugnezdene znotraj druge poizvedbe.
PrimerPoiščimo tečaje, ki so se izvajali jeseni 2009 in spomladi 2010:
SELECT DISTINCT course_id FROM section WHERE semester = 'Fall' AND year= 2009 AND course_id IN (SELECT course_id FROM section WHERE semester = 'Spring' AND year= 2010);
Kirill Pozdeev, prevajalec
Kako Yandex uporablja vaše podatke in strojno učenje za prilagajanje storitev -.
SQL (ˈɛsˈkjuˈɛl; angleški strukturirani poizvedovalni jezik - “structured query language”) je deklarativni programski jezik, ki se uporablja za ustvarjanje, spreminjanje in upravljanje podatkov v relacijski bazi podatkov.
Skladnost s standardi SQL za različne baze podatkov:
SQL (Structured Query Language – strukturiran poizvedovalni jezik). SQL je predvsem informacijski logični jezik, namenjen opisovanju shranjenih podatkov, pridobivanju shranjenih podatkov in spreminjanju podatkov.
SQL ni programski jezik. Ker je SQL postal bolj zapleten, je postal bolj programski jezik aplikacij in uporabniki lahko zdaj uporabljajo vizualne graditelje poizvedb.
SQL je jezik, ki ne razlikuje med velikimi in malimi črkami. Nizi v SQL so v enojnih narekovajih.
Jezik SQL je zbirka stavkov. Stavki SQL so razdeljeni na:
Data Definition Language (DDL) - opisni jezik sheme v ANSI, sestavljen iz ukazov, ki ustvarjajo objekte (tabele, indekse, poglede itd.) v bazi podatkov (CREATE, DROP, ALTER itd.).
Operatorji za obdelavo podatkov (Data Manipulation Language, DML) so nabor ukazov, ki določajo, katere vrednosti so kadar koli predstavljene v tabelah (INSERT, DELETE, SELECT, UPDATE itd.).
izjave o definiciji dostopa do podatkov (Data Control Language, DCL) – sestavljena iz orodij, ki določajo, ali naj uporabniku dovoli izvajanje določenih dejanj ali ne (GRANT/REVOKE, LOCK/UNLOCK).
Operatorji Transaction Control Language (TCL).
Na žalost se ti izrazi ne uporabljajo univerzalno v vseh izvedbah. ANSI jih poudarja in so uporabni na konceptualni ravni, vendar jih večina programov SQL le malo obravnava ločeno, tako da v bistvu postanejo funkcionalne kategorije ukazov SQL.
IZBERITE razdelek JOINSimple JOIN (=presek JOIN =INNER JOIN) - pomeni prikaz samo skupnih zapisov obeh tabel. Kako se zapisi štejejo za skupno rabo, določajo polja v spojnem izrazu. Na primer naslednji vnos: FROM t1 JOIN t2 ON t1. id = t2. id
pomeni, da bodo prikazani zapisi z istim ID-jem, ki obstajajo v obeh tabelah.
LEFT JOIN (ali LEFT OUTER JOIN) pomeni prikazati vse zapise iz leve tabele (tistega, ki je prvi v spojnem izrazu) ne glede na to, ali so v desni tabeli ustrezni zapisi. Če v desni tabeli ni zapisov, je nastavljena prazna vrednost NULL.
RIGHT JOIN (ali RIGHT OUTER JOIN) deluje v nasprotju z LEFT JOIN - prikaže vse zapise iz desne (druge) tabele in le tiste, ki se ujemajo iz leve (prve) tabele.
Druge vrste združevanj JOIN: MINUS - odštevanje; FULL JOIN - popolna združitev; CROSS JOIN - “Vsi z vsemi” ali operacija kartezičnega produkta.
INSERT IGNORE Če podate ključno besedo IGNORE v ukazu INSERT z vrsticami, ki imajo več vrednosti, bodo vse vrstice, ki imajo podvojene PRIMARY ali UNIQUE ključe v tej tabeli, prezrte in ne bodo vstavljene. Če ne podate IGNORE, se ta operacija vstavljanja prekine, ko naleti na vrstico, ki ima podvojeno vrednost za obstoječi ključ
Ukaz REPLACE se od INSERT razlikuje le po tem, da če je v tabeli zapis z enako vrednostjo v indeksiranem polju (enolični indeks) kot novi zapis, potem se stari zapis izbriše, preden se doda nov.
NADGRADNJA< tablename>SET ( | ) .,. .< COLUMN name> = < VALUE expresslon>[KJE< predlcate>| KJE TOK< cursor name>(*samo za prilogo*) ] ; UPDATE peers SET zone= "voip" ; # posodobi vse vrstice v stolpcu cone tabele vrstnikov UPDATE stat SET whp= "13x13x13" WHERE id = 1 ; POSODOBITE države SET nm_ukr= (IZBERITE del_države. ukrajinski FROM del_države WHERE države. nm_en= del_države. angleščina ) ;Uporaba WordPressa, nastavitev: v tabeli wp_posts izbrišite vse pojavitve vrstice
UPDATE wp_posts SET post_content = REPLACE (post_content, "" , "" ) ;IZBRIŠI IZ