Kako podesiti pametne telefone i računare. Informativni portal

Šta je SQL. Funkcionalnost SQL jezika

02/07/07 11.6K

Uvod u upravljanje relacionim bazama podataka

sql se često naziva esperanto jezikom za sisteme upravljanja bazama podataka (DBMS). Zaista, ne postoji drugi jezik na svijetu za rad sa bazama podataka (DB), koji bi se tako široko koristio u programima. Prvi sol standard pojavio se 1986. godine i do sada je stekao univerzalno prihvaćanje. Može se koristiti čak i kada se radi sa nerelacionim DBMS-om. Za razliku od drugih softverskih alata, kao što su C i Cobol, koji su domen profesionalnih programera, sql koriste stručnjaci iz raznih oblasti. Programeri, DBMS administratori, poslovni analitičari - svi oni uspješno obrađuju podatke koristeći sql. Poznavanje ovog jezika korisno je svima koji se moraju baviti bazom podataka.

U ovom članku ćemo pokriti osnovne koncepte sql-a. Ispričat ćemo njegovu pozadinu (i usput razbiti nekoliko mitova). Upoznaćete se sa relacionim modelom i moći ćete da steknete prve veštine u radu sa sql-om, koje će vam pomoći u daljem savladavanju jezika.

Da li je teško naučiti sql? Zavisi koliko ćete duboko ući u suštinu. Da biste postali profesionalac, morate mnogo naučiti. Jezik sql počeo je 1974. godine kao predmet malog istraživačkog rada od 23 stranice i od tada je prešao dug put. Tekst trenutnog standarda - službenog dokumenta "međunarodni standardni jezik baze podataka sql" (obično nazvan sql-92) - sadrži preko šest stotina stranica, ali ne govori ništa o specifičnostima sol verzija implementiranih u DBMS Microsoft, oracle, sybase itd. Jezik je toliko razvijen i raznovrstan da bi samo nabrajanje njegovih karakteristika zahtevalo nekoliko članaka u časopisima, a ako sakupite sve što je napisano na temu sol, dobijate višetomnu biblioteku.

Međutim, za običnog korisnika uopće nije potrebno poznavati sql u cijelosti. Baš kao i turist koji se nađe u zemlji u kojoj govore nerazumljivim jezikom, dovoljno je naučiti samo nekoliko uobičajenih izraza i gramatičkih pravila, pa u sql-u - znajući malo, možete dobiti mnogo korisnih rezultata. U ovom članku ćemo pogledati osnovne sql komande, pravila za postavljanje kriterija za odabir podataka i pokazati kako doći do rezultata. Kao rezultat toga, moći ćete samostalno kreirati tabele i unositi informacije u njih, sastavljati upite i raditi s izvještajima. Ovo znanje može postati osnova za dalji samostalni razvoj sql-a.

Šta je sql?

sql je specijalizovani neproceduralni jezik koji vam omogućava da opišete podatke, odaberete i obradite informacije iz relacionog DBMS-a. Specijalizacija znači da je sol namijenjen samo za rad sa bazom podataka; nemoguće je stvoriti punopravni sistem aplikacija koristeći samo sredstva ovog jezika - za to ćete morati koristiti druge jezike u koje možete ugraditi sql naredbe. Stoga se sql naziva i pomoćnim jezičkim alatom za obradu podataka. Pomoćni jezik se koristi samo u kombinaciji sa drugim jezicima.

U aplikacijskom jeziku opšte namene, obično postoje sredstva za kreiranje procedura, ali u sql-u oni nisu. Ne može se koristiti za specificiranje kako bi se određeni zadatak trebao izvršiti, već samo za određivanje o čemu se točno radi. Drugim riječima, kada radimo sa sql-om, zanimaju nas rezultati, a ne procedure za njihovo dobijanje.

Najvažnije svojstvo sql-a je mogućnost pristupa relacionim bazama podataka. Mnogi ljudi čak misle da su izrazi "sql-processed database" i "relational database" sinonimi. Međutim, uskoro ćete vidjeti da postoji razlika između njih. Standard sql-92 čak nema ni termin relacija.

Šta je relacioni DBMS?

Ne ulazeći u detalje, relacioni DBMS je sistem zasnovan na modelu upravljanja relacionim podacima.

Koncept relacionog modela je prvi put predložen u radu dr. E. F. Codda, objavljenom 1970. godine. U njemu je opisan matematički aparat za strukturiranje i upravljanje podacima, a takođe je predložen apstraktni model za predstavljanje bilo koje stvarne informacije. Prije toga, prilikom korištenja baze podataka, bilo je potrebno voditi računa o specifičnostima pohranjivanja informacija u nju. Ako je interna struktura baze podataka promijenjena (na primjer, u cilju povećanja performansi), aplikativni programi su morali biti prerađeni, čak i ako nije bilo promjena na logičkom nivou. Relacioni model je omogućio da se posebne karakteristike skladištenja podataka odvoje od nivoa aplikacijskog programa. Zaista, model ne opisuje kako se informacije pohranjuju i pristupaju. U obzir se uzima samo način na koji korisnik percipira ove informacije. Zahvaljujući pojavi relacionog modela, pristup upravljanju podacima se kvalitativno promijenio: od umjetnosti se pretvorio u nauku, što je dovelo do revolucionarnog razvoja industrije.

Osnovni koncepti relacionog modela

Prema relacionom modelu, relacija je neka vrsta tabele sa podacima. Relacija može imati jedan ili više atributa (obilježja) koji odgovaraju stupcima ove tablice i neki skup (moguće prazan) podataka koji predstavlja skupove ovih atributa (oni se nazivaju n-arnim tuples, ili zapisi) i koji odgovaraju redovima stola.

Za bilo koji tuple, vrijednosti atributa moraju pripadati takozvanim domenama. U stvari, domen je neki skup podataka koji definira skup svih važećih vrijednosti.

Pogledajmo primjer. Neka postoji domen Dani u sedmici koji sadrži vrijednosti od ponedjeljka do nedjelje. Ako relacija ima atribut DayWeek koji odgovara ovoj domeni, tada svaki tuple u vezi mora imati jednu od navedenih vrijednosti u stupcu DayWeek. Pojavljivanje vrijednosti Januar ili Cat nije dozvoljeno.

Napomena: atribut mora imati jednu od važećih vrijednosti. Zabranjeno je navođenje više vrijednosti odjednom. Dakle, pored zahtjeva da vrijednosti atributa pripadaju određenom domenu, mora se poštovati i uvjet njegove atomicnosti. To znači da za ove vrijednosti nije dozvoljena dekompozicija, odnosno da se ne mogu razbiti na manje dijelove bez gubitka glavnog značenja. Na primjer, ako bi vrijednost atributa istovremeno sadržavala ponedjeljak i utorak, tada bi se mogla razlikovati dva dijela, zadržavajući izvorno značenje - Dan u sedmici; stoga, ova vrijednost atributa nije atomska. Međutim, ako pokušate da razbijete značenje "ponedjeljka" na dijelove, dobićete skup pojedinačnih slova - od "P" do "K"; izvorno značenje je izgubljeno, pa je vrijednost "ponedeljak" atomska.

Veze imaju i druga svojstva. Najznačajniji od njih je matematičko svojstvo zatvorenih operacija. To znači da se kao rezultat izvođenja bilo koje operacije na relaciji mora pojaviti nova relacija. Ovo svojstvo vam omogućava da dobijete predvidljive rezultate prilikom izvođenja matematičkih operacija nad relacijama. Osim toga, postaje moguće predstaviti operacije kao apstraktne izraze sa različitim nivoima ugniježđenja.

U svom originalnom radu, dr. Codd je definisao skup od osam operatora koji se naziva relacioni algebra. Četiri operatora—unija, logičko množenje, razlika i kartezijanski proizvod—prenesena su iz tradicionalne teorije skupova; ostali operatori su kreirani posebno za rukovanje odnosima. Naknadni rad dr. Codd, Chris Date i drugih predložio je dodatne operatere. Kasnije u ovom članku će se razmatrati tri relacijske operatora - proizvodnja (projekat), ograničenja (odaberite ili ograničite) i stapanje (pridruživanje).

sql i relacijski model

Sada kada ste upoznati sa relacionim modelom, zaboravimo na njega. Naravno, ne zauvijek, već samo da objasnim sljedeće: iako je u razvoju sql-a korišten relacijski model koji je predložio dr. Codd, između njih ne postoji potpuna ili doslovna korespondencija (ovo je jedan od razloga zašto sql-92 standard ne sadrži termin relacija). Na primjer, termini sql tabela i relacija nisu ekvivalentni, jer tabele mogu imati nekoliko identičnih redova odjednom, dok identični tuple nisu dozvoljeni u odnosima. Pored toga, sql ne omogućava upotrebu relacionih domena, iako tipovi podataka igraju ulogu u određenoj meri (neki uticajni zagovornici relacionog modela sada pokušavaju da relacione domene uključe u budući sql standard).

Nažalost, neusklađenost između sql-a i relacionog modela stvorila je mnogo nesporazuma i kontroverzi tokom godina. Ali pošto je glavna tema članka proučavanje sql-a, a ne relacionog modela, ovi problemi se ovdje ne razmatraju. Samo imajte na umu da postoje razlike između pojmova koji se koriste u sql-u i u relacionom modelu. Dalje u članku će se koristiti samo termini prihvaćeni u sql-u. Umjesto relacija, atributa i tuple-a, koristićemo njihove sql parnjake: tabele, kolone i redove.

statički i dinamički sql

Možda ste već upoznati sa terminima kao što su statički i dinamički sql. Sql upit je statičan ako je preveden i optimiziran u fazi prije izvođenja programa. Već smo spomenuli jedan oblik statičkog sql-a kada smo govorili o ugrađivanju sql komandi u C ili Cobol programe (postoji i drugi naziv za takve izraze - embedded sql). Kao što verovatno možete pretpostaviti, dinamički sql upit se kompajlira i optimizuje tokom izvršavanja programa. Po pravilu, obični korisnici koriste dinamički sql, koji im omogućava da kreiraju upite u skladu sa trenutnim potrebama. Jedna od opcija za korištenje dinamičkih sql upita je njihov interaktivni ili direktni poziv (postoji čak i poseban termin - directsql), kada se upiti poslani na obradu unose interaktivno sa terminala. Između statičkog i dinamičkog sql-a postoje određene razlike u sintaksi korišćenih struktura i karakteristikama izvršenja, međutim, ova pitanja su van okvira ovog članka. Napominjemo samo da su radi jasnoće razumijevanja primjeri dati u obliku direktnih sql upita, jer to omogućava ne samo programerima, već i većini krajnjih korisnika da nauče kako koristiti sql.

kako naučiti sql

Sada ste spremni za pisanje svojih prvih sql upita. Ako imate pristup bazi podataka preko sql-a i želite koristiti naše primjere u praksi, uzmite u obzir sljedeće: morate se prijaviti kao korisnik s neograničenim privilegijama i trebat će vam softverski alati za interaktivnu obradu sql upita (ako je u pitanju o mrežnoj bazi podataka, trebali biste razgovarati sa administratorom baze podataka o dodjeli odgovarajućih prava). Ako nemate pristup bazi podataka preko sql-a, nemojte se uznemiravati: svi primjeri su vrlo jednostavni i možete ih shvatiti "na suho", bez pristupa stroju.

Da biste izvršili bilo koju radnju u sql-u, morate izvršiti izraz u sql jeziku. Postoji nekoliko tipova izraza, ali se među njima mogu razlikovati tri glavne grupe: ddl-naredbe (jezik definicije podataka - jezik opisa podataka), dml-naredbe (jezik za manipulaciju podacima - jezik za manipulaciju podacima) i alati za kontrolu podataka. Dakle, na neki način, tri različita jezika su kombinovana u sql.

Opis podataka Jezične naredbe

Počnimo s jednom od glavnih ddl naredbi - kreiraj tablicu (Kreiraj tablicu). Postoji nekoliko tipova tabela u sql-u, a glavne su dvije vrste: baza (baza) i selektivna (pregledi). Osnovne tabele su tabele koje se odnose na podatke iz stvarnog života; selektivno - to su "virtuelne" tabele koje se kreiraju na osnovu informacija dobijenih iz osnovnih tabela; ali korisnicima, obrasci izgledaju kao obične tabele. Naredba kreiranje tablice služi za kreiranje osnovnih tablica.

U komandi za kreiranje tabele morate navesti ime tabele, navesti listu kolona i tipove podataka koje sadrže. Drugi opcioni elementi takođe mogu biti prisutni kao parametri, ali prvo, pogledajmo samo glavne parametre. Pokažimo najjednostavniji sintaktički oblik za ovu naredbu:

kreirati tablicu Ime tablice (Tip podataka stupca) ;

create i table su sql ključne riječi; TableName, Column i DataType su formalni parametri, umjesto kojih korisnik svaki put unosi stvarne vrijednosti. Parametri Column i DataType su zatvoreni u zagradama. U sql-u, zagrade se obično koriste za grupisanje pojedinačnih elemenata. U ovom slučaju vam omogućavaju da kombinujete definicije za kolonu. Tačka i zarez na kraju je separator naredbi. Mora dovršiti bilo koji izraz u sql jeziku.

Razmotrimo primjer. Pretpostavimo da želite da kreirate tabelu za pohranjivanje podataka o svim sastancima (sastancima). Da biste to učinili, unesite naredbu u sql:

kreirati tabelu sastanci (appointment_date datum) ;

Nakon izvršenja ove naredbe, kreiraće se tabela pod nazivom termini, u kojoj postoji jedna kolona datum_apotenta, koja može pohraniti podatke tipa datum. Pošto podaci još nisu uneseni, broj redova u tabeli je nula (upotrebom naredbe kreiranje tabele samo se definiše tabela; stvarne vrednosti se unose komandom umetanja, o čemu će biti reči kasnije).

Parametri imenovanja i appointment_date nazivaju se identifikatori jer specificiraju imena za specifične objekte baze podataka, u ovom slučaju imena za tablicu i stupac, respektivno. Postoje dvije vrste identifikatora u sql-u: regularni (obični) i namjenski (razdvojeni). Identifikatori sa razdvojenim oznakama su zatvoreni u dvostrukim navodnicima i razlikuju velika i mala slova. Redovni identifikatori se ne razlikuju nikakvim ograničenim znakovima i ne razlikuju velika i mala slova. Ovaj članak koristi samo regularne identifikatore.

Simboli koji se koriste za izradu identifikatora moraju slijediti određena pravila. Uobičajeni identifikatori mogu koristiti samo slova (ne nužno latinična, već i druga pisma), brojeve i donju crtu. Identifikator ne smije sadržavati interpunkciju, razmake ili posebne znakove (#, @, % ili!); također, ne može početi cifrom ili donjom crtom. Možete koristiti zasebne sql ključne riječi za identifikatore, ali to se ne preporučuje. Identifikator je namijenjen da označi neki objekat, tako da mora imati jedinstveno (unutar određenog konteksta) ime: ne možete kreirati tabelu sa imenom koje se već nalazi u bazi podataka; Ne možete imati kolone sa istim imenom u istoj tabeli. Usput, imajte na umu da su termini i termini ista imena za sql. Nije moguće kreirati novi identifikator samo promjenom velikih i malih slova.

Iako tabela može imati samo jednu kolonu, u praksi su obično potrebne tabele sa više kolona. Naredba za kreiranje takve tablice općenito izgleda ovako:

kreirajte tablicu ImeTablice (Stupac Tipa podataka [ (, Stupaca Tipa Podataka) ]) ;

Uglaste zagrade se koriste za označavanje opcionih elemenata, vitičaste zagrade sadrže elemente koji mogu biti lista jednosmjernih konstrukcija (prilikom unosa prave sql komande, nijedna od ovih zagrada se ne stavlja). Ova sintaksa vam omogućava da navedete bilo koji broj kolona. Imajte na umu da drugom elementu prethodi zarez. Ako na listi postoji nekoliko parametara, oni su međusobno odvojeni zarezima.

kreirati tabelu appointments2 (datum_appointmenta datum, vrijeme_zabilježbe vrijeme, opis varchar (256)) ;

Ova naredba kreira tabelu termina2 (nova tabela mora imati drugačije ime, pošto je tabela sastanaka već prisutna u bazi podataka). Kao i prva tabela, ima kolonu appointment_date za zapisivanje datuma termina; pored toga, postoji kolona appointment_time za snimanje vremena ovih sastanaka. Parametar opisa je tekstualni niz koji može sadržavati do 256 znakova. Tip specificiran za ovaj parametar je varchar (skraćeno od karaktera varira), budući da nije unaprijed poznato koliko će prostora biti potrebno za zapis, ali je jasno da opis neće trajati više od 256 karaktera. Kada se opisuje parametar u tipu niza znakova (i nekim drugim tipovima), dužina parametra je specificirana. Njegova vrijednost je data u zagradama desno od naziva tipa.

Možda ste primijetili da je u dva razmatrana primjera unos naredbe drugačije formatiran. Ako je u prvom slučaju naredba potpuno postavljena u jedan red, onda se u drugom, nakon prve otvorene zagrade, unos nastavlja iz novog reda, a definicija svake sljedeće kolone počinje iz novog reda. U sql-u ne postoje posebni zahtjevi za formatiranje zapisa. Razbijanje zapisa u redove olakšava čitanje. Jezik sql omogućava, prilikom pisanja naredbi, ne samo da se naredba razbije na redove, već i da se umetnu uvlake na početku redaka i razmaci između elemenata zapisa.

Sada kada znate osnovna pravila, pogledajmo složeniji primjer kreiranja tabele sa više kolona. Na početku članka prikazana je tabela zaposlenih. Sadrži sljedeće kolone: ​​prezime, ime, datum zaposlenja, odjeljenje, kategoriju i platu za godinu. Sljedeća sql naredba se koristi za definiranje ove tablice:

kreirajte tabelu zaposlenih (znak prezimena (13) nije null, znak imena (10) nije null, datum_unajmljivanja, znak podružnice (15) , nivo_razreda smallint , decimala za platu (9 , 2)) ;

Postoji nekoliko novih elemenata u timu. Prvi je izraz koji nije null na kraju definicija stupca last_name i first_name. Uz pomoć takvih struktura postavljaju se zahtjevi koji se moraju poštovati. U ovom slučaju je naznačeno da se polja prezime i ime moraju popuniti prilikom unosa; ne možete ostaviti ove kolone prazne (ovo je sasvim logično: kako možete identifikovati zaposlenog a da mu ne znate ime?).

Osim toga, postoje tri nova tipa podataka u primjeru: karakter, smallint i decimalni. Do sada nismo mnogo pričali o tipovima. Iako u sql-u nema relacijskih domena, postoji skup osnovnih tipova podataka. Ove informacije se koriste prilikom dodjeljivanja memorije i poređenja vrijednosti; u određenoj mjeri sužava listu mogućih ulaznih vrijednosti, ali kontrola tipa u sql-u je manje stroga nego u drugim jezicima.

Svi tipovi podataka dostupni u sql-u mogu se podijeliti u šest grupa: znakovni nizovi, tačne numeričke vrijednosti, približne numeričke vrijednosti, nizovi bitova, datum i vrijeme i intervali. Naveli smo sve varijacije, ali ovaj članak će pokriti samo neke od njih u detalje (na primjer, nizovi bitova nisu od posebnog interesa za obične korisnike).

Usput, ako ste mislili da je datum i vrijeme greška u kucanju, onda se varate. Ova grupa (datetime) uključuje većinu vremenskih tipova podataka koji se koriste u sql-u (parametri kao što su vremenski intervali su u zasebnoj grupi). U prethodnom primjeru već su se naišla dva tipa podataka iz grupe datuma i vremena - datum i vrijeme.

Sljedeći tip podataka koji vam je već poznat je promjena znakova (ili samo varchar); pripada grupi znakovnih nizova. Ako se varchar koristi za pohranjivanje nizova promjenjive dužine, tada je tip char koji se susreće u trećem primjeru namijenjen za pisanje nizova s ​​fiksnim brojem znakova. Na primjer, kolona prezime_name će sadržavati nizove od 13 znakova, bez obzira na prezimena koja su stvarno unesena, bilo da se radi o poe ili penworth-chickering (u slučaju poe, preostalih 10 znakova će biti popunjeno razmacima).

Sa korisničke tačke gledišta, varchar i char imaju isto značenje. Zašto je bilo potrebno uvesti dvije vrste? Činjenica je da u praksi obično morate pronaći kompromis između brzine i uštede prostora na disku. U pravilu, korištenje nizova fiksne dužine daje određeni dobitak u brzini pristupa, međutim, ako je dužina niza preduga, prostor na disku se gubi. Ako se u terminima2 za svaki red komentara rezerviše 256 karaktera, onda se to može pokazati neracionalnim; najčešće će redovi biti mnogo kraći. S druge strane, prezimena također imaju različite dužine, ali obično zahtijevaju oko 13 karaktera; u ovom slučaju gubici će biti minimalni. Postoji dobro pravilo: ako se zna da se dužina stringa malo mijenja ili je relativno mala, onda koristite char; inače, varchar.

Sljedeća dva nova tipa podataka, smallint i decimal, pripadaju grupi točnih numeričkih vrijednosti. smallint je skraćenica za mali cijeli broj. SQL također pruža cjelobrojni tip podataka. Prisustvo dva slična tipa u ovom slučaju također se objašnjava razmatranjem uštede prostora. U našem primjeru, grade_level vrijednosti se mogu predstaviti kao dvocifreni broj, tako da se koristi tip smallint; međutim, u praksi nije uvijek poznato koje maksimalne vrijednosti parametri mogu imati. Ako nema takve informacije, onda koristite cijeli broj. Stvarni prostor za skladištenje parametara smallint i integer i odgovarajući raspon vrijednosti za ove parametre su specifični za platformu.

Decimalni tip podataka, koji se obično koristi za finansijsko računovodstvo, omogućava vam da navedete obrazac sa željenim brojem decimalnih mesta. Budući da se ovaj tip koristi za tačnu numeričku notaciju, garantuje preciznost pri izvođenju matematičkih operacija nad decimalnim podacima. Ako koristite tipove podataka iz grupe približnih numeričkih zapisa za decimalne vrijednosti, kao što je float (broj s pomičnim zarezom), to će dovesti do grešaka zaokruživanja, tako da ova opcija nije prikladna za finansijske proračune. Sljedeća notacija se koristi za definiranje parametara decimalnog tipa:

gdje je p broj decimalnih mjesta, d je broj decimalnih mjesta. Umjesto p, u korištene vrijednosti treba upisati ukupan broj značajnih cifara, a umjesto d broj cifara iza decimalnog zareza.

Bočna traka "Kreiranje tabele" prikazuje kompletan sažetak naredbe kreiranje tabele. Sadrži nove elemente i prikazuje format za sve razmatrane tipove podataka (U principu postoje i drugi tipovi podataka, ali ih još ne razmatramo).

U početku se može činiti da je sintaksa sql komandi previše komplicirana. Ali to možete lako shvatiti ako pažljivo proučite gornje primjere. Na dijagramu se pojavio dodatni element - okomita linija; služi za razlikovanje između alternativnih dizajna. Drugim riječima, kada definirate svaki stupac, morate odabrati odgovarajući tip podataka (kao što se sjećate, neobavezni parametri su zatvoreni u uglaste zagrade, a konstrukcije koje se mogu ponoviti mnogo puta u vitičastim zagradama; ovi posebni znakovi nisu upisani u stvarnom sql komande). Prvi dio sheme prikazuje puna imena za tipove podataka, drugi dio prikazuje njihove skraćene nazive; u praksi se može koristiti bilo koji od njih.

Prvi dio članka je završen. Drugi će biti posvećen proučavanju naredbi za umetanje, odabir, ažuriranje i brisanje dml. Takođe, razmatraće se uslovi uzorkovanja podataka, poređenje i logički operatori, upotreba nul vrednosti i ternarna logika.

Kreiranje tabele. Sintaksa naredbe za kreiranje tabele: opcioni parametri su naznačeni u uglastim zagradama, ponavljajuće konstrukcije su naznačene u vitičastim zagradama.

kreirajte tabelu tabele (znak kolone (dužina) [ograničenje] | karakter varira (dužina) [ograničenje] | datum [ograničenje] | vreme [ograničenje] | ceo broj [ograničenje] | smallint [ograničenje] | decimalni (preciznost, decimalna mesta) [ ograničenje ] | float (preciznost) [ ograničenje ] [( , kolona char (dužina) [ ograničenje ] | varchar (dužina) [ ograničenje ] | datum [ ograničenje ] | vrijeme [ ograničenje ] | int [ ograničenje ] | smallint [ ograničenje ] | dec (preciznost, decimalna mjesta) [ograničenje] | float (preciznost) [ograničenje])]) ;

tajno ime sql

Početkom 1970-ih ibm je počeo primjenjivati ​​u praksi model relacijske baze podataka koji je predložio dr. Codd. Donald Chamberlin i grupa drugih u Jedinici za napredna istraživanja stvorili su prototip jezika koji se naziva strukturirani engleski jezik upita ili jednostavno nastavak. Kasnije je proširen i poboljšan. Nova varijanta koju je predložio IBM zove se sequel/2. Korišten je kao programsko sučelje (api) za dizajniranje prvog IBM-ovog sistema relacijske baze podataka, system/r. Iz pravnih razloga, ibm je odlučio promijeniti ime iz sequel/2 u sql (strukturirani jezik upita). Ova skraćenica se često izgovara kao "si-ku-el".

Postoje značajne razlike između ranih prototipova nastavka i sql standarda koji sada prepoznaju različite organizacije. Jim Melton, koji je pripremio sql-92 standard, čak je rekao da mnogi ljudi griješe misleći da riječ "strukturiran" ispravno odražava specifičnosti ovog jezika (jim melton i alan r. simon "razumijevanje novog sql-a: potpuni vodič ". San Francisco: Morgan Kaufmann, 1993. Isbn: 1-55860-245-3). Dakle, u stvari, sql je samo ime, niz slova s-q-l i ništa više.

Dobro loše

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 dobiti ono što želiš za sebe. Sistem za upravljanje bazom podataka (DBMS) će sam odlučiti kako najbolje ispuniti vaš zahtjev.

U redu. 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.
baze podataka koje bi mogle funkcionisati u brojnim kompjuterskim sistemima raznih vrsta. Zaista, uz njegovu pomoć, korisnici mogu manipulirati podacima bez obzira da li rade na ličnom računaru, mrežnoj radnoj stanici ili glavnom računaru.

Jedan od jezika koji je nastao kao rezultat razvoja relacionog modela podataka je SQL jezik (Structured Query Language), koji je trenutno vrlo raširen i zapravo je postao standardni jezik relacione baze podataka. Standard SQL je objavio Američki nacionalni institut za standarde (ANSI) 1986. godine, a 1987. godine Međunarodna organizacija za standarde (ISO) ga je usvojila kao međunarodni jezik. Trenutni SQL standard je poznat kao SQL/92.

Uz korištenje bilo kojeg standarda, povezuju se ne samo brojne i sasvim očigledne prednosti, već i određeni nedostaci. Prije svega, standardi usmjeravaju razvoj relevantne industrije u određenom pravcu; u slučaju SQL jezika, postojanje jakih fundamentalnih principa dovodi, u konačnici, do kompatibilnosti njegovih različitih implementacija i doprinosi povećanju prenosivosti softvera i baza podataka općenito, kao i svestranosti rada administratora baza podataka. S druge strane, standardi ograničavaju fleksibilnost i funkcionalnost određene implementacije. Ispod implementacija jezika SQL se odnosi na SQL softverski proizvod odgovarajućeg proizvođača. Da bi proširili funkcionalnost, mnogi programeri zasnovani na standardima dodaju standardni jezik SQL razne ekstenzije. Treba napomenuti da standardi zahtijevaju da se ispuni jezičke implementacije SQL ima određene karakteristike i općenito odražava glavne trendove koji ne samo da dovode do interoperabilnosti između svih konkurentskih implementacija, već i doprinose vrijednosti SQL programera i korisnika relacione baze podataka na današnjem tržištu softvera.

Sve konkretno jezičke implementacije donekle različite jedna od druge. U najboljem je interesu proizvođača da osiguraju da njihove implementacije ispunjavaju trenutne ANSI standarde za prenosivost i korisničko iskustvo. Međutim, svaka implementacija SQL-a sadrži poboljšanja koja zadovoljavaju potrebe određenog poslužitelja baze podataka. Ova poboljšanja ili proširenja za SQL jezik su dodatne naredbe i opcije koje su dodaci standardnom paketu i dostupne su u ovoj konkretnoj implementaciji.

Trenutno, SQL jezik podržava mnogo desetina DBMS različitih tipova, dizajniranih za širok spektar računarskih platformi, u rasponu od personalnih računara do velikih računara.

Svi jezici za manipulaciju podacima kreirani za mnoge DBMS prije pojave relacione baze podataka, bili su fokusirani na operacije sa podacima predstavljenim kao logički zapisi datoteka. Naravno, to je zahtijevalo od korisnika detaljno poznavanje organizacije pohrane podataka i ozbiljne napore da ukaže koji su podaci potrebni, gdje se nalaze i kako do njih doći.

Razmatrani SQL jezik je fokusiran na operacije sa podacima predstavljenim u obliku logički povezanih skupova relacionih tabela. Najvažnija karakteristika njegove strukture je fokusiranost na konačni rezultat obrade podataka, a ne na proceduru ove obrade. Sam SQL jezik određuje gdje se podaci nalaze, indeksira, pa čak i koji najefikasniji redoslijed operacija treba koristiti za dobivanje rezultata, te stoga nije potrebno specificirati ove detalje u upitu baze podataka.

Uvod u klijent-server tehnologiju

U vezi sa širenjem tržišta informacionih usluga, proizvođači softvera počeli su proizvoditi sve više inteligentnih, a time i velikih softverskih sistema. Mnoge organizacije i pojedinačni korisnici često nisu bili u mogućnosti da ugoste kupljene proizvode na sopstvenim računarima. Za razmjenu informacija i njihovo širenje stvorene su kompjuterske mreže, a na posebnim serverima datoteka počeli su se instalirati generalizirajući programi i podaci.

Zahvaljujući DBMS-u koji radi sa serverima datoteka, mnogi korisnici dobijaju pristup istim bazama podataka. Pojednostavljuje se razvoj različitih automatizovanih sistema za upravljanje organizacijama. Međutim, ovakvim pristupom sva obrada zahtjeva iz programa ili sa terminala korisničkih računara obavlja se na njima, pa je za implementaciju čak i jednostavnog zahtjeva potrebno čitati sa servera datoteka ili na njega pisati cijele datoteke, a to je dovodi do konfliktnih situacija i preopterećenja mreže. Da bi se ovi nedostaci otklonili, predloženo je klijent-server tehnologija, ali istovremeno je bio potreban jedan jezik za komunikaciju sa serverom - izbor je pao na SQL.

Tehnologija klijent-server znači takav način interakcije između softverskih komponenti, u kojem one čine jedan sistem. Kao što naziv govori, postoji određeni klijentski proces koji zahtijeva određene resurse, kao i serverski proces koji obezbjeđuje ove resurse. Nije neophodno da budu na istom računaru. Uobičajeno je postaviti server na jedan čvor u lokalnoj mreži, a klijente na druge čvorove.

U kontekstu baze podataka, klijent upravlja korisničkim sučeljem i logikom aplikacije, djelujući kao radna stanica koja pokreće aplikacije baze podataka. Klijent prima zahtjev od korisnika, provjerava sintaksu i generira upit bazi podataka u SQL-u ili drugom jeziku baze podataka koji odgovara logici aplikacije. Zatim šalje poruku serveru, čeka odgovor i formatira primljene podatke za prezentaciju korisniku. Server prima i obrađuje upite bazi podataka i zatim šalje rezultate nazad klijentu. Takva obrada uključuje provjeru akreditiva klijenta, provođenje zahtjeva za integritetom i ispitivanje i ažuriranje podataka. Također podržava upravljanje istovremenom i oporavkom.

Arhitektura klijent-server ima niz prednosti.

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 sa kojima komanda radi ili sadrži specifične informacije o radnji koju komanda preduzima. Svaka klauzula počinje ključnom riječi, kao što je WHERE(gdje). Neke klauzule u naredbi su potrebne, druge nisu. Neke rečenice mogu sadržavati dodatne ključne riječi, izraze. Mnogi prijedlozi uključuju nazive tablica ili polja. Imena moraju biti dugačka između 1 i 18 znakova, početi slovom i ne moraju sadržavati razmake ili posebne znakove interpunkcije. Ključne riječi se ne mogu koristiti kao nazivi.

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

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

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

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

Karakterizirajući SQL jezik u cjelini, možemo razlikovati sljedeće karakteristike:

struktura visokog nivoa koja liči na engleski;

Nezavisnost od specifičnog DBMS-a;

dostupnost standarda za razvoj;

mogućnost izvođenja interaktivnih upita za izdvajanje podataka i modificiranje njihove strukture;

Pružanje programa pristupa bazama podataka;

podrška za klijent/server arhitekturu;

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



Mogućnost pristupa podacima u Internet okruženju.

Glavne funkcije SQL jezika:

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

SQL- programski jezik baze podataka. Za pristup bazi podataka, SQL komande se ubacuju u aplikativne 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/server. U aplikacijskim programima, SQL se koristi kao sredstvo za organiziranje komunikacije preko lokalne mreže sa serverom baze podataka koji pohranjuje dijeljene podatke itd.

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

KREIRAJTE DETALJI TABELE (NOMZ INT, PUNO IME CHAR(15), GODINA INT, SEX CHAR(3))

DROP TABLE Detalji

ALTER TABLE Detalji (SAMPLE CHAR(10))

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

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

IZBRIŠI IZ detalja GDJE NOMZ=980201

AŽURIRANJE Detalji SET FULL NAME = "KRAVTSOVA I. I." GDJE NOMZ=980201

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

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

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

GDJE ključna riječ iza koje slijedi predikat - uslov nametnut unosu u tabeli, koji mora zadovoljiti da bi bio uključen u selekciju.

POREDAK PO- sortiranje izlaznih zapisa (Asc - rastuće, Desc - opadajuće. Ako tip sortiranja nije specificiran, dolazi do sortiranja uzlaznog puta).

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

INTEGER INTCijeli brojevi

SMALLINTmali cijeli broj

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

FLOAT (preciznost)broj s pomičnim zarezom

dvostruka preciznostfloat brojevi visoki fino

Izrazi u SQL-u se koriste za specificiranje 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 se koriste za specificiranje specifičnih vrijednosti podataka. Konstante fiksne tačke, na primjer: 21 -375,18 62,3

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

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

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

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

· COUNT– broj vrednosti u koloni tabele;

· SUMA– zbir vrijednosti u koloni;

· AVG je aritmetička sredina vrijednosti u koloni;

· MAX– maksimalna vrijednost u koloni;

· MIN je minimalna vrijednost u koloni.

Možete koristiti sljedeće u izrazima. tipovi operatera:

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

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

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

56. Naredbe upravljanja transakcijama kako bi se osigurao integritet 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 − COMMIT i ROLLBACK. Oni upravljaju promjenama napravljenim od strane grupe naredbi. Tim COMMIT izvještava o uspješnom završetku transakcije. Obavještava DBMS da je transakcija završena, sve njegove komande su uspješno završene i da nije bilo nedosljednosti u bazi podataka. Tim ROLLBACK 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 COMMIT i ROLLBACK se prvenstveno koriste u programskom režimu, iako se mogu koristiti i u interaktivnom režimu.

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

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

· INSERT – pravo dodavanja podataka u tabelu;

· UPDATE – pravo promjene podataka u tabeli;

· DELETE – pravo brisanja podataka iz tabele;

· REFERENCE – pravo na definiranje primarnog ključa.

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

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 tek krajem 2001. godine samo nekoliko sistema za upravljanje bazom podataka podržava 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 pravljenje 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 trebaju biti uništene, 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.

Top Related Articles