Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Recenzije
  • Funkcionalnost SQL jezika. Opis podataka Jezične naredbe

Funkcionalnost SQL jezika. Opis podataka Jezične naredbe

Structure Query Language (SQL) nastao je kao rezultat razvoja relacijskog modela podataka i trenutno je de facto jezični standard za relacijski DBMS. SQL jezik danas podržava ogroman broj DBMS različitih tipova.

Naziv 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 značajke:

Kreirajte baze podataka i tablice s potpunim opisom njihove strukture

Obavljanje osnovnih operacija manipulacije podacima: umetanje, modificiranje, brisanje podataka

Izvršite jednostavne i složene upite.

SQL jezik je relativno potpun.

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

SQL jezik ima dvije glavne komponente:

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

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

SQL je neproceduralni jezik, odnosno kada ga koristite, morate navesti koje informacije želite dobiti, a ne kako ih možete dobiti. SQL naredbe su obične engleske riječi (SELECT, INSERT, itd.). Prvo razmotrite SQL DML izraze:

SELECT - dohvaćanje podataka iz baze podataka

INSERT - umetanje podataka u tablicu

AŽURIRANJE - ažuriranje podataka u tablici

DELETE - brisanje podataka iz tablice

SELECT izjava

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

Najjednostavniji SQL upit koji ga koristi izgleda ovako:

SELECT col_name FROM tbl

Nakon ključne riječi za odabir slijedi popis stupaca odvojenih zarezima čiji će se podaci vratiti kao rezultat upita. Ključna riječ from određuje iz koje se tablice (ili pogleda) podaci dohvaćaju.

Rezultat upita za odabir uvijek je tablica, koja se naziva tablica rezultata. Štoviše, rezultati upita koji se izvršavaju naredbom select mogu se koristiti za kreiranje nove tablice. Ako rezultati dvaju upita prema različitim tablicama imaju isti format, mogu se kombinirati u jednu tablicu. Također, tablica dobivena kao rezultat upita može postati predmet daljnjih upita.

Za odabir svih stupaca i svih redaka tablice, dovoljno je izdati SELECT * FROM tbl;

Razmotrite tablicu proizvoda koja sadrži informacije o cijenama za različite proizvode:

Zatražite rezultat

ODABIR * IZ proizvoda;

bit će cijela tablica Proizvod.

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

SELECT col1, col2, … , coln FROM tbl;

Dakle, rezultat upita

ODABERITE vrstu, cijenu od proizvoda;

bit će stol

Popis stupaca u naredbi za odabir također se koristi ako je potrebno promijeniti redoslijed stupaca u rezultirajućoj tablici:

Kako bi se odabrali samo oni redovi tablice koji zadovoljavaju određena ograničenja, koristi se posebna ključna riječ where, a zatim logički uvjet. Ako unos zadovoljava ovaj uvjet, uključuje se u rezultat. U suprotnom, unos se odbacuje.

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

ODABIR * IZ proizvoda gdje je cijena<3200;

Njegov rezultat:

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

Korištenje konstrukcije BETWEEN var1 AND var2 omogućuje vam da provjerite jesu li vrijednosti izraza unutar intervala od var1 do var2 (uključujući ove vrijednosti):

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

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

Nazivi stupaca navedeni 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

vratit će se (nazivi pseudonima trebaju biti napisani bez navodnika):

Operator LIKE služi za usporedbu niza s uzorkom:

SELECT * FROM tbl gdje col_name KAO "abc"

Ovaj upit vraća samo zapise koji sadrže vrijednost niza abc u stupcu Col_name.

U uzorku su dopuštena dva zamjenska znaka: "_" i "%". Prvi od njih zamjenjuje jedan proizvoljni znak u predlošku, a drugi niz proizvoljnih znakova. Dakle, "abc%" odgovara bilo kojem nizu koji počinje s abc, "abc_" odgovara bilo kojem nizu od 4 znaka koji počinje s abc, "%z" odgovara bilo kojem nizu koji završava sa z, i konačno "%z%" - nizovima znakova koji sadrži z.

Sve zapise možete pronaći u tablici proizvoda gdje vrijednost vrste počinje slovom "a" kako slijedi:

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

kamionske vage

Ako niz za pretraživanje sadrži zamjenski znak, tada morate navesti kontrolni znak u klauzuli ESCAPE. Ovaj kontrolni znak mora se koristiti u uzorku prije zamjenskog znaka, što ukazuje da se potonji treba tretirati kao običan znak. Na primjer, ako želite pronaći sve vrijednosti koje sadrže znak "_" u određenom polju, tada će uzorak "%_%" vratiti sve zapise iz tablice. U tom slučaju predložak bi trebao biti napisan na sljedeći način:

"%|_%" BIJEG "|"

Da biste provjerili odgovara li vrijednost nizu "20%", možete koristiti sljedeći operator:

KAO "20#%" BJEŽITE "#"

Operator IS NULL omogućuje vam da provjerite odsutnost (prisutnost) NULL vrijednosti u poljima tablice. Korištenje normalnih operatora usporedbe u tim slučajevima može dovesti do netočnih rezultata, budući da usporedba s NULL rezultira u NEPOZNATO (nepoznato). Dakle, uvjet odabira bi trebao izgledati ovako:

gdje je col_name NULL umjesto gdje col_name=NULL.

Zadani rezultat dohvaćanja vraća zapise istim redoslijedom kako su pohranjeni u bazi podataka. Ako želite sortirati zapise po jednom od stupaca, morate koristiti klauzulu ORDER BY, nakon koje je naznačeno ime ovog stupca:

SELECT * FROM tbl ORDER BY col_name;

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

Zapisi se također mogu sortirati po više stupaca. 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 razvrstani prema polju col_name1; ako postoji nekoliko zapisa s istom vrijednošću u stupcu col_name1, tada će biti razvrstani prema polju col_name2.

Ako želite sortirati zapise obrnutim redoslijedom (na primjer, prema silaznom datumu), morate navesti ORDER BY col_name DESC.

Za izravno sortiranje postoji ključna riječ ASC, koja je prihvaćena kao zadana vrijednost.

Ako rezultat odabira sadrži stotine i tisuće zapisa, njihov izlaz i obrada zahtijevaju značajno vrijeme.

Stoga se informacije često paginiraju i prikazuju korisniku u komadima. Paginacija se koristi s ključnom riječi limit nakon koje slijedi broj unosa za prikaz. Sljedeći upit dohvaća prvih 10 zapisa uz istovremeno sortiranje natrag u polje col_name1:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10

Za izdvajanje sljedećih 10 zapisa koristi se ključna riječ limit s dvije vrijednosti: prva određuje poziciju s koje se ispisuje rezultat, a druga određuje broj zapisa za dohvaćanje:

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

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

Svaka SQL naredba počinje ključnom riječi, glagolom koji opisuje radnju koju izvodi naredba, kao što je CREATE. Tim može imati jednu ili više rečenica. Rečenica opisuje podatke s kojima naredba radi ili sadrži specifične informacije o radnji koju naredba poduzima. 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 interpunkcijske znakove. Ključne riječi ne mogu se koristiti kao nazivi.

52. SQL (Structured Query Language) - Jezik strukturiranih upita je standardni jezik upita za rad s relacijskim bazama podataka.

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

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

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

Karakterizirajući SQL jezik u cjelini, možemo razlikovati sljedeće značajke:

struktura visoke razine nalik na engleski;

Neovisnost od specifičnog DBMS-a;

dostupnost standarda u razvoju;

sposobnost izvođenja interaktivnih upita za izdvajanje podataka i modificiranje njihove strukture;

Pružanje programa pristupa bazama podataka;

podrška za arhitekturu klijent/poslužitelj;

· proširivost i podrška objektno orijentiranih tehnologija;



Mogućnost pristupa podacima u Internet okruženju.

Glavne funkcije SQL jezika:

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

SQL- programski jezik baze podataka. Za pristup bazi podataka, SQL naredbe se ubacuju u aplikacijske programe;

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

SQL- jezik aplikacije klijent/poslužitelj. U aplikacijskim programima SQL se koristi kao sredstvo organiziranja komunikacije preko lokalne mreže s poslužiteljem baze podataka koji pohranjuje zajedničke podatke itd.

55. Mogućnosti jezika Jezik SQL, koji je u skladu s najnovijim standardima SQL:2003, SQL:1999, vrlo je bogat i složen jezik čije je sve mogućnosti teško odmah shvatiti, a još više razumjeti. Stoga je potrebno jezik razbiti na razine. U jednoj od klasifikacija koje pruža SQL standard, ovaj jezik je podijeljen na “osnovnu” (ulaznu), “srednju” (srednju) i “punu” (punu) razinu. Osnovna razina sadrži četrdesetak naredbi koje se mogu grupirati u kategorije prema njihovoj funkcionalnosti.

IZRADI pojedinosti TABLICE (NOMZ INT, ZNAK PUNOG IME(15), GODINA INT, SPOL KAKO(3))

DROP TABLE Detalji

ALTER TABLE Detalji (UZORAK ZNAKA(10))

CREATE VIEW ProgressM1 KAO SELECT *FROM ProgressWHERE GROUP="M-1"

UMETNI U Informacijske VRIJEDNOSTI (980101, "IVANOV I.I.", 1980, "LJUDSKI")

IZBRIŠI IZ pojedinosti GDJE NOMZ=980201

AŽURIRANJE pojedinosti SET FUNL NAME = "KRAVTSOVA I. I." GDJE NOMZ=980201

SELECT * FROM Details WHERE FULL NAME="SIDOROV S. S." ILI PUNO IME="PETROV P.P."

54. Vrste podataka i izrazi Za pristup relacijskoj tablici u SQL-u morate napisati (navesti) naredbu. IZABERIključna riječ govori DBMS-u koju će akciju poduzeti naredba. Naredbe upita počinju ključnom riječi. Osim SELECT, to mogu biti riječi STVORITI- stvoriti, UMETNUTI-umetnuti, IZBRISATI- izbrisati, POČINITI– dovršiti itd.

IZ- ključnu riječ poput SELECT koja je prisutna u svakoj naredbi. Nakon njega slijedi razmak, a zatim nazivi tablica koje se koriste kao izvori informacija. Nazivi tablica i polja moraju sadržavati od 1 do 18 znakova, započeti slovom i ne sadržavati razmake ili posebne znakove.

GDJE ključna riječ iza koje slijedi predikat - uvjet nametnut unosu u tablici, koji mora zadovoljiti da bi bio uključen u odabir.

NARUDŽITE PO- razvrstavanje izlaznih zapisa (Asc - uzlazno, Desc - silazno. Ako vrsta sortiranja nije navedena, dolazi do sortiranja uzlazno).

CHAR(duljina) CHARACTER(duljina)Nizovi znakova konstantne duljine

CIJELI INTCijeli brojevi

SMALLINTmali cijeli broj

NUMERIC(preciznost, snaga) DECIMAL(preciznost, snaga) DEC(preciznost, snaga)Broj fiksne točke

FLOAT (preciznost)broj s pomičnim zarezom

dvostruka preciznostfloat brojevi visoki fine

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

Konstante koriste se za određivanje specifičnih vrijednosti podataka. Konstante fiksne toč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 "vrijednosti koja nedostaje".

Većina SQL orijentiranih DBMS podržava tzv agregatne (konačne) funkcije. Često korištene agregatne funkcije uključuju sljedeće:

· RAČUNATI– broj vrijednosti u stupcu tablice;

· IZNOS– zbroj vrijednosti u stupcu;

· PROSJEČAN je aritmetička sredina vrijednosti u stupcu;

· MAX– maksimalna vrijednost u stupcu;

· MIN je minimalna vrijednost u stupcu.

U izrazima možete koristiti sljedeće. vrste operatora:

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

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

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

56. Naredbe za upravljanje transakcijama kako bi se osigurala cjelovitost baze podataka.

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

U SQL-u se obrada transakcija implementira pomoću dvije naredbe − POČINITI i VRANJE. Oni upravljaju promjenama napravljenim od strane grupe naredbi. Tim POČINITI izvješćuje o uspješnom završetku transakcije. Obavještava DBMS da je transakcija dovršena, da su sve njegove naredbe uspješno dovršene i da nije bilo nedosljednosti u bazi podataka. Tim VRANJE izvještava o neuspješnom završetku transakcije. Obavještava DBMS da korisnik ne želi dovršiti transakciju i DBMS bi trebao poništiti 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.

Timovi POČINITI i VRANJE koriste se prvenstveno u programskom načinu, iako se mogu koristiti i u interaktivnom načinu.

57. Naredbe kontrole pristupa uključuju naredbe za izvođenje administrativnih funkcija koje dodjeljuju ili opozivaju pravo (privilegiju) korištenja tablica baze podataka na određeni način. Svaki korisnik baze podataka ima određena prava u odnosu na objekte baze podataka.

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

· INSERT – pravo dodavanja podataka u tablicu;

· UPDATE – pravo promjene podataka u tablici;

· IZBRIŠI – pravo brisanja podataka iz tablice;

· REFERENCE – pravo definiranja primarnog ključa.

58 Ugradnja jezika u aplikacijske programe..Za ugrađeno uključuju naredbe dizajnirane za implementaciju pristupa bazi podataka iz aplikacijskih programa napisanih u određenom programskom jeziku.

Danas ćemo se obratiti temi računala, 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, više na stvar. Razgovarajmo sada o tome što je SQL i čemu služi.

Jezik strukturiranih upita je jezik opće namjene za kreiranje, modificiranje i upravljanje informacijama koje su dio relacijskih baza podataka. U početku je SQL bio glavni način rada s podacima. Pomoću njega korisnik može izvršiti sljedeće radnje:

  • stvaranje nove tablice u bazi podataka (DB);
  • dodavanje novih zapisa u postojeće tablice;
  • uređivanje zapisa;
  • potpuno brisanje zapisa;
  • odabir zapisa iz različitih tablica, u skladu s navedenim uvjetima;
  • mijenjanje izgleda i strukture jedne ili više tablica.

Kako se razvijao, SQL je uvelike transformiran i obogaćen novim korisnim značajkama, kao rezultat toga, postao je sve više nalik pravom programskom jeziku. Do danas, SQL je jedini mehanizam sposoban za povezivanje aplikacijskog softvera i baze podataka. To je ono što je SQL.

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

  • stvaranje ili modifikacija novih ili postojećih objekata u bazi podataka;
  • primanje podataka;
  • dodavanje novih podataka u tablicu;
  • brisanje podataka;
  • pristup sustavu za upravljanje bazom podataka (DBMS).

Malo o prednostima i nedostacima ovog sustava za upravljanje podacima.

Prednosti SQL-a

  • Neovisnost od postojećeg DBMS-a u danom sustavu. SQL tekstovi su univerzalni za mnoge DBMS. Međutim, ovo pravilo vrijedi za jednostavne zadatke vezane uz obradu podataka u tablicama.
  • Prisutnost SQL standarda pridonosi "stabilizaciji" jezika.
  • Deklarativnost. Ova prednost leži u činjenici da pri radu s podacima programer odabire samo one informacije koje je potrebno promijeniti ili modificirati. Kako će se to učiniti automatski se odlučuje na programskoj razini samog DBMS-a.

Nedostaci SQL-a

  • SQL ne slijedi model konstrukcije relacijskih podataka. U tom smislu, SQL zamjenjuje jezik Tutorial D, koji je uistinu relacijski.
  • Složenost SQL-a određuje njegovu svrhu. Jezik je toliko složen da ga može koristiti samo programer. Iako je u početku bio zamišljen kao kontrolni alat s kojim će obični korisnik raditi.
  • Neka nedosljednost u standardima. Mnoge DBMS tvrtke dodaju vlastite značajke SQL dijalektu, što značajno utječe na univerzalnost jezika.

Posljednja stvar: što je SQL Server? Riječ je o sustavu za upravljanje bazom podataka koji je razvijen u zidovima poznate tvrtke Microsoft. Ovaj sustav uspješno radi s bazama podataka, kako kućnih osobnih računala, tako i velikih baza podataka velikih poduzeća. U ovom segmentu tržišta SQL Server je više nego konkurentan.

Pa, doslovno ukratko, sjetimo se MySQL-a. Ova se aplikacija obično koristi kao poslužitelj koji prima zahtjeve od lokalnih ili udaljenih klijenata. MySQL se također može uključiti u samostalne programe. Treba napomenuti da je ova aplikacija jedan od najfleksibilnijih sustava za upravljanje podacima, jer uključuje mnogo različitih vrsta tablica.

SQL JEZIK: MANIPULACIJA PODATAKA

U OVOM PREDAVANJU...

· Svrha Structure Query Language (SQL) i njegova posebna uloga u radu s bazama podataka.

· Povijest nastanka i razvoja jezika SQL.

· Snimanje izraza SQL jezika.

· Odabir informacija iz baza podataka pomoću naredbe SELECT.

konstrukcija SQL naredbi koju karakteriziraju sljedeće značajke:

· primjena klauzule WHERE za odabir redaka koji zadovoljavaju različite uvjete;

sortiranje rezultata izvršenja upita pomoću konstrukcije ORDER BY;

korištenje funkcija agregiranja SQL jezika;

Grupiranje odabranih podataka pomoću konstrukcije GROUP BY;

Korištenje podupita

Korištenje spojeva tablica

· primjena operacija sa skupovima (UNION, INTERSECT, OSIM).

· Izmjena baze podataka korištenjem INSERT, UPDATE i DELETE izraza.

Jedan od jezika koji je nastao kao rezultat razvoja relacijskog modela podataka je SQL, koji je sada postao vrlo raširen i zapravo je postao standardni jezik za relacijske baze podataka. Standard za jezik SQL objavio je 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. Trenutno, jezik SQL podržava stotine različitih tipova DBMS-a, dizajniranih za široku paletu računalnih platformi, u rasponu od osobnih računala do velikih računala.

Ovo poglavlje koristi ISO definiciju jezika SQL.

Uvod u SQL

U ovom dijelu ćemo se osvrnuti na svrhu SQL jezika, upoznati se s njegovom poviješću i analizirati razloge zašto je postao toliko važan za aplikacije baza podataka danas.

Svrha SQL jezika

Svaki jezik dizajniran za rad s bazama podataka trebao bi korisniku pružiti sljedeće značajke:

kreirati baze podataka i tablice s potpunim opisom njihove strukture;



obavljati osnovne operacije manipulacije podacima kao što su umetanje, modificiranje i brisanje podataka iz tablica;

Izvršite jednostavne i složene upite.

Osim toga, jezik baze podataka trebao bi rješavati sve navedene zadatke uz minimalan napor korisnika, a struktura i sintaksa njegovih naredbi trebaju biti prilično jednostavne i pristupačne za učenje.

I, konačno, jezik mora biti univerzalan, t.j. zadovoljiti neki priznati standard, koji će vam omogućiti korištenje iste sintakse i strukture naredbi pri prelasku s jednog DBMS-a na drugi. Suvremeni standard jezika SQL zadovoljava gotovo sve ove zahtjeve.

SQL je primjer jezika za transformaciju podataka ili jezika dizajniranog za rad s tablicama kako bi se ulazni podaci transformirali u željeni izlazni oblik. SQL jezik, koji je definiran ISO standardom, ima dvije glavne komponente:

· Jezik definicije podataka (DDL), dizajniran za definiranje struktura baze podataka i kontrolu pristupa podacima;

· Jezik za upravljanje podacima (DML) za uzorkovanje i ažuriranje podataka.

Prije pojave standarda SQL3, jezik SQL je uključivao samo naredbe za definiranje i manipulaciju podacima; nedostajale su mu bilo kakve naredbe za kontrolu napretka proračuna. Drugim riječima, ovaj jezik nije imao IF ... THEN ...ELSE, GO TO, DO ... WHILE i bilo koje druge naredbe namijenjene kontroli tijeka računskog procesa. Takvi zadaci morali su se rješavati programski, koristeći programske jezike ili kontrolu poslova, ili interaktivno, kao rezultat radnji koje je izvršio sam korisnik. Zbog takve nedovršenosti, sa stajališta organizacije računskog procesa, SQL jezik bi se mogao koristiti na dva načina. Prvi je uključivao interaktivni rad, koji se sastojao od toga da korisnik unese pojedinačne SQL izraze s terminala. Drugi je bio ugraditi SQL izraze u programe proceduralnog jezika.

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

· SQL jezik je relativno jednostavan za naučiti.

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

· Kao i većina modernih jezika, SQL podržava besplatni format iskaza. To znači da, dok upisujete, pojedinačni elementi operatora nisu povezani s fiksnim pozicijama na zaslonu.

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

Na primjer:

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

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

SELECT , [Naziv objekta], [Cijena];

IZ [Prodaja]

GDJE [Cijena] > 10000;

· Jezik SQL može koristiti širok raspon korisnika, uključujući administratore baza podataka (DBA), rukovoditelje tvrtki, programere aplikacija i mnoge druge krajnje korisnike različitih kategorija.

Trenutno postoje međunarodni standardi za jezik SQL koji ga formalno definiraju kao standardni jezik za kreiranje i manipulaciju relacijskim bazama podataka, što on zapravo i jest.

Povijest SQL jezika

Povijest relacijskog modela podataka, a neizravno i jezika SQL, započela je 1970. godine objavljivanjem temeljnog rada E. F. Codda, koji je u to vrijeme radio u IBM Research Laboratory u San Joseu. Godine 1974. D. Chamberlain, koji je radio u istom laboratoriju, objavio je definiciju jezika pod nazivom "Structured English Query Language", ili SEQUEL. Godine 1976. objavljena je revidirana verzija ovog jezika, SEQUEL/2; naknadno je njegovo ime moralo biti promijenjeno u SQL iz pravnih razloga - kraticu SEQUEL već su koristili filolozi. No, do danas mnogi ljudi još uvijek izgovaraju kraticu SQL kao "nastavak", iako se službeno preporučuje čitanje kao "es-kyu-el".

1976. godine, na temelju SEQUEL / 2 jezika, IBM je izdao prototip DBMS-a pod nazivom "System R". Svrha ovog ispitivanja bila je ispitati izvedivost implementacije relacijskog modela. Među ostalim pozitivnim aspektima, razvoj samog SQL jezika može se smatrati najvažnijim rezultatom ovog projekta, no korijeni ovog jezika sežu do jezika SQUARE (Specifying Queries as Rational Expressions), koji je bio prethodnik Projekt System R. Jezik SQUARE razvijen je kao istraživački alat za implementaciju relacijske algebre kroz fraze sastavljene na engleskom jeziku.

Krajem 1970-ih, tvrtka koja je sada postala Oracle Corporation objavila je Oracle bazu podataka. Možda je ovo prva komercijalna implementacija relacijskog DBMS-a izgrađenog pomoću SQL jezika.

Nešto kasnije pojavio se INGRES DBMS, koristeći QUEL jezik upita.

Ovaj je jezik bio strukturiraniji od SQL-a, ali je njegova semantika manje bliska običnom engleskom. Kasnije, kada je SQL usvojen kao standardni jezik za relacijske baze podataka, INGRES DBMS je u potpunosti preveden da ga koristi. Godine 1981. IBM je izdao svoj prvi komercijalni relacijski DBMS nazvan SQL/DS (za DOS/VSE). Godine 1982. izdana je verzija ovog sustava za VM / CMS okruženje, a 1983. - za MVS okruženje, ali već pod imenom DB2.

Godine 1982., američki nacionalni institut za standarde (ANSI) započeo je rad na jeziku baze podataka odnosa (RDL) na temelju konceptualnih dokumenata dobivenih od IBM-a. Godine 1983. ovom se radu pridružila Međunarodna organizacija za standardizaciju (ISO). Zajednički napori obje organizacije kulminirali su izdavanjem standarda za jezik SQL. Naziv RDL odbačen je 1984., a nacrt jezika je redizajniran kako bi približio postojeće implementacije SQL jezika.

Izvorna verzija standarda, koju je ISO objavio 1987. godine, izazvala je val kritika. Konkretno, Date, poznati istraživač na ovom području, istaknuo je da standard izostavlja važne značajke, uključujući objekte referentnog integriteta i neke relacijske operatore.

Osim toga, primijetio je prekomjernu redundantnost jezika - isti se upit mogao napisati u nekoliko različitih verzija. Većina kritika prepoznata je kao poštena, a potrebne su prilagodbe standardu i prije njegove objave. Međutim, odlučeno je da je važnije što prije objaviti standard kako bi mogao poslužiti kao zajednička osnova na kojoj bi se i sam jezik i njegove implementacije mogle dalje razvijati, umjesto da se čeka da se sve značajke koje različiti stručnjaci usvoje. smatrati obveznim definirani su i dogovoreni.za takav jezik.

Godine 1989. ISO je objavio dodatak standardu koji definira funkcije podrške integritetu podataka. Godine 1992. objavljena je prva veća revizija ISO standarda, koja se ponekad naziva SQL2 ili SQL-92. Iako su neke od značajki po 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 značajke upravljanja podacima.

Funkcije koje programeri komercijalnih implementacija dodaju jezičnom standardu nazivaju se ekstenzije. Na primjer, standard jezika SQL definira šest različitih vrsta podataka koji se mogu pohraniti u baze podataka. U mnogim implementacijama ovaj je popis nadopunjen raznim proširenjima. Svaka od jezičnih implementacija naziva se dijalektom. Ne postoje dva potpuno identična dijalekta, kao što trenutno ne postoji dijalekt koji u potpunosti odgovara ISO standardu.

Štoviše, kako programeri baza podataka dodaju sve više i više funkcionalnosti svojim sustavima, oni neprestano proširuju svoje dijalekte SQL jezika, uzrokujući da se pojedinačni dijalekti međusobno sve više razlikuju. Međutim, temeljna jezgra SQL jezika ostaje više-manje standardizirana u svim implementacijama.

Iako je izvorne koncepte SQL jezika razvio IBM, njegova je važnost vrlo brzo potaknula druge programere da kreiraju vlastite implementacije. Danas na tržištu postoje doslovno stotine proizvoda baziranih na SQL-u, a stalno čujete o sve više verzija koje se objavljuju.

Funkcionalnost SQL jezika

Glavne funkcionalnosti SQL jezika su navedene u nastavku.

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

Kreiranje baze podataka. Naredba CREATE DATABASE koristi se za stvaranje nove baze podataka. Struktura izraza specificira naziv baze podataka koja se kreira.

Izrada tablica. Osnovna tablica se kreira pomoću izraza CREATE TABLE. Ovaj operator specificira nazive polja, vrste podataka za njih, duljinu (za neke vrste podataka). SQL koristi sljedeće tipove podataka:

INTEGER je cijeli broj;

CHAR - vrijednost znakova;

VARCHAR - vrijednost znakova, pohranjuju se samo neprazni znakovi;

DECIMAL - decimalni broj;

FLOAT - broj s pomičnim zarezom;

DOUBLE PRECISION - plutajući zarez dvostruke preciznosti;

DATETIME - datum i vrijeme;

BOOL je booleova vrijednost.

Naredba za kreiranje tablice navodi ograničenja na vrijednosti stupaca i na tablicu. Moguća ograničenja prikazana su u tablici. 4.8

Tablica 4.8 Ograničenja za definirane podatke

Za relacijski model podataka bitno je navesti strani ključ (FOREIGNKEY). Kada deklarirate strane ključeve, morate nametnuti odgovarajuća ograničenja na stupac, kao što je NOT NULL.

U SQL naredbi, CHECK označava semantička ograničenja koja osiguravaju integritet podataka, kao što je ograničavanje skupa valjanih vrijednosti za određeni stupac.

Naredbu za kreiranje tablice ne možete koristiti više od jednom na istoj tablici. Ako su nakon izrade pronađene netočnosti u njegovoj definiciji, tada se promjene mogu izvršiti pomoću izraza ALTER TABLE. Ova izjava je namijenjena za promjenu strukture postojeće tablice: možete ukloniti ili dodati polje postojećoj tablici.

Manipulacija podacima. SQL omogućuje korisniku ili aplikaciji promjenu sadržaja baze podataka umetanjem novih podataka, brisanjem ili modificiranjem postojećih podataka.

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

Promjena podataka uključuje promjene vrijednosti u jednom ili više stupaca tablice i izvodi se pomoću naredbe UPDATE. Primjer:

SET iznos=iznos+1000,00

GDJE zbroj>0

Uklanjanje redaka iz tablice se vrši pomoću naredbe DELETE. Sintaksa operatora je:

IZ stola

Klauzula WHERE nije obavezna, međutim, ako nije uključena, svi zapisi u tablici će biti izbrisani. Korisno je koristiti naredbu SELECT s istom sintaksom kao izraz DELETE kako biste unaprijed provjerili koji će zapisi biti obrisani.

Osiguravanje integriteta podataka. Jezik SQL vam omogućuje definiranje prilično složenih ograničenja integriteta, čije će se zadovoljenje provjeravati za sve izmjene baze podataka. Kontrolu nad rezultatima transakcija, rukovanje pogreškama koje nastaju i koordinaciju paralelnog rada s bazom podataka više aplikacija ili korisnika osiguravaju naredbe COMMIT (popravlja uspješan završetak trenutne transakcije i početak nove) i ROLLBACK ( potreba za rollback - automatsko vraćanje stanja baze podataka na početku transakcije)

Uzorkovanje podataka- jedna od najvažnijih funkcija baze podataka, koja odgovara naredbi SELECT. Primjer korištenja operatora razmatran je u prethodnom odjeljku.

U SQL-u možete kreirati ugniježđene nizove upita (potupita). Postoje određene vrste upita koje je najbolje implementirati pomoću potupita. Ovi upiti uključuju takozvane provjere postojanja. Pretpostavimo da želite dobiti 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 tablica. SQL izrazi omogućuju vam dohvaćanje podataka iz više tablica. Jedan od načina da to učinite je povezivanje tablica na jedno zajedničko polje.

Naredba SELECT mora sadržavati ograničenje na podudarnost vrijednosti određenog stupca (polja). Tada će se iz povezanih tablica dohvatiti samo oni reci u kojima se podudaraju vrijednosti navedenog stupca. Naziv stupca je naznačen samo zajedno s nazivom tablice; inače će operator biti dvosmislen.

Možete koristiti druge vrste povezivanja tablica: INTER JOIN operator (unutarnje spajanje) osigurava prisutnost u rezultirajućem skupu zapisa, odgovarajućim vrijednostima u povezanim poljima. Vanjski spojevi (OUTER JOIN) omogućuju vam da u rezultat upita uključite sve retke iz jedne tablice i njihove odgovarajuće retke iz druge

Kontrola pristupa. SQL omogućuje sinkronizaciju obrade baze podataka raznim aplikacijskim programima, zaštitu podataka od neovlaštenog pristupa.

Pristup podacima u višekorisničkom okruženju reguliran je izjavama GRANT i REVOKE. U svakom iskazu morate navesti korisnika, objekt (tablicu, pogled), u odnosu na koji se postavljaju dopuštenja i same dozvole. Na primjer, izraz GRANT daje korisniku X mogućnost dohvaćanja podataka iz tablice PRODUCT:

ODOBRITE ODABIR PROIZVODA X

Izjava REVOKE opoziva sva prethodno dana dopuštenja.

Ugradnja SQL-a u aplikacijske programe. Prave aplikacije su obično napisane na drugim jezicima koji generiraju SQL kod i prosljeđuju ga DBMS-u 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 s posebnim prefiksom, na primjer. ExecSQL. Struktura SQL izraza proširena je kako bi prihvatila varijable jezika domaćina u SQL konstrukcijama.



SQL procesor mijenja oblik programa u skladu sa zahtjevima prevoditelja glavnog programskog jezika. Funkcija prevoditelja je prevesti (prevesti) program iz izvornog programskog jezika u jezik blizak strojnom jeziku. Nakon kompilacije, primijenjeni program (aplikacija) je samostalan modul.

SQL dijalekti

U modernom relacijskom DBMS-u, dijalekti jezika SQL koriste se za opisivanje i manipulaciju podacima. Podskup jezika SQL koji vam omogućuje stvaranje i opisivanje baze podataka naziva se DDL (Jezik definicije podataka).

SQL se izvorno zvao SEQUEL (Structured English Query Language), zatim SEQUEL/2, a onda samo SQL. Danas je SQL de facto standard za sustave upravljanja relacijskim bazama podataka.

Prvi jezični standard pojavio se 1989. godine - SQL-89 i podržavali su ga gotovo svi komercijalni relacijski DBMS. Bio je opće prirode i dopuštao je široko tumačenje. Prednosti SQL-89 mogu se smatrati standardizacijom sintakse i semantike operatora odabira podataka i manipulacije, kao i fiksiranje sredstava za ograničavanje integriteta baze podataka. Međutim, nedostajao je tako važan dio kao što je manipulacija shemom baze podataka. Nepotpunost standarda SQL-89 dovela je do pojave 1992. godine sljedeća verzija jezika SQL.

SQL2 (ili SQL-92) pokriva gotovo sve što trebate: manipulaciju shemom baze podataka, upravljanje transakcijama i sesijama, klijent-poslužitelj arhitekture ili alate za razvoj aplikacija.

Sljedeći korak u razvoju jezika je varijanta SQL 3. Ova verzija jezika nadopunjena je mehanizmom okidača, definicijom proizvoljnog tipa podataka i ekstenzijom objekta.

Trenutno postoje tri jezične razine: početni, srednji i potpuni. Mnogi dobavljači baza podataka koriste vlastite implementacije SQL-a, temeljene na barem početnoj razini relevantnog ANSI standarda i koje sadrže neke ekstenzije specifične za određeni DBMS. U tablici. 4.9 prikazuje primjere SQL dijalekata.

Tablica 4.9 SQL dijalekti

DBMS Jezik upita
DBMS sustav R SQL
DB2 SQL
Pristup SQL
SYBASE SQL Bilo gdje watcom-sql
SYBASE SQL Server Transact_SQL
MySQL SQL
Oracle PL/SQL

Objektno orijentirane baze podataka koriste objektni jezik upita OQL (Object Query Language). OQL jezik se temeljio na naredbi SQL2 SELECT i dodao je mogućnost slanja upita objektu ili kolekciji objekata, kao i mogućnost pozivanja metoda unutar jednog upita.

Kompatibilnost mnogih korištenih SQL dijalekata određuje kompatibilnost DBMS-a. Dakle, SYBASE SQL Anywhere DBMS je što je moguće više kompatibilan za DBMS ove klase sa SYBASE SQL Server DBMS. Jedna od strana ove kompatibilnosti je podrška u SYBASE SQL Anywhereu takvog dijalekta jezika SQL kao što je Transakcijski SQL. Ovaj dijalekt se koristi u SYBASE SQL Serveru i može se koristiti u SYBASE SQL Anywhere zajedno s vlastitim dijalektom SQL jezika - watcom-sql.

test pitanja

1. Kako se može klasificirati DBMS?

2. Koji modeli baza podataka postoje?

3. Koji su glavni elementi infoloških modela?

4. Koje vrste odnosa između entiteta postoje?

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

6. Što vam omogućuje postupak normalizacije tablice?

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

8. Koja je vrsta DBMS-a MS Access?

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

10. Za što se koriste osnovni SQL izrazi?

Vrhunski povezani članci