Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Recenzije
  • Funkcionalnost SQL jezika. Opis podataka Jezične komande

Funkcionalnost SQL jezika. Opis podataka Jezične komande

Structure Query Language (SQL) je stvoren kao rezultat razvoja relacionog modela podataka i sada je de facto standard za sisteme upravljanja relacionim bazama podataka. SQL jezik je danas podržan od strane velikog broja različitih tipova DBMS-a.

Ime SQL jezika obično se izgovara slovima "es-q-el". Ponekad se koristi mnemonički naziv "See-Quel".

SQL jezik pruža korisniku (uz minimalan napor s njegove strane) sljedeće mogućnosti:

Kreirajte baze podataka i tabele sa potpunim opisom njihove strukture

Izvršite osnovne operacije manipulacije podacima: ubacite, modificirajte, obrišite podatke

Izvršite i jednostavne i složene upite.

SQL je relativno potpun.

Struktura i sintaksa njegovih naredbi su prilično jednostavne, a sam jezik je univerzalan, odnosno sintaksa i struktura njegovih naredbi se ne mijenja pri prelasku s jednog DBMS-a na drugi.

SQL jezik ima dvije glavne komponente:

Jezik definicije podataka (DDL) za definiranje struktura baze podataka i kontrolu pristupa podacima

DML (Jezik za upravljanje podacima), dizajniran za dohvaćanje i ažuriranje podataka.

SQL jezik je neproceduralan, odnosno kada se koristi, potrebno je naznačiti koje informacije treba dobiti, a ne kako se one mogu dobiti. SQL naredbe su obične engleske riječi (SELECT, INSERT, itd.). Pogledajmo prvo SQL DML izraze:

SELECT - dohvaćanje podataka iz baze podataka

INSERT - ubacivanje podataka u tabelu

UPDATE - ažuriranje podataka u tabeli

DELETE - brisanje podataka iz tabele

SELECT izraz

Naredba SELECT izvodi operacije ekvivalentne sljedećim operacijama relacijske algebre: odabir, projekcija i spajanje.

Najjednostavniji SQL upit koji ga koristi izgleda ovako:

SELECT col_name FROM tbl

Nakon ključne riječi select slijedi lista kolona odvojenih zarezima koje će biti vraćene iz upita. Ključna riječ from određuje iz koje tabele (ili pogleda) da se dohvate podaci.

Rezultat upita za odabir uvijek je tabela, koja se naziva tabela rezultata. Štaviše, rezultati upita koji se izvršavaju naredbom select mogu se koristiti za kreiranje nove tabele. Ako rezultati dvaju upita prema različitim tabelama imaju isti format, mogu se kombinovati u jednu tabelu. Takođe, tabela dobijena kao rezultat upita može postati predmet daljih upita.

Da biste odabrali sve stupce i sve redove tabele, samo napravite SELECT * FROM tbl;

Razmotrite tabelu proizvoda koja sadrži informacije o cijenama za različite vrste proizvoda:

Rezultat upita

SELECT * FROM Product;

će biti cijela tabela proizvoda.

Možete odabrati određene stupce tabele pomoću upita

SELECT col1, col2, ..., coln FROM tbl;

Dakle, rezultat upita

ODABERITE vrstu, cijenu od proizvoda;

biće sto

Lista kolona u naredbi za odabir se također koristi kada je potrebno promijeniti redoslijed kolona u rezultirajućoj tabeli:

Da bi se odabrali samo oni redovi tabele koji zadovoljavaju određena ograničenja, koristi se posebna ključna riječ gdje, praćena booleovim uslovom. Ako zapis zadovoljava ovaj uslov, on se uključuje u rezultat. U suprotnom, takav unos se odbacuje.

Na primjer, odabir one robe iz tabele proizvoda čija cijena zadovoljava uslov Cijena<3200, можно осуществить, используя запрос

ODABERITE * IZ proizvoda gdje je cijena<3200;

Njegov rezultat:

Uslov se može složiti i kombinovati pomoću logičkih operatora NOT, AND, OR, XOR, na primjer: gdje je id_ Price> 500 AND Price<3500. Допускается также использование выражений в условии: where Price>(1 + 1) i konstante niza: gdje je ime = "autobalans".

Korištenje konstrukcije IZMEĐU var1 I var2 omogućava vam da provjerite da li vrijednosti bilo kojeg izraza spadaju u raspon od var1 do var2 (uključujući ove vrijednosti):

ODABERITE * IZ proizvoda gdje je cijena IZMEĐU 3000 I 3500;

Po analogiji sa operatorom NOT BETWEEN, postoji operator NOT IN.

Imena kolona navedena u klauzuli SELECT mogu se preimenovati. Za to se koristi ključna riječ AS, koja se, međutim, može izostaviti, jer se implicitno podrazumijeva. Na primjer, zahtjev

SELECT Tip AS model, Type_id AS broj FROM proizvoda gdje je Type_id = 3

će se vratiti (pseudonim treba pisati bez navodnika):

Operator LIKE služi za poređenje niza sa uzorkom:

SELECT * FROM tbl gdje col_name LIKE "abc"

Ovaj upit vraća samo one zapise koji sadrže vrijednost stringa abc u stupcu col_name.

Dva zamjenska znaka su dozvoljena u obrascu: "_" i "%". Prvi zamjenjuje jedan proizvoljni znak u šablonu, a drugi niz proizvoljnih znakova. Dakle, "abc%" odgovara bilo kojem nizu koji počinje sa abc, "abc_" - nizu od 4 karaktera koji počinje sa abc, "% z" - proizvoljnom nizu koji završava sa z, i, konačno, "% z%" - nizovima znakovi koji sadrže z.

Možete pronaći sve zapise tabele proizvoda u kojima vrijednost Type počinje slovom "a" kako slijedi:

SELECT * FROM Product gdje Upišite LIKE "a%";

auto vaga

Ako string za pretraživanje sadrži zamjenski znak, tada morate navesti kontrolni znak u klauzuli ESCAPE. Ovaj kontrolni znak treba koristiti u obrascu prije zamjenskog znaka, što ukazuje da se potonji treba tretirati kao običan znak. Na primjer, ako se u određenom polju nalaze sve vrijednosti koje sadrže znak "_", tada će obrazac "% _%" rezultirati vraćanjem svih zapisa iz tabele. U ovom slučaju, obrazac treba napisati na sljedeći način:

"% | _%" ESCAPE "|"

Da biste provjerili usklađenost vrijednosti sa nizom "20%", možete koristiti sljedeći operator:

LIKE "20 #%" BJEŽITE "#"

Operator IS NULL omogućava vam da provjerite odsustvo (prisustvo) NULL vrijednosti u poljima tablice. Upotreba normalnih operatora poređenja u ovim slučajevima može dovesti do pogrešnih rezultata, jer poređenje sa NULL vrijednošću rezultira UNKNOWN (nepoznato). Dakle, uvjet odabira bi trebao izgledati ovako:

gdje je col_name JE NULL, umjesto gdje col_name = NULL.

Zadani rezultat odabira vraća zapise istim redoslijedom u kojem su pohranjeni u bazi podataka. Ako trebate sortirati zapise prema jednoj od kolona, ​​morate koristiti klauzulu ORDER BY, nakon koje slijedi naziv ove kolone:

SELECT * FROM tbl ORDER BY col_name;

Kao rezultat ovog upita, zapisi će biti vraćeni uzlaznim redoslijedom vrijednosti atributa col_name.

Zapisi se mogu sortirati po nekoliko kolona. Da biste to učinili, njihova imena moraju biti navedena nakon ORDER BY, odvojena zarezima:

SELECT * FROM tbl ORDER BY col_name1, col_name2.

Zapisi će biti sortirani po polju col_name1; ako postoji nekoliko zapisa sa istom vrijednošću u stupcu col_name1, oni će biti sortirani po polju col_name2.

Ako želite da sortirate zapise obrnutim redoslijedom (na primjer, silazno po datumu), morate navesti ORDER BY col_name DESC.

Za direktno sortiranje postoji ključna reč ASC, koja je podrazumevana.

Ako rezultat selekcije sadrži stotine ili hiljade zapisa, njihov izlaz i obrada zahtijevaju značajno vrijeme.

Stoga se informacije često paginiraju i predstavljaju korisniku u komadima. Navigacija po stranici se koristi sa ključnom riječi limit nakon koje slijedi broj zapisa za prikaz. Sljedeći upit dohvaća prvih 10 zapisa, dok istovremeno izvodi obrnuto sortiranje na polju col_name1:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10

Za dohvat sljedećih 10 zapisa koristi se ključna riječ limit sa dvije vrijednosti: prva označava poziciju s koje se prikazuje rezultat, a druga označava broj zapisa za preuzimanje:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10,10

Da biste dohvatili sljedećih 10 zapisa, morate koristiti konstrukciju LIMIT 20, 10.

Svaka SQL naredba počinje ključnom riječi - glagolom koji opisuje radnju koju treba izvršiti naredbom, kao što je CREATE. Tim može imati jednu ili više rečenica. Rečenica opisuje podatke sa kojima tim radi ili sadrži pojašnjavajuće informacije o radnji koju je tim izvršio. Svaka klauzula počinje ključnom riječi, kao što je WHERE (gdje). Neke klauzule u naredbi su potrebne, druge nisu. Neke rečenice mogu sadržavati dodatne ključne riječi, izraze. Mnogi prijedlozi uključuju nazive tablica ili polja. Imena moraju biti dugačka između 1 i 18 znakova, početi slovom i ne moraju sadržavati razmake ili posebne znakove interpunkcije. Ključne riječi se ne mogu koristiti kao nazivi.

52. SQL (Structured Query Language) - Strukturirani jezik upita Je standardni jezik upita za rad sa relacionim bazama podataka.

SQL ne sadrži tradicionalne izraze koji kontroliraju tok programa, on sadrži samo skup standardnih izraza za pristup podacima pohranjenim u bazi podataka.

SQL jezik se može koristiti za pristup bazi podataka na dva načina: kada interaktivni rad i u aplikativni programi.

Uz pomoć SQL-a korisnik može brzo dobiti odgovore na bilo koje, uključujući i prilično složene upite, u interaktivnom načinu, dok bi za implementaciju ovih upita na drugom jeziku morao razviti odgovarajući program. U aplikacijskim programima napisanim na određenim programskim jezicima, SQL se koristi kao ugrađen jezik za pristup bazi podataka.

Karakterizirajući SQL jezik u cjelini, mogu se razlikovati sljedeće karakteristike:

· Struktura visokog nivoa, koja podsjeća na engleski;

· Nezavisnost od specifičnog DBMS-a;

· Dostupnost standarda za razvoj;

· Sposobnost izvršavanja interaktivnih upita za dohvat podataka i modificiranje njihove strukture;

· Softverski pristup bazama podataka;

· Podrška za klijent/server arhitekturu;

· Proširivost i podrška objektno orijentisanim tehnologijama;



· Mogućnost pristupa podacima na Internetu.

Glavne funkcije SQL jezika:

SQL - interaktivni jezik upita... Korisnici interaktivno unose SQL komande kako bi dohvatili podatke i prikazali ih na ekranu, te izvršili promjene u bazi podataka;

SQL - programski jezik baze podataka... SQL komande se ubacuju u aplikacije za pristup bazi podataka;

SQL - jezik administracije baze podataka... Administrator baze podataka može koristiti SQL za definiranje strukture baze podataka i kontrolu pristupa podacima;

SQL - jezik kreiranja klijent/server aplikacija... U aplikacijskim programima, SQL se koristi kao sredstvo organizacije komunikacije preko lokalne mreže sa serverom baze podataka koji pohranjuje dijeljene podatke itd.

55. Mogućnosti jezika SQL jezik, koji je u skladu sa najnovijim standardima SQL: 2003, SQL: 1999, je veoma bogat i složen jezik čije je sve mogućnosti teško odmah shvatiti, a još manje razumeti. Dakle, morate razbiti jezik na nivoe. U jednoj od klasifikacija koje pruža SQL standard, ovaj jezik je podijeljen na "osnovni" (ulazni), "srednji" (srednji) i "puni" (puni) nivoi. Osnovni nivo sadrži četrdesetak komandi koje se mogu grupirati u kategorije prema njihovoj funkcionalnosti.

KREIRAJTE DETALJI TABELE (NOMZ INT, NAME CHAR (15), YEAR INT, SEX CHAR (3))

DROP TABLE Detalji

ALTER TABLE Informacije (SEMPOL CHAR (10))

KREIRAJTE PRIKAZ Ocjene M1 KAO ODABIR * IZ Ocjene GDJE GRUPA = "M-1"

UMETNI U Informativne VRIJEDNOSTI (980101, "IVANOV I. I.", 1980, "MUŽ")

IZBRIŠI IZ detalja GDJE NOMZ = 980201

AŽURIRANJE Detalji SET PUNO IME = "I. I. KRAVTSOVA" GDJE NOMZ = 980201

SELECT * FROM Information GDJE PUNO IME = "SIDOROV S. S." ILI Puno ime = "PETROV P. P."

54. Tipovi podataka i izrazi Da biste pristupili relacijskoj tablici u SQL-u, trebate napisati (postaviti) naredbu. SELECTključna riječ govori DBMS-u koju akciju će ova komanda poduzeti. Komande upita počinju ključnom riječi. Pored SELECT, to mogu biti riječi STVORITI- stvoriti, INSERT-umetnuti, IZBRIŠI- obrisati, COMMIT- završiti i sl.

OD - ključnu riječ poput SELECT koja se pojavljuje u svakoj naredbi. Nakon njega slijedi razmak iza kojeg slijedi naziv tabela koje se koriste kao izvori informacija. Imena tabela i polja moraju sadržavati od 1 do 18 znakova, početi slovom i ne moraju sadržavati razmake ili specijalne znakove.

GDJE ključna reč iza koje sledi predikat je uslov nametnut zapisu u tabeli, koji mora da zadovolji da bi nestao u selekciji.

POREDAK PO - sortiranje prikazanih zapisa (Asc - rastućim redoslijedom, Desc - opadajućem. Ako tip sortiranja nije naveden, sortiranje se odvija uzlaznim redoslijedom).

CHAR (dužina) CHARACTER (dužina)Nizovi znakova konstantne dužine

INTEGER INTCijeli brojevi

SMALLINTMali cijeli broj

NUMERIC (preciznost, stepen) DECIMAL (preciznost, stepen DEC (preciznost, stepen)Broj fiksne tačke

FLOAT (preciznost)Broj s pomičnim zarezom

Dvostruka preciznostbrojevi sa float zap visokom preciznošću

Izrazi u SQL-u se koriste za postavljanje kriterija za odabir podataka ili izvođenje operacija nad vrijednostima koje se čitaju iz baze podataka. Izrazi su specifičan niz polja baze podataka, konstanti, funkcija, povezanih operatorima.

Konstante se koriste za označavanje specifičnih vrijednosti podataka. Konstante fiksne tačke, na primjer: 21 -375,18 62,3

Konstante s pomičnim zarezom, na primjer: 1.5E7 -3.14E9 2.5E-6 0.783E24

String konstante moraju biti stavljeni u jednostruke navodnike. Primjeri takvih konstanti: "Minsk" "New York" "Ivanov I. I."

Nedostaje vrijednost(NULL). SQL podržava rukovanje podacima koji nedostaju uz koncept nedostajuće vrijednosti.

Većina SQL orijentiranih DBMS podržava tzv agregatne (sumarne) funkcije... Uobičajene agregatne funkcije uključuju sljedeće:

· COUNT- broj vrijednosti u koloni tabele;

· SUMA- zbir vrijednosti u koloni;

· AVG- aritmetičku sredinu vrijednosti u koloni;

· MAX- maksimalna vrijednost u koloni;

· MIN Je minimalna vrijednost u koloni.

U izrazima možete koristiti sljedeće tipovi operatera:

· aritmetika: + (dodatak), - (oduzimanje), * (množenje), / (podjela);

· odnos: = (jednako),> (veće od),< (меньше), >= (veće ili jednako),<= (меньше или равно), <>(nije jednako);

· mozgalica: I(logično "I"), ILI(logično "ILI"), NE(logička negacija);

56. Komande za upravljanje transakcijama omogućavaju vam da osigurate integritet baze podataka.

SQL transakcija Postoji nekoliko uzastopnih SQL naredbi koje se moraju izvršiti kao jedna jedinica.

U SQL jeziku, obrada transakcija se implementira pomoću dvije naredbe - COMMIT i ROLLBACK... Oni upravljaju promjenama koje je izvršila grupa timova. Tim COMMIT izvještava o uspješnom završetku transakcije. Obavještava DBMS da je transakcija završena, da su sve njegove komande uspješno izvršene i da nije došlo do nedosljednosti u bazi podataka. Tim ROLLBACK prijavljuje neuspješan završetak transakcije. Obavještava DBMS da korisnik ne želi dovršiti transakciju, a DBMS mora odbaciti sve promjene napravljene u bazi podataka kao rezultat transakcije. U ovom slučaju, DBMS vraća bazu podataka u stanje u kojem je bila prije izvršenja transakcije.

Komande COMMIT i ROLLBACK se uglavnom koriste u programskom režimu, iako se mogu koristiti i u interaktivnom režimu.

57. Za pristup komandama kontrole odnosi se na naredbe za izvođenje administrativnih funkcija koje dodjeljuju ili opozivaju pravo (privilegiju) za korištenje tablica baze podataka na određeni način. Svaki korisnik baze podataka ima određena prava u odnosu na objekte baze podataka.

Prava Jesu li to radnje s objektom koje korisnik može izvršiti. Prava se mogu mijenjati tokom vremena: stara se mogu poništiti, nova dodati. Osigurana su sljedeća prava:

INSERT - pravo dodavanja podataka u tabelu;

UPDATE - pravo promjene podataka u tabeli;

DELETE - pravo brisanja podataka iz tabele;

· REFERENCE - pravo na definiranje primarnog ključa.

58 Ugrađivanje jezika u aplikativne programe ...Za ugrađeno odnosi se na komande dizajnirane za implementaciju pristupa bazi podataka iz aplikativnih programa napisanih na određenom programskom jeziku.

Danas ćemo se osvrnuti na kompjutersku temu, pa će ovaj članak biti od posebnog interesa, prvenstveno za programere. Mi ćemo, dragi čitatelju, govoriti o jeziku strukturiranih upita, koji je u engleskoj verziji šifriran kao - SQL (Structured Query Language). Dakle, pređimo na stvar. Razgovarajmo sada o tome šta je SQL i čemu služi.

Jezik strukturiranih upita je jezik opšte namene za kreiranje, modifikovanje i manipulaciju informacijama koje su deo relacionih baza podataka. SQL je prvobitno bio primarni način rada s podacima. Uz to, korisnik može izvršiti sljedeće radnje:

  • kreiranje nove tabele u bazi podataka (DB);
  • dodavanje novih zapisa u postojeće tabele;
  • uređivanje zapisa;
  • potpuno brisanje zapisa;
  • izbor zapisa iz različitih tabela, u skladu sa navedenim uslovima;
  • promjena tipa i strukture jedne ili više tabela.

Kako se razvijao, SQL je uvelike transformiran i obogaćen novim korisnim funkcijama, zbog čega je sve više nalikovao pravom programskom jeziku. Danas je SQL jedini mehanizam sposoban da poveže aplikativni softver i bazu podataka. To je ono što je SQL.

SQL ima nekoliko vrsta upita. Vrijedi napomenuti da svaki SQL upit podrazumijeva ili zahtjev za podacima iz tražene baze podataka, ili apel na bazu podataka uz obaveznu promjenu podataka u njoj. S tim u vezi, uobičajeno je razlikovati sljedeće vrste zahtjeva:

  • kreiranje ili modifikacija novih ili postojećih objekata u bazi podataka;
  • primanje podataka;
  • dodavanje novih podataka u tabelu;
  • brisanje podataka;
  • pristup sistemu za upravljanje bazom podataka (DBMS).

Malo o prednostima i nedostacima ovog sistema za rad sa podacima.

Prednosti SQL-a

  • Nezavisnost od postojećeg DBMS-a u datom sistemu. SQL tekstovi su univerzalni za mnoge DBMS. Međutim, ovo pravilo se primjenjuje na jednostavne zadatke povezane s obradom podataka u tabelama.
  • Prisustvo SQL standarda pomaže da se "stabilizuje" jezik.
  • Deklarativnost. Ova prednost leži u činjenici da prilikom rada sa podacima programer bira samo one informacije koje treba promijeniti ili modificirati. Kako će se to uraditi automatski se odlučuje na programskom nivou samog DBMS-a.

Nedostaci SQL-a

  • SQL nije usklađen s relacijskim modelom podataka. U tom smislu, SQL zamjenjuje Tutorial D, koji je zaista relacioni.
  • Složenost SQL-a određuje njegovu svrhu. Jezik je toliko složen da ga samo programer može koristiti. Iako je u početku bio zamišljen kao kontrolni alat s kojim će raditi običan korisnik.
  • Neka odstupanja u standardima. Mnoge DBMS kompanije dodaju svoje karakteristike SQL dijalektu, što značajno utiče na svestranost jezika.

Još jedna stvar: šta je SQL Server? Ovo je sistem za upravljanje bazom podataka koji je razvijen u zidovima poznate kompanije Microsoft. Ovaj sistem uspešno radi sa bazama podataka kako kućnih personalnih računara, tako i velikih baza podataka velikih preduzeća. U ovom segmentu tržišta, SQL Server je više nego konkurentan.

Pa, bukvalno ukratko, sjetimo se MySQL-a. Ova aplikacija se obično koristi kao server koji prima pozive od lokalnih ili udaljenih klijenata. MySQL se takođe može uključiti u samostalne programe. Treba napomenuti da je ova aplikacija jedan od najfleksibilnijih sistema za upravljanje podacima, jer uključuje mnogo različitih tipova tabela.

SQL JEZIK: MANIPULACIJA PODACIMA

U OVOM PREDAVANJU ...

· Svrha jezika za strukturalne upite (SQL) i njegova posebna uloga u radu sa bazama podataka.

· Istorija nastanka i razvoja SQL jezika.

· Pisanje SQL naredbi.

· Dohvaćanje informacija iz baza podataka pomoću SELECT izraza.

· Konstrukcija SQL naredbi, koju karakteriziraju sljedeće karakteristike:

· Korišćenje klauzule WHERE za odabir redova koji zadovoljavaju različite uslove;

· Sortiranje rezultata izvršenja upita upotrebom ORDER BY konstrukcije;

· Upotreba funkcija agregiranja SQL jezika;

· Grupisanje odabranih podataka pomoću GROUP BY klauzule;

· Primjena potupita;

· Upotreba tabela spojeva;

· Primjena operacija sa skupovima (UNION, INTERSECT, EXCEPT).

· Pravljenje promjena u bazi podataka korištenjem INSERT, UPDATE i DELETE izraza.

Jedan od jezika koji je nastao kao rezultat razvoja relacionog modela podataka je SQL, koji je danas veoma rasprostranjen i zapravo je postao standardni jezik za relacione baze podataka. SQL standard je objavio američki nacionalni institut za standarde (ANSI) 1986. godine, a 1987. godine Međunarodna organizacija za standardizaciju (ISO) usvojila je ovaj standard kao međunarodni standard. SQL trenutno podržava stotine različitih tipova sistema za upravljanje bazama podataka dizajniranih za širok spektar računarskih platformi, od personalnih računara do velikih računara.

Ovo poglavlje koristi ISO definiciju SQL-a.

Uvod u SQL jezik

U ovom dijelu ćemo se osvrnuti na svrhu SQL jezika, istražiti njegovu povijest i analizirati razloge zašto je sada toliko važan za aplikacije baza podataka.

Svrha SQL jezika

Svaki jezik dizajniran za rad sa bazama podataka trebao bi korisniku pružiti sljedeće mogućnosti:

· Kreirati baze podataka i tabele sa potpunim opisom njihove strukture;



· Obavljanje osnovnih operacija manipulacije podacima, kao što je umetanje, modifikacija i brisanje podataka iz tabela;

· Izvršavanje jednostavnih i složenih upita.

Osim toga, jezik za rad sa bazama podataka treba da rješava sve navedene zadatke uz minimalan napor korisnika, a struktura i sintaksa njegovih naredbi trebaju biti dovoljno jednostavne i pristupačne za učenje.

I konačno, jezik mora biti univerzalan, tj. zadovoljiti neki priznati standard, koji će vam omogućiti da koristite istu sintaksu i strukturu komandi kada prelazite s jednog DBMS-a na drugi. Moderni standard SQL jezika zadovoljava gotovo sve ove zahtjeve.

SQL je primjer jezika za transformaciju podataka, ili jezika dizajniranog za rad sa tabelama kako bi se transformirali ulazni podaci u željeni izlazni oblik. SQL jezik, koji je definisan ISO standardom, ima dve glavne komponente:

· Jezik definicije podataka (DDL), dizajniran da definiše strukture baze podataka i kontroliše pristup podacima;

· Jezik za manipulaciju podacima (DML), dizajniran za dohvaćanje i ažuriranje podataka.

Prije SQL3 standarda, SQL je uključivao samo naredbe za definiranje i manipulaciju podacima; nedostajale su mu bilo kakve komande za kontrolu toka proračuna. Drugim riječima, ovaj jezik nije imao IF ... ONDA ... ELSE, GO TO, DO ... WHILE ili bilo koje druge upute dizajnirane za kontrolu toka računskog procesa. Takvi zadaci morali su se rješavati programski, koristeći programske jezike ili kontrolu zadataka, ili interaktivno, kao rezultat radnji koje je izvršio sam korisnik. Zbog takve nedovršenosti, sa stanovišta organizacije računskog procesa, SQL jezik bi se mogao koristiti na dva načina. Prvi je bio za interaktivni rad, gdje je korisnik unosio pojedinačne SQL izraze s terminala. Drugi je bio ubacivanje SQL izraza u programe proceduralnog jezika.

Prednosti jezika SQL3, čija je formalna definicija usvojena 1999. godine:

· SQL jezik je relativno lak za naučiti.

· To je neproceduralni jezik, tako da treba naznačiti koje informacije treba dobiti, a ne kako se mogu dobiti. Drugim riječima, SQL ne zahtijeva specificiranje metoda pristupa podacima.

· Kao i većina modernih jezika, SQL podržava tečni format operatora. To znači da kada uđete, pojedinačni elementi operatora nisu povezani sa fiksnim stavkama na ekranu.

· Strukturu komandi postavlja skup ključnih reči koje su obične engleske reči, kao što su CREATE TABLE -Kreiraj tabelu, INSERT - Insert, SELECT -Select.

Na primjer:

CREATE TABLE [Prodaja] ((S), [Naziv objekta] VARCHAR (15), [Cost] DECIMAL (7,2));

INSERT INTO [Object] VALUES ("SG16", "Brown", 8300);

SELECT, [Naziv objekta], [Cijena];

OD [Prodaje]

WHERE [Cost]> 10000;

· SQL jezik može koristiti širok spektar korisnika, uključujući administratore baza podataka (DBA), menadžment kompanije, programere aplikacija i mnoge druge krajnje korisnike različitih kategorija.

Trenutno postoje međunarodni standardi za SQL jezik koji ga formalno definišu kao standardni jezik za kreiranje i manipulaciju relacionim bazama podataka, što on zapravo i jeste.

Istorija SQL jezika

Istorija relacionog modela podataka, a posredno i SQL jezika, počela je 1970. godine objavljivanjem suštinskog rada EF Codda, koji je u to vreme bio u IBM-ovom istraživačkom laboratoriju u San Hozeu. Godine 1974. D. Chamberlain, koji je radio u istoj laboratoriji, objavio je definiciju jezika pod nazivom "Structured English Query Language", ili SEQUEL. Godine 1976. objavljena je revidirana verzija ovog jezika, SEQUEL / 2; kasnije je njegovo ime moralo biti promijenjeno u SQL iz pravnih razloga - skraćenicu SEQUEL su već koristili filolozi. Ali do danas, mnogi ljudi i dalje izgovaraju SQL akronim kao "sequel", iako se zvanično preporučuje da se čita kao "es-kyu-el".

1976. godine, baziran na SEQUEL / 2 jeziku, IBM Corporation je izdala prototip DBMS-a pod nazivom "System R". Svrha ovog ispitivanja je bila da se testira izvodljivost implementacije relacionog modela. Među ostalim pozitivnim aspektima, najvažnijim od rezultata ovog projekta može se smatrati razvoj samog SQL jezika. Međutim, korijeni ovog jezika sežu do KVADRATNOG jezika (Specifying Queries as Rational Expressions), koji je bio prethodnik. projekta System R. Jezik SQUARE razvijen je kao istraživački alat za implementaciju relacione algebre kroz fraze napisane na engleskom jeziku.

Krajem 1970-ih, Oracle je izdala sadašnja Oracle Corporation. Možda je ovo prva od komercijalnih implementacija relacionog DBMS-a izgrađenog na upotrebi SQL jezika.

Nešto kasnije pojavio se INGRES DBMS, koji je koristio QUEL jezik upita.

Ovaj jezik je bio više strukturiran od SQL-a, ali je njegova semantika bila manje slična onoj u običnom engleskom. Kasnije, kada je SQL usvojen kao standardni jezik relacione baze podataka, INGRES je u potpunosti preveden u njegovu upotrebu. 1981. godine IBM je objavio svoj prvi komercijalni sistem upravljanja relacionim bazama podataka pod nazivom SQL/DS (za DOS/VSE). Godine 1982. izdata je verzija ovog sistema za VM/CMS okruženje, a 1983. - za MVS okruženje, ali pod imenom DB2.

Godine 1982., Nacionalni institut za standarde Sjedinjenih Država (ANSI) započeo je rad na jeziku baze podataka o odnosima (RDL) zasnovanom na konceptualnim dokumentima iz IBM-a. 1983. godine, Međunarodna organizacija za standardizaciju (ISO) se pridružila ovom radu. Zajednički napori obje organizacije kulminirali su izdavanjem standarda SQL jezika. RDL ime je izbačeno 1984. godine, a nacrt jezika je redizajniran kako bi se približio postojećim SQL implementacijama.

Originalna verzija standarda, koju je ISO izdao 1987. godine, dobila je mnogo kritika. Konkretno, Date, renomirani istraživač u ovoj oblasti, istakao je da standard izostavlja kritične funkcije, uključujući referentni integritet i neke relacijske operatore.

Osim toga, ukazao je na pretjeranu suvišnost jezika - jedan te isti zahtjev mogao bi biti napisan u više različitih verzija. Većina kritika je utvrđena kao validna, a potrebna su prilagođavanja standarda i prije nego što je objavljen. Međutim, odlučeno je da je važnije objaviti standard što je prije moguće kako bi mogao djelovati kao zajednička osnova na kojoj bi se i sam jezik i njegove implementacije mogle dalje razvijati od čekanja da se sve funkcije koje različiti stručnjaci smatraju potrebnim su definisani i dogovoreni za sličan jezik.

ISO je 1989. objavio dodatak standardu koji definiše funkcije integriteta podataka. 1992. godine objavljena je prva veća revizija ISO standarda, ponekad nazivana SQL2 ili SQL-92. Iako su neke od funkcija prvi put definirane u ovom standardu, mnoge od njih su već u potpunosti ili djelomično implementirane u jednoj ili više komercijalnih implementacija SQL jezika.

I sljedeća verzija standarda, koja se obično naziva SQL3, objavljena je tek 1999. godine. Ovo izdanje sadrži dodatnu podršku za objektno orijentirane funkcije upravljanja podacima.

Funkcije koje programeri komercijalnih implementacija dodaju jezičkom standardu nazivaju se ekstenzije. Na primjer, standard SQL jezika definira šest različitih tipova podataka koji se mogu pohraniti u bazama podataka. U mnogim implementacijama, ova lista je dopunjena raznim proširenjima. Svaka od jezičkih implementacija naziva se dijalektom. Ne postoje dva potpuno identična dijalekta, jer trenutno ne postoji dijalekt koji je u potpunosti usklađen sa ISO standardom.

Štaviše, kako programeri baza podataka uvode nove funkcionalnosti u sisteme, oni neprestano proširuju svoje SQL dijalekte, što rezultira da se pojedinačni dijalekti sve više razlikuju jedan od drugog. Međutim, jezgro SQL jezika ostaje manje-više standardizirano u svim implementacijama.

Iako je originalne koncepte SQL-a razvio IBM, njegova važnost je ubrzo natjerala druge programere da kreiraju vlastite implementacije. Trenutno su na tržištu dostupne doslovno stotine proizvoda baziranih na korištenju SQL jezika, a stalno slušamo o izlasku sve više i više novih verzija,

Funkcionalnost SQL jezika

Osnovna funkcionalnost SQL jezika je prikazana ispod.

Definicija podataka. Ova SQL funkcija je opis strukture podržanih podataka i organizacije relacijskih odnosa (tablica). Za njegovu implementaciju predviđeni su operatori za kreiranje baze podataka, kreiranje tabela i pristup podacima.

Kreiranje baze podataka... Naredba CREATE DATABASE se koristi za kreiranje nove baze podataka. Ime baze podataka koja se kreira je naznačeno u strukturi operatora.

Kreiranje tabela. Osnovna tablica je kreirana korištenjem izraza CREATE TABLE. Ovaj operator specificira nazive polja, tipove podataka za njih, dužinu (za neke tipove podataka). Sljedeći tipovi podataka se koriste u SQL-u:

INTEGER - cijeli broj;

CHAR - vrijednost znakova;

VARCHAR - vrijednost znakova, pohranjuju se samo neprazni znakovi;

DECIMAL - decimalni broj;

FLOAT - broj s pomičnim zarezom;

DOUBLE PRECISION - dvostruka preciznost s pomičnim zarezom;

DATETIME - datum i vrijeme;

BOOL je logička vrijednost.

Naredba create table specificira ograničenja na vrijednosti stupaca i na tablicu. Moguća ograničenja prikazana su u tabeli. 4.8

Tabela 4.8 Ograničenja za definirane podatke

Za relacijski model podataka, određivanje stranog ključa (FOREIGNKEY) je od suštinskog značaja. Kada deklarišete strane ključeve, morate nametnuti odgovarajuća ograničenja na kolonu, kao što je NOT NULL.

U SQL naredbi, CHECK označava semantička ograničenja koja jačaju integritet podataka, kao što je ograničavanje skupa važećih vrijednosti za određeni stupac.

Ne možete koristiti naredbu kreiranja tablice više puta za istu tablicu. Ako su, nakon njegovog kreiranja, pronađene netočnosti u njegovoj definiciji, tada možete izvršiti promjene pomoću naredbe ALTER TABLE. Ovaj operator je namijenjen za promjenu strukture postojeće tabele: možete izbrisati ili dodati polje postojećoj tabeli.

Manipulacija podacima. SQL dozvoljava korisniku ili aplikaciji da modificira sadržaj baze podataka umetanjem novih podataka, brisanjem ili modifikacijom postojećih podataka.

Umetanje novih podataka je procedura za dodavanje redova u bazu podataka i izvodi se pomoću INSERT izraza.

Modifikacija podataka pretpostavlja promjene vrijednosti u jednoj ili više kolona tabele i izvodi se pomoću naredbe UPDATE. primjer:

SET iznos = iznos + 1000,00

GDJE suma> 0

Brisanje redova iz tabele se vrši pomoću naredbe DELETE. Sintaksa operatora je:

OD stola

Klauzula WHERE je opciona; međutim, ako je ne uključite, svi zapisi u tabeli će biti izbrisani. Korisno je koristiti naredbu SELECT s istom sintaksom kao naredba DELETE kako biste unaprijed provjerili koji će zapisi biti obrisani.

Osiguravanje integriteta podataka. SQL jezik vam omogućava da definirate prilično složena ograničenja integriteta, čije će se zadovoljenje provjeravati za sve modifikacije baze podataka. Kontrolu nad rezultatima transakcija, obradu nastalih grešaka i koordinaciju paralelnog rada sa bazom podataka više aplikacija ili korisnika omogućavaju COMMIT naredbe (popravlja uspješan završetak trenutne transakcije i početak nove) i ROLLBACK ( potreba za vraćanjem - automatski vraća stanje baze podataka na početku transakcije)

Preuzimanje podataka Jedna je od najvažnijih funkcija baze podataka kojoj odgovara SELECT izraz. Primjer korištenja operatora razmatran je u prethodnom dijelu.

U SQL-u možete kreirati ugniježđene sekvence upita (potupita). Postoje određene vrste upita koje je najbolje implementirati korištenjem potupita. Ovi zahtjevi uključuju takozvane provjere postojanja. Pretpostavimo da želite da dobijete podatke o učenicima koji nemaju ocjenu sedam. Ako se vrati prazan skup, onda to znači samo jedno - svaki učenik ima barem jednu takvu ocjenu.

Povezivanje tabela... SQL izrazi vam omogućuju dohvaćanje podataka iz više od jedne tablice. Jedan od načina da to učinite je da povežete tabele na jedno zajedničko polje.

Naredba SELECT mora sadržavati ograničenje na podudarnost vrijednosti određenog stupca (polja). Tada će se iz povezanih tabela preuzeti samo oni redovi u kojima su vrijednosti navedene kolone iste. Ime kolone je naznačeno samo zajedno sa imenom tabele; u suprotnom, operator će biti dvosmislen.

Možete koristiti druge tipove spajanja tablica: Naredba INTER JOIN osigurava da rezultirajući skup zapisa sadrži odgovarajuće vrijednosti u povezanim poljima. Vanjska spajanja (OUTER JOIN) omogućavaju da se u rezultat upita uključe svi redovi iz jedne tabele i odgovarajući redovi iz druge

Kontrole pristupa. SQL omogućava sinhronizaciju obrade baze podataka raznim aplikacijama, zaštitu podataka od neovlašćenog pristupa.

Pristup podacima u višekorisničkom okruženju reguliran je naredbama GRANT i REVOKE. U svakom iskazu morate navesti korisnika, objekt (tablica, pogled), u odnosu na koji je ovlaštenje dodijeljeno, i samo ovlaštenje. Na primjer, izraz GRANT upućuje korisnika X da odabere podatke iz tablice PRODUCT:

ODOBRITE IZBOR PROIZVODA X

Operator REVOKE opoziva sve prethodno date autorizacije.

Ugrađivanje SQL-a u aplikacije... Prave aplikacije su obično napisane na drugim jezicima koji generiraju SQL kod i šalju ih u DBMS kao ASCII tekst.

IBM standard za SQL proizvode specificira upotrebu ugrađenog SQL-a. Prilikom pisanja aplikacijskog programa, njegov tekst je mješavina naredbi glavnog programskog jezika (na primjer, C, Pascal, Cobol, Fortran, Assembler) i SQL naredbi sa posebnim prefiksom, na primjer. ExecSQL. Struktura SQL naredbi je proširena za smještaj varijabli jezika domaćina u SQL izrazu.



SQL procesor mijenja prikaz programa u skladu sa zahtjevima kompajlera glavnog programskog jezika. Funkcija kompajlera je da prevede (prevede) program iz izvornog programskog jezika u jezik blizak mašinskom jeziku. Nakon kompilacije, aplikativni program (aplikacija) je samostalan modul.

SQL dijalekti

Moderni relacijski DBMS koriste SQL dijalekte za opisivanje i manipulaciju podacima. Podskup SQL jezika koji vam omogućava da kreirate i opišete bazu podataka naziva se DDL (Jezik definicije podataka).

U početku se SQL zvao SEQUEL (Structured English Query Language), zatim SEQUEL / 2, a onda jednostavno SQL. Danas je SQL de facto standard za sisteme upravljanja relacionim bazama podataka.

Prvi jezički standard pojavio se 1989. godine - SQL-89 i podržan je od skoro svih komercijalnih relacionih DBMS-ova. Bio je opšte prirode i bio je otvoren za široko tumačenje. Prednosti SQL-89 uključuju standardizaciju sintakse i semantike operatora za dohvaćanje i manipulaciju podacima, kao i fiksiranje alata za ograničavanje integriteta baze podataka. Međutim, nedostajao je tako važan dio kao što je manipuliranje šemom baze podataka. Nepotpunost standarda SQL-89 dovela je do pojave 1992. godine. sljedeća verzija SQL jezika.

SQL2 (ili SQL-92) pokriva gotovo svaki problem koji vam treba: manipuliranje shemom baze podataka, upravljanje transakcijama i sesijama, podržavanje klijent-server arhitekture ili alate za razvoj aplikacija.

Daljnji korak u razvoju jezika je verzija SQL-a 3. Ova verzija jezika je dopunjena mehanizmom okidača, definicijom proizvoljnog tipa podataka i ekstenzijom objekta.

Trenutno postoje tri nivoa jezika: početni, srednji i potpuni. Mnogi dobavljači svojih DBMS-a koriste vlastite SQL implementacije bazirane barem na početnoj razini odgovarajućeg ANSI standarda i koje sadrže neke ekstenzije specifične za DBMS. Table 4.9 pokazuje primjere SQL dijalekata.

Tablica 4.9 SQL dijalekti

DBMS Jezik upita
System R DBMS SQL
Db2 SQL
Pristup SQL
SYBASE SQL Bilo gdje Watcom-SQL
SYBASE SQL Server Transact_SQL
Moj SQL SQL
Oracle PL / SQL

Objektno orijentirane baze podataka koriste jezik upita objekata (OQL). OQL jezik je bio baziran na SQL2 SELECT naredbi i dodao je mogućnost usmjeravanja upita na objekt ili kolekciju objekata, kao i mogućnost pozivanja metoda unutar jednog upita.

Kompatibilnost mnogih SQL dijalekata u upotrebi određuje kompatibilnost DBMS-a. Na primjer, SYBASE SQL Anywhere je što je moguće više kompatibilan sa SYBASE SQL Serverom. Jedna od strana ove kompatibilnosti je podrška SYBASE SQL Anywherea za dijalekt SQL jezika kao što je Transact-SQL... Ovaj dijalekt se koristi u SYBASE SQL Serveru i može se koristiti u SYBASE SQL Anywhere zajedno sa vlastitim SQL dijalektom - Watcom-SQL.

Kontrolna pitanja

1. Kako možete klasifikovati DBMS?

2. Koji modeli baza podataka postoje?

3. Koji su glavni elementi infoloških modela?

4. Koje vrste odnosa između entiteta postoje?

5. Šta su ER dijagrami i za šta se koriste?

6. Šta dozvoljava procedura normalizacije tabele?

7. Koji su jezik i softverski alati DBMS-a?

8. Koji je tip MS Access DBMS?

9. Koji su glavni objekti MS Access DBMS-a?

10. Za šta se koriste osnovni SQL izrazi?

Top srodni članci