Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Vijesti
  • Svrha SQL jezika. Operateri manipulacije podacima

Svrha SQL jezika. Operateri manipulacije podacima

Structure Query Language (SQL) je stvoren kao rezultat razvoja relacionog modela podataka i trenutno je de facto jezički standard za relacioni DBMS. SQL jezik danas podržava veliki broj DBMS različitih tipova.

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 karakteristike:

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 jezik je relaciono 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:

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

DML (Jezik za upravljanje podacima) se koristi za preuzimanje i ažuriranje podataka.

SQL jezik je neproceduralan, tj. kada ga koristite, morate specificirati koje informacije se žele dobiti, a ne kako se one mogu dobiti. SQL naredbe su obične engleske riječi (SELECT, INSERT, itd.). Razmotrite prvo SQL DML izraze:

SELECT - dohvaćanje podataka iz baze podataka

INSERT - ubacivanje podataka u tabelu

AŽURIRANJE - ažuriranje podataka u tabeli

DELETE - brisanje podataka iz tabele

SELECT izraz

SELECT izraz izvodi akcije 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 select slijedi lista kolona razdvojenih zarezima čiji će podaci biti vraćeni kao rezultat upita. Ključna riječ from određuje iz koje tabele (ili pogleda) se podaci preuzimaju.

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 kolone i sve redove tabele, dovoljno je izdati SELECT * FROM tbl;

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

Zatražite rezultat

SELECT * FROM Product;

će biti cijela tabela Proizvod.

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 ako 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 reč where, praćena logičkim uslovom. Ako unos zadovoljava ovaj uslov, on se uključuje u rezultat. U suprotnom, unos se odbacuje.

Na primjer, odabir onih proizvoda iz tabele proizvoda čija cijena zadovoljava uvjet 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_ Cijena>500 I Cijena<3500. Допускается также использование выражений в условии: where Price>(1+1) i niz konstante: gdje je ime= "autobalansi".

Korištenje konstrukcije IZMEĐU var1 I var2 vam omogućava da provjerite da li vrijednosti izraza spadaju u interval 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 zapise koji sadrže vrijednost stringa abc u stupcu Col_name.

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

Sve zapise možete pronaći u tabeli proizvoda gdje vrijednost tipa počinje slovom "a" na sljedeći način:

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 se mora koristiti u obrascu 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 obrazac "%_%" vratiti sve zapise iz tabele. U ovom slučaju, obrazac treba napisati na sljedeći način:

"%|_%" ESCAPE "|"

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

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

Operator IS NULL vam omogućava da provjerite odsustvo (prisustvo) NULL vrijednosti u poljima tabele. Korištenje normalnih operatora poređenja u ovim slučajevima može dovesti do netačnih rezultata, jer poređenje sa NULL rezultira u NEPOZNATO (nepoznato). Dakle, uslov 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 da sortirate zapise po jednoj od kolona, ​​morate koristiti klauzulu ORDER BY, nakon koje je naznačeno ime 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 takođe mogu sortirati po više 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, onda će oni biti sortirani po polju col_name2.

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

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

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

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

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10

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

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

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

U ovom poglavlju...

  • Šta je SQL
  • SQL Misconceptions
  • Pogled na različite SQL standarde
  • Uvod u standardne SQL naredbe i rezervirane riječi
  • Predstavljanje brojeva, simbola, datuma, vremena i drugih vrsta podataka
  • Null vrijednosti i ograničenja
  • Korištenje SQL-a u sistemu klijent/server
  • 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 objasniću šta SQL jeste, a šta nije, posebno po čemu se SQL razlikuje od drugih tipova računarskih jezika. Tada ćete upoznati naredbe i tipove podataka koje standardni SQL podržava. Osim toga, objasnit ću osnovne koncepte kao što su nedefinisane vrednosti i ograničenja. Na kraju će biti dat pregled kako se SQL uklapa u klijent/server okruženje, kao i na Internet i intranete organizacija.

Šta SQL jeste, a šta nije

Prva stvar koju treba razumjeti o SQL-u je da on nije a 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 za drugom dok se zadatak ne završi. Procedura može biti linearna sekvenca ili sadržavati grane, ali u svakom slučaju programer specificira redoslijed izvršavanja.

Drugim riječima, SQL je neproceduralno jezik. Da ga koristite za rješavanje problema, recite SQL-u, sta tacno trebaš kao da razgovaraš sa duhom iz Aladinove lampe. I ne moraš da kažeš kako dobij šta želiš za sebe. Sistem za upravljanje bazom podataka (DBMS) će sam odlučiti kako najbolje ispuniti vaš zahtjev.

Dobro. Upravo sam rekao da SQL nije proceduralni jezik. U suštini, ovo je tačno. Međutim, milioni programera (a možda ste i vi jedan od njih) navikli su rješavati probleme proceduralno, tako da je posljednjih godina bio veliki pritisak da se dodaju neke proceduralne karakteristike SQL-u. Stoga, nova verzija SQL specifikacije, SQL:2003, sada uključuje funkcije proceduralnog jezika kao što su BEGIN blokovi, uvjetni IF izrazi, funkcije i procedure. Sa ovim novim funkcijama, programi se mogu pohraniti na server tako da ih mnogi korisnici mogu ponovo koristiti.

Da ilustrujem šta sam mislio kada sam rekao "reci sistemu šta tačno želiš", recimo da imate tabelu ZAPOSLENI sa podacima o zaposlenima i iz nje želite da izaberete sve redove koji odgovaraju svim "starijim" zaposlenima. "Stariji" radnici mogu značiti svakoga ko je stariji od 40 godina ili koji zarađuje više od 60.000 dolara godišnje. Odabir koji vam je potreban možete napraviti pomoću sljedećeg upita:

BIRAJTE * OD ZAPOSLENIKA GDE JE GOD >40 ILI PLATA >60000;

Ovaj izraz bira iz tablice EMPLOYEE sve redove u kojima je ili vrijednost stupca AGE (dob) veća od 40 ili vrijednost u stupcu SALARY (plata) veća od 60000. SQL sam zna kako odabrati informacije. Mehanizam baze podataka provjerava bazu podataka i sam odlučuje kako bi se upit trebao izvršiti. Sve što se od vas traži je da navedete koji su vam podaci potrebni.

Zapamtite:
Upit je pitanje koje postavljate bazi podataka. Ako bilo koji od njegovih podataka zadovoljava uvjete vašeg upita, onda vam ga SQL prosljeđuje
.

Modernim implementacijama SQL-a nedostaju mnoge jednostavne programske konstrukcije koje su fundamentalne za većinu drugih jezika. Svakodnevne aplikacije obično zahtijevaju barem neke od ovih konstrukcija, tako da je SQL zaista podjezik podaci. Čak i sa dodacima koji su se pojavili u SQL-u zajedno sa standardom SQL: 1999 i dodatnim proširenjima dodatim u SQL: 2003, i dalje morate koristiti jedan od programskih jezika sa SQL-om, kao što je C, na primjer, za kreirajte kompletnu aplikaciju.

Možete odabrati informacije iz baze podataka na jedan od sljedećih načina.

  • Sa jednim neprogramabilnim zahtjevom sa kompjuterske konzole, unošenjem SQL komande i čitanjem rezultata njenog izvršenja na ekranu. Konzola je tradicionalni izraz za računarski hardver koji obavlja posao tastature i ekrana koji se koriste u današnjim računarima. Zahtjevi konzole su korisni kada vam je potreban brz odgovor na određeni zahtjev. Da biste zadovoljili neke trenutne potrebe, možda će vam trebati podaci iz baze podataka koji nikada prije nisu bili potrebni. Možda vam više nikada neće trebati, ali sada su vam potrebni. Unesite odgovarajući SQL upit sa tastature i nakon nekog vremena rezultat će se pojaviti na vašem ekranu.
  • Uz pomoć programa koji izdvaja informacije iz baze podataka, a zatim kreira izvještaj na osnovu tih podataka, prikazan na ekranu ili odštampan. SQL jezik se također može koristiti na ovaj način. Složeni SQL upit, koji bi mogao biti koristan u budućnosti, može se postaviti direktno u program. Ovo vam omogućava da ga ponovo koristite u budućnosti. Dakle, formulacija upita se izvršava jednom. Kako umetnuti SQL kod u programe napisane na drugom jeziku opisano je u poglavlju 15.

Strukturirani jezik upita (strukturirani jezik upita) ili SQL- je deklarativni programski jezik za upotrebu u kvazirelacionim bazama podataka. Mnoge originalne karakteristike SQL-a su preuzeli računi tuple, ali nedavna proširenja SQL-a uključuju sve više i više relacijske algebre.
SQL je prvobitno kreirao IBM, ali mnogi dobavljači su razvili vlastite dijalekte. Usvojen je kao standard od strane američkog Nacionalnog instituta za standarde (ANSI) 1986. godine i od strane ISO 1987. godine. U Standardu SQL programskog jezika, ANSI je naveo da je službeni izgovor SQL-a "es cue el". Međutim, mnogi stručnjaci za baze podataka koristili su "sleng" izgovor "Sequel", koji odražava originalni naziv jezika, Sequel, koji je kasnije promijenjen zbog sukoba zaštitnih znakova i imena u IBM-u. Programiranje za početnike.
SQL programski jezik je revidiran 1992. i ova verzija je poznata kao SQL-92. Zatim je 1999 ponovo revidiran da postane SQL: 1999 (AKA SQL3). Programiranje za lutke. SQL 1999 podržava objekte koji ranije nisu bili podržani u drugim verzijama, ali je tek krajem 2001. samo nekoliko sistema za upravljanje bazom podataka podržavalo SQL implementacije: 1999.
SQL, iako je definiran kao ANSI i ISO, ima mnogo varijacija i proširenja, od kojih većina ima svoje karakteristike, kao što je implementacija "PL/SQL" korporacije Oracle ili implementacija Sybase i Microsoft pod nazivom "Transact-SQL", koja može zbuniti korisnika.osnove programiranja. Takođe nije neuobičajeno da komercijalne implementacije izostave podršku za ključne karakteristike standarda, kao što su tipovi podataka kao što su datum i vreme, u korist nekih svojih. Kao rezultat toga, za razliku od ANSI C ili ANSI Fortrana, koji se obično može prenijeti s platforme na platformu bez većih strukturnih promjena, upiti SQL programskog jezika rijetko se mogu prenositi između različitih sistema baza podataka bez većih modifikacija. Većina ljudi u polju baze podataka vjeruje da je ovaj nedostatak interoperabilnosti namjeran kako bi se svakom programeru obezbijedio vlastiti sistem upravljanja bazom podataka i vezao kupca za određenu bazu podataka.
Kao što ime govori, SQL programski jezik je dizajniran za specifičnu, ograničenu svrhu - ispitivanje podataka sadržanih u relacionoj bazi podataka. Kao takav, to je skup instrukcija programskog jezika za kreiranje uzoraka podataka, a ne proceduralni jezik poput C ili BASIC, koji su dizajnirani da riješe mnogo širi spektar problema. Proširenja jezika kao što je "PL/SQL" su dizajnirana da riješe ovo ograničenje dodavanjem proceduralnih elemenata SQL-u uz zadržavanje prednosti SQL-a. Drugi pristup je da se omogući SQL upitima da ugrade komande proceduralnog programskog jezika i komuniciraju sa bazom podataka. Na primjer, Oracle i drugi podržavaju jezik Java u bazi podataka, dok PostgreSQL dozvoljava pisanje funkcija u Perl, Tcl ili C.
Jedna SQL šala: "SQL nije ni strukturiran ni jezik." Poenta šale 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 * od T gdje je C1=1
C1 C2
1 a

Uz tabelu T, upit Select * from T će prikazati sve elemente svih redova u tabeli.
Iz iste tabele, upit Select C1 from T će prikazati elemente iz kolone C1 svih redova u tabeli.
Iz iste tabele, upit Select * from T gdje je C1=1 će prikazati sve elemente svih redova u kojima je vrijednost stupca C1 "1".

SQL ključne riječi

SQL riječi su podijeljene u nekoliko grupa.

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

  • SELECT je jedna od najčešće korištenih DML naredbi i omogućava korisniku da specificira upit kao opis željenog rezultata kao skupa. Upit ne specificira kako bi rezultati trebali biti postavljeni - prevođenje upita u formu koja se može obaviti u bazi podataka je posao sistema baze podataka, tačnije optimizatora upita.
  • INSERT se koristi za dodavanje redova (formalni skup) postojećoj tabeli.
  • UPDATE se koristi za promjenu vrijednosti podataka u postojećem redu tabele.
  • DELETE specificira postojeće redove koje treba ukloniti iz tabele.

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 se ili u potpunosti pokrenuti ili se uopće neće pokrenuti.
  • COMMIT navodi da se spremaju sve promjene podataka nakon što je operacija urezana.
  • ROLLBACK specificira da sve promjene podataka od posljednjeg urezivanja ili vraćanja unatrag treba odbaciti, do točke koja je predana bazi podataka kao "povratak".

COMMIT i ROLLBACK se koriste u područjima kao što su kontrola transakcija i zaključavanja. Obje instrukcije završavaju sve trenutne transakcije (skupove operacija baze podataka) i otpuštaju sva zaključavanja na promjeni podataka u tabelama. Prisustvo ili odsustvo BEGIN WORK ili sličnog izraza ovisi o određenoj implementaciji SQL-a.

Druga grupa ključnih riječi odnosi se na grupu Jezik definicije podataka ili DDL (Jezik definicije podataka). DDL omogućava korisniku da definira nove tabele i povezane elemente. Većina komercijalnih SQL baza podataka ima svoje DDL ekstenzije koje omogućavaju kontrolu nad nestandardnim, ali obično vitalnim elementima određenog sistema.
Glavne tačke DDL-a su naredbe za kreiranje i brisanje.

  • CREATE specificira objekte (kao što su tabele) koje treba kreirati u bazi podataka.
  • DROP specificira koji će postojeći objekti u bazi podataka biti ispušteni, obično trajno.
  • Neki sistemi baza podataka također podržavaju naredbu ALTER, koja omogućava korisniku da modificira postojeći objekt na različite načine, kao što je dodavanje stupaca postojećoj tablici.

Treća grupa SQL ključnih riječi je Jezik kontrole podataka ili DCL (jezik kontrole podataka). DCL je odgovoran za prava pristupa podacima i omogućava korisniku da kontroliše ko ima pristup da pregleda ili manipuliše podacima u bazi podataka. Ovdje postoje dvije glavne ključne riječi:

  • GRANT - omogućava korisniku da izvrši operacije
  • REVOKE - uklanja ili ograničava mogućnost korisnika da izvrši operacije.

Sistemi baza podataka koji koriste SQL

  • InterBase
  • MySQL
  • Oracle
  • PostgreSQL
  • SQL Server

Kako postati profesionalac u razvoju web stranica i početi zarađivati? Jeftini video kursevi sa uvodnim uvodom.

SQL JEZIK: MANIPULACIJA PODACIMA

U OVOM PREDAVANJU...

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

· Istorija nastanka i razvoja SQL jezika.

· Snimanje izraza SQL jezika.

· Odabir informacija iz baza podataka korištenjem naredbe SELECT.

konstrukciju SQL naredbi koje karakteriziraju sljedeće karakteristike:

· primjena klauzule WHERE za odabir redova koji zadovoljavaju različite uslove;

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

korištenje funkcija agregiranja SQL jezika;

Grupiranje odabranih podataka pomoću konstrukcije GROUP BY;

Upotreba podupita

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 sada postao veoma raširen i zapravo je postao standardni jezik za relacione 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, SQL jezik podržava stotine različitih tipova DBMS-a, dizajniranih za širok spektar računarskih platformi, u rasponu od personalnih računara do velikih računara.

Ovo poglavlje koristi ISO definiciju SQL jezika.

Uvod u SQL

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

Svrha SQL jezika

Svaki jezik dizajniran za rad sa bazama podataka treba da pruži korisniku sledeće karakteristike:

kreirati baze podataka i tabele sa potpunim opisom njihove strukture;



obavljaju osnovne operacije manipulacije podacima kao što su umetanje, modifikacija i brisanje podataka iz tabela;

Obavljajte jednostavne i složene upite.

Osim toga, jezik baze podataka treba da rješava 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, 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:

· Language Data Definition Language (DDL), dizajniran da definiše strukture baze podataka i kontroliše pristup podacima;

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

Prije pojave SQL3 standarda, SQL jezik je uključivao samo naredbe za definiranje i manipulaciju podacima; nedostajale su mu bilo kakve komande za kontrolu napretka proračuna. Drugim riječima, ovaj jezik nije imao IF ... THEN ...ELSE, GO TO, DO ... WHILE i bilo koje druge komande namijenjene kontroli toka 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 stanoviš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 da se SQL izrazi ugrade 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 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 kucate, pojedinačni elementi operatora nisu povezani sa fiksnim pozicijama na ekranu.

· Struktura komande je postavljena skupom 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]

GDJE [Cijena] > 10000;

· SQL jezik može da koristi širok spektar korisnika, uključujući administratore baza podataka (DBA), rukovodioce kompanija, 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 ključnog 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 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 skraćenicu SQL kao "sequel", iako se zvanično preporučuje da se čita kao "es-kyu-el".

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

Krajem 1970-ih, kompanija koja je sada postala Oracle Corporation objavila je Oracle bazu podataka. Možda je ovo prva komercijalna implementacija relacionog DBMS-a izgrađenog koristeći SQL jezik.

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

Ovaj jezik je bio više strukturiran od SQL-a, ali je njegova semantika manje bliska običnom engleskom. Kasnije, kada je SQL usvojen kao standardni jezik za relacione baze podataka, INGRES DBMS je u potpunosti preveden da ga koristi. 1981. IBM je objavio svoj prvi komercijalni relacijski DBMS 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 već pod imenom DB2.

Godine 1982., Američki nacionalni institut za standarde (ANSI) započeo je rad na jeziku baze podataka relacija (RDL) na osnovu koncept papira primljenih od 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. Naziv RDL je odbačen 1984. godine, a nacrt jezika je redizajniran kako bi se približio postojećim implementacijama SQL jezika.

Originalna verzija standarda, koju je ISO objavio 1987. godine, izazvala je val kritika. Konkretno, Date, poznati istraživač u ovoj oblasti, istakao je da standard izostavlja važne karakteristike, uključujući objekte referentnog integriteta i neke relacione operatore.

Osim toga, primijetio je pretjeranu redundantnost jezika - isti upit bi mogao biti napisan u nekoliko različitih verzija. Većina kritika je prepoznata kao pravedna, a potrebna su prilagođavanja standarda i prije njegovog objavljivanja. Međutim, odlučeno je da je važnije da se standard objavi što je prije moguće 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 karakteristike koje različiti stručnjaci usvoje. smatraju obaveznim definisani su i dogovoreni za takav jezik.

1989. ISO je objavio dodatak standardu koji je definirao funkcije podrške integritetu podataka. 1992. godine objavljena je prva veća revizija ISO standarda, ponekad nazivana SQL2 ili SQL-92. Iako su neke od karakteristika po prvi put definirane u ovom standardu, mnoge od njih su već u potpunosti ili djelimič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č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, kao što trenutno ne postoji dijalekt koji u potpunosti odgovara ISO standardu.

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

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

Funkcionalnost SQL jezika

Glavne funkcionalnosti SQL jezika su date u nastavku.

Definicija podataka. Ova SQL funkcija je opis podržane strukture 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. Struktura izraza specificira ime baze podataka koja se kreira.

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). 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 logička vrijednost.

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

Tablica 4.8 Ograničenja za definirane podatke

Za relacijski model podataka, bitno je specificirati strani ključ (FOREIGNKEY). 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 osiguravaju 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 od jednom u istoj tablici. Ako su, nakon njegovog kreiranja, pronađene netočnosti u njegovoj definiciji, tada se promjene mogu izvršiti korištenjem naredbe ALTER TABLE. Ova izjava je namijenjena za promjenu strukture postojeće tablice: možete izbrisati ili dodati polje postojećoj tablici.

Manipulacija podacima. SQL dozvoljava korisniku ili aplikaciji da promijeni 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 uključuje promjene vrijednosti u jednoj ili više kolona tabele i izvodi se pomoću naredbe UPDATE. primjer:

SET iznos=iznos+1000,00

WHERE suma>0

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

OD stola

Klauzula WHERE je opciona, međutim, ako nije uključena, svi zapisi u tabeli će biti izbrisani. Korisno je koristiti naredbu SELECT s istom sintaksom kao naredba DELETE da unaprijed provjerite 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, rukovanje greškama koje nastaju 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 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 dijelu.

U SQL-u možete kreirati ugniježđene nizove upita (potupita). Postoje određene vrste upita koje je najbolje implementirati korištenjem potupita. Ovi upiti uključuju takozvane provjere postojanja. Pretpostavimo da želite da dobijete podatke o učenicima koji nemaju ocjenu "sedam". Ako se vrati prazan skup, 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đene kolone (polja). Tada će se iz povezanih tabela preuzeti samo oni redovi u kojima se poklapaju vrijednosti navedene kolone. Ime kolone je naznačeno samo zajedno sa imenom tabele; u suprotnom, operator će biti dvosmislen.

Možete koristiti druge vrste povezivanja tablica: INTER JOIN operator (unutrašnje spajanje) osigurava prisutnost u rezultirajućem skupu zapisa, odgovarajućim vrijednostima u povezanim poljima. Vanjska spajanja (OUTER JOIN) vam omogućavaju da u rezultat upita uključite sve redove iz jedne tabele i njihove odgovarajuće redove iz druge

Kontrole pristupa. SQL omogućava sinhronizaciju obrade baze podataka raznim aplikativnim programima, 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 su postavljene dozvole i same dozvole. Na primjer, izraz GRANT daje korisniku X mogućnost da dohvati podatke iz tablice PRODUCT:

ODOBRITE IZBOR PROIZVODA X

Izjava REVOKE opoziva sve prethodno date dozvole.

Ugrađivanje 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 sa posebnim prefiksom, na primjer. ExecSQL. Struktura SQL naredbi je proširena za prilagođavanje varijabli jezika domaćina u SQL konstrukcijama.



SQL procesor modificira formu 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, primijenjeni program (aplikacija) je samostalan modul.

SQL dijalekti

U modernom relacionom DBMS-u, dijalekti SQL jezika se koriste 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).

SQL se prvobitno zvao SEQUEL (Structured English Query Language), zatim SEQUEL/2, a onda samo 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-a. Bio je opšte prirode i dozvoljavao je široko tumačenje. Prednosti SQL-89 se mogu smatrati standardizacijom sintakse i semantike operatora odabira i manipulacije podacima, kao i fiksiranje sredstava za ograničavanje integriteta baze podataka. Međutim, nedostajao je tako važan dio kao što je manipulacija šemom baze podataka. Nepotpunost standarda SQL-89 dovela je do pojave 1992. godine sljedeća verzija SQL jezika.

SQL2 (ili SQL-92) pokriva skoro sve što vam je potrebno: manipulaciju šemom baze podataka, upravljanje transakcijama i sesijama, klijent-server arhitekture ili alate za razvoj aplikacija.

Sljedeći korak u razvoju jezika je varijanta SQL 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 baza podataka koriste vlastite implementacije SQL-a, bazirane barem na početnom nivou relevantnog ANSI standarda, i koje sadrže neke ekstenzije specifične za određeni DBMS. U tabeli. 4.9 pokazuje primjere SQL dijalekata.

Tablica 4.9 SQL dijalekti

DBMS Jezik upita
DBMS sistem 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 jezik upita objekata OQL (Object Query Language). OQL jezik je bio baziran na SQL2 SELECT naredbi 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-om. Jedna od strana ove kompatibilnosti je podrška u SYBASE SQL Anywhere takvog dijalekta SQL jezika kao što je Transact SQL. Ovaj dijalekt se koristi u SYBASE SQL Serveru i može se koristiti u SYBASE SQL bilo gdje zajedno sa vlastitim dijalektom SQL jezika - watcom-sql.

test pitanja

1. Kako se DBMS može klasificirati?

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 vam omogućava procedura normalizacije tabele?

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

8. Koja vrsta DBMS-a je MS Access?

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

10. Za šta se koriste osnovni SQL izrazi?

Top Related Articles