Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • vijesti
  • Svrha SQL jezika. Operateri manipulacije podacima

Svrha SQL jezika. Operateri manipulacije podacima

Structure Query Language (SQL) nastao je kao rezultat razvoja relacijskog modela podataka i sada je de facto standard za sustave upravljanja relacijskim bazama podataka. SQL jezik danas podržava ogroman broj različitih tipova DBMS-a.

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 mogućnosti:

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 je relacijski 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 pri njegovoj upotrebi 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 - umetanje podataka u tablicu

AŽURIRANJE - ažuriranje podataka u tablici

DELETE - brisanje podataka iz tablice

SELECT izjava

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 za odabir slijedi popis stupaca odvojenih zarezima koji će biti vraćeni iz upita. Ključna riječ from određuje iz koje tablice (ili pogleda) dohvaćati podatke.

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.

Da biste odabrali sve stupce i sve retke tablice, samo napravite SELECT * FROM tbl;

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

Rezultat upita

ODABIR * IZ proizvoda;

bit će cijela tablica proizvoda.

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 kada 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č gdje, a zatim logički uvjet. Ako zapis zadovoljava ovaj uvjet, uključuje se u rezultat. U protivnom se takav unos odbacuje.

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

ODABERITE * 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 naziv = "autobalans".

Korištenje konstrukcije IZMEĐU var1 I var2 omogućuje vam da provjerite jesu li vrijednosti bilo kojeg izraza unutar raspona 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 one zapise koji sadrže vrijednost niza abc u stupcu col_name.

U obrascu su dopuštena dva zamjenska znaka: "_" i "%". Prvi zamjenjuje jedan proizvoljni znak u predlošku, a drugi niz proizvoljnih znakova. Dakle, "abc%" odgovara bilo kojem nizu koji počinje s abc, "abc_" - nizu od 4 znaka koji počinje s 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 tablice proizvoda u kojima vrijednost vrste počinje slovom "a" kako slijedi:

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

auto vaga

Ako niz 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 uzorak "% _%" rezultirati vraćanjem svih zapisa iz tablice. U tom slučaju, predložak bi trebao biti napisan na sljedeći način:

"% | _%" BJEŽI "|"

Da biste provjerili usklađenost vrijednosti sa nizom "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, jer usporedba s NULL vrijednošću rezultira UNKNOWN (nepoznato). Dakle, uvjet odabira bi trebao izgledati ovako:

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

Zadani rezultat odabira vraća zapise istim redoslijedom u kojem su pohranjeni u bazi podataka. Ako trebate sortirati zapise prema jednom od stupaca, morate koristiti klauzulu ORDER BY, nakon koje slijedi naziv 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 mogu razvrstati po nekoliko 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, oni će biti razvrstani prema polju col_name2.

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

Za izravno sortiranje postoji ključna riječ ASC, koja je zadana.

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

Stoga se informacije često paginiraju i prikazuju korisniku u komadima. Navigacija po stranici koristi se s 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 u polju col_name1:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10

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

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

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

U ovom poglavlju...

  • Što je SQL
  • SQL zablude
  • Pogled na različite SQL standarde
  • Poznavanje standardnih SQL naredbi i rezerviranih riječi
  • Prikaz brojeva, simbola, datuma, vremena i drugih vrsta podataka
  • Nedefinirane vrijednosti i ograničenja
  • Korištenje SQL-a na sustavu klijent/poslužitelj
  • SQL na webu

SQL je fleksibilan jezik koji se može koristiti na razne načine. To je najčešći alat koji se koristi za komunikaciju s relacijskom bazom podataka. U ovom poglavlju objasnit ću što SQL jest, a što nije, posebno po čemu se SQL razlikuje od drugih vrsta računalnih jezika. Tada ćete se upoznati s naredbama i tipovima podataka koje podržava standardni SQL. Također, objasnit ću osnovne pojmove kao što su nedefinirane vrijednosti i ograničenja... Konačno, pružit će pregled kako se SQL uklapa u klijentsko/poslužiteljsko okruženje, kao i na internet i intranete organizacija.

Što SQL jest, a što nije

Prva stvar koju treba razumjeti o SQL-u je da nije proceduralni kao što su FORTRAN, Basic, C, COBOL, Pascal i Java. Da biste riješili problem koristeći jedan od ovih proceduralnih jezika, morate napisati proceduru koja izvodi navedene operacije jednu po jednu dok se zadatak ne dovrši. Procedura može biti linearna sekvenca ili sadržavati grane, ali u oba slučaja programer specificira redoslijed izvršenja.

Drugim riječima, SQL je neproceduralni Jezik. Da biste ga upotrijebili za rješavanje problema, recite SQL-u, što točno treba ti kao da razgovaraš s duhom iz Aladinove svjetiljke. I ne moraš reći kako dobiti ono što želiš za sebe. Sustav upravljanja bazom podataka (DBMS) odlučit će kako najbolje ispuniti vaš zahtjev.

U redu. Upravo sam rekao da SQL nije proceduralni jezik. U biti, to je istina. Međutim, milijuni programera (a možda ste i vi) navikli su rješavati probleme proceduralno, pa je posljednjih godina bio velik pritisak da se SQL-u dodaju neke proceduralne mogućnosti. Stoga, nova verzija SQL specifikacije, SQL: 2003, sada uključuje značajke proceduralnog jezika kao što su BEGIN blokovi, IF uvjeti, funkcije i procedure. S ovim novim alatima moguće je pohraniti programe na poslužitelj kako bi ih mogli ponovno koristiti mnogi korisnici.

Da ilustriramo što sam mislio kad sam rekao "reci sustavu što želiš", pretpostavimo da imate tablicu ZAPOSLENICI s podacima o zaposlenicima i iz nje želite odabrati sve retke koji odgovaraju svim "starijim" zaposlenicima. Pod "starijim" radnicima možete misliti na sve starije od 40 godina ili koji zarađuju više od 60.000 dolara godišnje. Odabir koji vam je potreban možete napraviti pomoću sljedećeg upita:

ODABERITE * OD ZAPOSLENIKA GDJE GOD > 40 ILI PLAĆA > 60000;

Ova izjava odabire iz tablice EMPLOYEE sve retke u kojima je stupac AGE (dob) veći od 40 ili je vrijednost u stupcu PLAĆA (plaća) veća od 60 000. SQL sam zna kako odabrati informacije. Mehanizam baze podataka provjerava bazu podataka i sam odlučuje kako će izvršiti upit. Sve što trebate učiniti je naznačiti koje podatke trebate.

Zapamtiti:
Upit je pitanje koje postavljate bazi podataka. Ako bilo koji od njegovih podataka zadovoljava uvjete vašeg upita, onda vam ih SQL prenosi
.

Modernim SQL implementacijama nedostaju mnoge jednostavne programske konstrukcije koje su temeljne za većinu drugih jezika. U svakodnevnim životnim aplikacijama, u pravilu, barem neke od ovih konstrukcija su potrebne, tako da je SQL stvarno podjezika podaci. Čak i uz dodatke koji su se pojavili u SQL-u zajedno sa standardom SQL: 1999 i dodatnim proširenjima dodanim u SQL: 2003, i dalje morate koristiti jedan od programskih jezika sa SQL-om, kao što je C.

Podatke iz baze podataka možete odabrati na jedan od sljedećih načina.

  • Korištenjem jednokratnog neprogramibilnog upita s računalne konzole, unosom SQL naredbe i očitavanjem rezultata njezina izvršenja na ekranu. Konzola je tradicionalni izraz za računalni hardver koji obavlja rad tipkovnice i zaslona koji se nalazi u modernim računalima. Upiti na konzoli korisni su kada trebate brzi odgovor na određeni upit. Da biste zadovoljili bilo koju trenutnu potrebu, možda će vam trebati podaci iz baze podataka koji vam nikada prije nisu bili potrebni. Možda vam više nikada neće trebati, ali sada su vam potrebni. Unesite odgovarajući SQL upit s tipkovnice i nakon nekog vremena rezultat će se pojaviti na vašem zaslonu.
  • Uz pomoć programa koji izdvaja informacije iz baze podataka, a zatim na temelju tih podataka kreira izvješće koje se prikazuje ili na ekranu ili u tiskanom obliku. SQL jezik se može koristiti na taj način. Možete staviti složeni SQL upit koji bi vam mogao dobro doći u budućnosti izravno u svoj program. To vam omogućuje da ga ponovno koristite u budućnosti. Dakle, formulacija zahtjeva se obavlja jednom. Poglavlje 15 pokriva kako umetnuti SQL kod u programe napisane na drugom jeziku.

Strukturirani jezik upita ili SQL je deklarativni programski jezik za korištenje u kvazirelacijskim bazama podataka. Mnoge izvorne SQL značajke uzete su za račun torki, ali nedavna proširenja za SQL uključuju sve više i više relacijske algebre.
SQL je izvorno stvorio IBM, ali mnogi dobavljači razvili su vlastite dijalekte. Usvojen je kao standard od strane američkog Nacionalnog instituta za standarde (ANSI) 1986. i ISO 1987. godine. U standardu SQL programskog jezika, ANSI je naveo da je službeni izgovor SQL-a "es que el". Međutim, mnogi stručnjaci za baze podataka koristili su sleng izgovor Sequel, koji odražava izvorni naziv jezika, Sequel, koji je kasnije promijenjen zbog sukoba brenda i imena između IBM-a. Programiranje za početnike.
SQL programski jezik revidiran je 1992. i ova verzija je poznata kao SQL-92 in. Zatim je 1999. ponovno revidirana da postane SQL: 1999 (AKA SQL3). Programiranje za lutke. SQL 1999 podržava objekte koji ranije nisu bili podržani u drugim verzijama, ali tek je krajem 2001. samo nekoliko sustava za upravljanje bazama podataka podržalo SQL implementacije: 1999.
SQL, iako je definiran kao ANSI i ISO, ima mnoge varijacije i proširenja, od kojih većina ima svoje karakteristike, kao što je PL/SQ implementacija tvrtke Oracle Corporation ili implementacija Sybase i Microsoft Transact-SQL, što može zbuniti osnove programiranja. Također nije neuobičajeno da komercijalne implementacije izostave podršku za glavne značajke standarda, kao što su tipovi podataka kao što su datum i vrijeme, preferirajući njihovu vlastitu verziju. Kao rezultat toga, za razliku od ANSI C ili ANSI Fortrana, koji se obično može prenositi s platforme na platformu bez većih strukturnih promjena, upiti SQL programskog jezika rijetko se mogu prenositi između različitih sustava baza podataka bez većih modifikacija. Većina ljudi u području baze podataka vjeruje da je ovaj nedostatak kompatibilnosti namjeran kako bi se svakom programeru pružio vlastiti sustav upravljanja bazom podataka i da bi se kupac vezao za određenu bazu podataka.
Kao što ime sugerira, programski jezik SQL dizajniran je za specifičnu, ograničenu svrhu - ispitivanje podataka sadržanih u relacijskoj bazi podataka. Kao takav, to je skup uputa programskog jezika za kreiranje uzoraka podataka, a ne proceduralni jezik poput C ili BASIC, koji su dizajnirani za rješavanje mnogo šireg raspona problema. Proširenja jezika kao što je "PL / SQL" dizajnirana su za rješavanje ovog ograničenja dodavanjem proceduralnih elemenata za SQL uz zadržavanje prednosti SQL-a. Drugi pristup je dopustiti SQL upitima da ugrade naredbe proceduralnog programskog jezika i stupe u interakciju s bazom podataka. Na primjer, Oracle i drugi podržavaju jezik Java u bazi podataka, dok vam PostgreSQL omogućuje pisanje funkcija u Perl, Tcl ili C.
Jedna šala o SQL-u: "SQL nije ni strukturiran ni jezik." Šala je da SQL nije Turingov jezik. ...

Odaberite * od T
C1 C2
1 a
2 b
C1 C2
1 a
2 b
Odaberite C1 iz T
C1
1
2
C1 C2
1 a
2 b
Odaberite * iz T gdje je C1 = 1
C1 C2
1 a

S obzirom na tablicu T, upit Select * from T prikazat će sve elemente svih redaka u tablici.
Iz iste tablice, upit Odaberi C1 iz T prikazat će stavke iz stupca C1 svih redaka u tablici.
Iz iste tablice, upit Odaberi * iz T gdje je C1 = 1 prikazat će sve elemente svih redaka u kojima je vrijednost stupca C1 "1".

SQL ključne riječi

SQL riječi podijeljene su u nekoliko grupa.

Prvi je Jezik za upravljanje podacima ili DML(jezik upravljanja podacima). DML je podskup jezika koji se koristi za upite baza podataka, dodavanje, ažuriranje i brisanje podataka.

  • SELECT je jedna od najčešće korištenih DML naredbi i omogućuje korisniku da odredi upit kao skup opisa željenog rezultata. Upit ne navodi kako bi se rezultati trebali nalaziti - prevođenje upita u oblik koji se može izvršiti u bazi podataka posao je sustava baze podataka, točnije optimizatora upita.
  • INSERT se koristi za dodavanje redaka (formalni skup) postojećoj tablici.
  • UPDATE se koristi za promjenu vrijednosti podataka u postojećem retku u tablici.
  • DELETE definicija postojećih redaka za brisanje iz tablice.

Može se reći da tri druge ključne riječi spadaju u DML grupu:

  • POČNI RAD (ili POČNI TRANSAKCIJU, ovisno o dijalektu SQL-a) može se koristiti za označavanje početka transakcije baze podataka koja će dovršiti sve ili nijednu.
  • COMMIT utvrđuje da se svi podaci mijenjaju nakon što se operacije spremaju.
  • ROLLBACK specificira da sve promjene podataka od posljednjeg urezivanja ili vraćanja unatrag trebaju biti uništene, do točke koja je predana bazi podataka kao "povratak".

COMMIT i ROLLBACK koriste se u područjima kao što su kontrola transakcija i zaključavanje. Obje instrukcije prekidaju sve trenutne transakcije (skupove operacija na bazi podataka) i otpuštaju sva zaključavanja pri promjeni podataka u tablicama. Prisutnost ili odsutnost BEGIN WORK ili slične izjave ovisi o specifičnoj implementaciji SQL-a.

Druga grupa ključnih riječi pripada grupi Jezik definicije podataka ili DDL (Jezik definicije podataka). DDL omogućuje korisniku da definira nove tablice i povezane stavke. Većina komercijalnih SQL baza podataka ima vlastita DDL proširenja koja omogućuju kontrolu nad nestandardnim, ali obično vitalnim elementima određenog sustava.
Glavne točke DDL-a su naredbe za stvaranje i brisanje.

  • CREATE definira objekte (kao što su tablice) koji će se kreirati u bazi podataka.
  • DROP određuje koji će postojeći objekti u bazi podataka biti ispušteni, obično trajno.
  • Neki sustavi baza podataka također podržavaju naredbu ALTER, koja korisniku omogućuje izmjenu postojećeg objekta na različite načine - na primjer, dodavanjem stupaca postojećoj tablici.

Treća skupina SQL ključnih riječi je Jezik kontrole podataka ili DCL (jezik kontrole podataka). DCL odgovoran je za prava pristupa podacima i omogućuje korisniku da kontrolira tko ima pristup za pregled ili manipulaciju podacima u bazi podataka. Ovdje postoje dvije glavne ključne riječi:

  • GRANT - Omogućuje korisniku izvođenje operacija
  • REVOKE - uklanja ili ograničava mogućnost korisnika za obavljanje operacija.

Sustavi baza podataka koji koriste SQL

  • InterBase
  • MySQL
  • Oracle
  • PostgreSQL
  • SQL Server

Kako postati profesionalac u izradi web stranica i početi zarađivati? Jeftini video tečajevi s uvodnim uvodom.

SQL JEZIK: MANIPULACIJA PODATAKA

U OVOM PREDAVANJU...

· Svrha jezika upita strukture (SQL) i njegova posebna uloga u radu s bazama podataka.

· Povijest nastanka i razvoja jezika SQL.

· Pisanje SQL naredbi.

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

· Konstrukcija SQL naredbi, koju karakteriziraju sljedeće značajke:

· Korištenje 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 GROUP BY klauzule;

· Primjena potupita;

· Upotreba stolnih spojeva;

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

· 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 danas vrlo raširen i zapravo je postao standardni jezik za relacijske baze podataka. SQL standard objavio je američki nacionalni institut za standarde (ANSI) 1986. godine, a 1987. Međunarodna organizacija za standardizaciju (ISO) usvojila je ovaj standard kao međunarodnu normu. SQL trenutno podržava stotine različitih vrsta sustava za upravljanje bazama podataka dizajniranih za široku paletu računalnih platformi, od osobnih računala do velikih računala.

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 s bazama podataka trebao bi korisniku pružiti sljedeće mogućnosti:

· Izraditi baze podataka i tablice s potpunim opisom njihove strukture;



· Izvođenje osnovnih operacija manipulacije podacima, kao što je umetanje, modificiranje i brisanje podataka iz tablica;

· Izvršavanje jednostavnih i složenih upita.

Osim toga, jezik za rad s bazama podataka treba rješavati 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, 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), 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 naredbe za kontrolu tijeka proračuna. Drugim riječima, ovaj jezik nije imao IF ... THEN ... ELSE, GO TO, DO ... WHILE ili bilo koje druge upute dizajnirane za kontrolu tijeka 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 stajališ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 ubaciti 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, pa treba naznačiti koje informacije se žele 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 s fiksnim stavkama na zaslonu.

· Strukturu naredbi 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] VRIJEDNOSTI ("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), menadžment tvrtke, 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 EF Codda, koji je u to vrijeme bio u IBM-ovom istraživačkom laboratoriju San Jose. 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; kasnije je ime morao biti promijenjen u SQL iz pravnih razloga - kraticu SEQUEL već su koristili filolozi. No, do danas mnogi ljudi i dalje izgovaraju SQL akronim kao "sequel", iako se službeno preporučuje čitanje kao "es-kyu-el".

Godine 1976., na temelju jezika SEQUEL / 2, IBM Corporation je izdala prototip DBMS-a pod nazivom "System R". Svrha ovog ispitivanja bila je ispitati izvedivost implementacije relacijskog 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 jezika SQUARE (Specifying Queries as Rational Expressions), koji je bio prethodnik projekta System R. Jezik SQUARE razvijen je kao istraživački alat za implementaciju relacijske algebre kroz fraze napisane na engleskom jeziku.

U kasnim 1970-ima, Oracle je izdala sadašnja Oracle Corporation. Možda je ovo prva od komercijalnih implementacija relacijskog DBMS-a izgrađenog na korištenju SQL jezika.

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

Ovaj je jezik bio strukturiraniji od SQL-a, ali je njegova semantika bila manje slična onoj običnog engleskog. Kasnije, kada je SQL usvojen kao standardni jezik relacijske baze podataka, INGRES je u potpunosti preveden u njegovu upotrebu. Godine 1981. IBM je izdao svoj prvi komercijalni sustav upravljanja relacijskim bazama podataka pod nazivom SQL / DS (za DOS / VSE). Godine 1982. izdana je verzija ovog sustava 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 Relation Database Language (RDL) temeljenom na konceptualnim dokumentima iz 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 izbačen je 1984., a nacrt jezika je redizajniran kako bi približio postojeće SQL implementacije.

Izvorna verzija standarda, koju je ISO izdao 1987., dobila je mnogo kritika. Konkretno, Date, poznati istraživač na tom području, istaknuo je da standard izostavlja kritične funkcije, uključujući referentni integritet i neke relacijske operatore.

Osim toga, istaknuo je pretjeranu suvišnost jezika - jedan te isti zahtjev mogao bi biti napisan u više različitih verzija. Većina kritika je utvrđena valjanom, a potrebne su prilagodbe standardu 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 sve funkcije koje različiti stručnjaci smatraju potrebnim definirani su i dogovoreni.za sličan jezik.

Godine 1989. ISO je objavio dodatak standardu koji definira funkcije integriteta podataka. Godine 1992. objavljena je prva veća revizija ISO standarda, koja se ponekad naziva 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č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, jer trenutno ne postoji dijalekt koji u potpunosti odgovara ISO standardu.

Štoviše, kako programeri baza podataka uvode nove funkcionalnosti u sustave, oni neprestano proširuju svoje SQL dijalekte, što rezultira da se pojedinačni dijalekti međusobno sve više razlikuju. Međutim, jezgra SQL jezika ostaje manje-više standardizirana u svim implementacijama.

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

Funkcionalnost SQL jezika

Osnovna funkcionalnost jezika SQL prikazana je u nastavku.

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

Kreiranje baze podataka... Naredba CREATE DATABASE koristi se za stvaranje nove baze podataka. U strukturi operatora naznačen je naziv baze podataka koju treba kreirati.

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). U SQL-u se koriste sljedeće vrste podataka:

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 booleova vrijednost.

Naredba create table specificira 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, određivanje stranog ključa (FOREIGNKEY) je bitno. 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 jačaju integritet podataka, kao što je ograničavanje skupa valjanih vrijednosti za određeni stupac.

Naredbu kreiranja tablice ne možete koristiti više puta za istu tablicu. Ako su nakon njegovog kreiranja pronađene netočnosti u njegovoj definiciji, tada možete napraviti promjene pomoću izraza ALTER TABLE. Ovaj operator je namijenjen za promjenu strukture postojeće tablice: možete izbrisati ili dodati polje postojećoj tablici.

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

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

Promjena podataka pretpostavlja 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

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

IZ stola

Klauzula WHERE nije obavezna; međutim, ako je ne uključite, svi će zapisi u tablici biti izbrisani. Korisno je koristiti izraz SELECT s istom sintaksom kao i 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, obradu nastalih pogrešaka 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 vraćanjem - automatski vraća stanje baze podataka na početku transakcije)

Dohvaćanje podataka Jedna je od najvažnijih funkcija baze podataka, kojoj odgovara izraz SELECT. Primjer korištenja operatora razmatran je u prethodnom odjeljku.

U SQL-u možete kreirati ugniježđene sekvence upita (potupite). Postoje određene vrste upita koje je najbolje implementirati pomoću potupita. Ovi zahtjevi 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 redovi u kojima su vrijednosti navedenog stupca iste. Naziv stupca je naznačen samo zajedno s nazivom tablice; inače će operator biti dvosmislen.

Možete koristiti druge vrste spajanja tablica: Naredba INTER JOIN osigurava da rezultirajući skup zapisa sadrži podudarne vrijednosti u povezanim poljima. Vanjski spojevi (OUTER JOIN) omogućuju uključivanje u rezultat upita svih redaka iz jedne tablice i odgovarajućih redaka iz druge

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

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

ODOBRITE ODABIR PROIZVODA X

Operator REVOKE opoziva sva prethodno dana ovlaštenja.

Ugradnja 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 s posebnim prefiksom, na primjer. ExecSQL. Struktura SQL izraza proširena je kako bi se prilagodila varijablama jezika domaćina u SQL izrazu.



SQL procesor mijenja prikaz 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, aplikacijski program (aplikacija) je samostalan modul.

SQL dijalekti

Moderni relacijski DBMS-ovi koriste SQL dijalekte za opisivanje i manipulaciju podacima. Podskup jezika SQL koji vam omogućuje stvaranje i opisivanje baze podataka naziva se DDL (Jezik definicije podataka).

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

Prvi jezični standard pojavio se 1989. - SQL-89 i podržavali su ga gotovo svi komercijalni relacijski DBMS-ovi. Bio je opće prirode i bio je otvoren za široka tumačenja. 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 shemom baze podataka. Nepotpunost standarda SQL-89 dovela je do pojave 1992. godine. sljedeća verzija jezika SQL.

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

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

Trenutno postoje tri razine jezika: početni, srednji i potpuni. Mnogi dobavljači svojih DBMS-a koriste vlastite SQL implementacije koje se temelje barem na početnoj razini odgovarajućeg ANSI standarda i koje sadrže neka proširenja specifična za DBMS. Stol 4.9 prikazuje primjere SQL dijalekata.

Tablica 4.9 SQL dijalekti

DBMS Jezik upita
Sustav 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 se temeljio na naredbi SQL2 SELECT i dodao je mogućnost usmjeravanja upita na objekt ili zbirku objekata, kao i mogućnost pozivanja metoda unutar jednog upita.

Kompatibilnost mnogih korištenih SQL dijalekata 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 jezika SQL kao što je Transact-SQL... Ovaj dijalekt se koristi u SYBASE SQL Serveru i može se koristiti u SYBASE SQL Anywhere zajedno s vlastitim SQL dijalektom - Watcom-SQL.

Kontrolna pitanja

1. Kako možete 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 dopušta postupak normalizacije tablice?

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

8. Koja je vrsta MS Access DBMS?

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

10. Za što se koriste osnovni SQL izrazi?

Vrhunski povezani članci