Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows 10
  • SQL: univerzalni jezik za rad sa bazama podataka. Uvod u MS SQL Server i T-SQL

SQL: univerzalni jezik za rad sa bazama podataka. Uvod u MS SQL Server i T-SQL

Programski jezik

SQL (Structured Query Language - Structured Query Language) je jezik za upravljanje bazom podataka za relacijske baze podataka. SQL sam po sebi nije programski jezik potpun po Turingu, ali njegov standard vam omogućava da za njega kreirate proceduralna proširenja koja proširuju njegovu funkcionalnost u punopravni programski jezik.

Jezik je kreiran 1970-ih pod imenom “SEQUEL” za sistem upravljanja bazom podataka System R (DBMS). Kasnije je preimenovan u “SQL” kako bi se izbjegao sukob žigova. 1979. godine SQL je prvi put objavljen kao komercijalni proizvod, Oracle V2.

Prvi službeni jezički standard usvojio je ANSI 1986. godine i ISO 1987. Od tada je stvoreno još nekoliko verzija standarda, od kojih neke ponavljaju prethodne sa manjim varijacijama, a druge preuzimaju nove značajne karakteristike.

Uprkos postojanju standarda, najčešće SQL implementacije se toliko razlikuju da se kod rijetko može prenijeti s jednog DBMS-a na drugi bez većih promjena. To je zbog dužine i složenosti standarda, kao i nedostatka specifikacija u nekim važnim oblastima implementacije.

SQL je kreiran kao jednostavan, standardiziran način za pronalaženje i manipulaciju podacima sadržanim u relacijskoj bazi podataka. Kasnije je postao složeniji od predviđenog i pretvorio se u alat za programere, a ne za krajnjeg korisnika. Trenutno, SQL (uglavnom implementiran od strane Oraclea) ostaje najpopularniji od jezika baze podataka, iako postoji niz alternativa.

SQL se sastoji od četiri različita dijela:

  1. Jezik definicije podataka (DDL) se koristi za definiranje struktura podataka pohranjenih u bazi podataka. DDL izrazi vam omogućavaju da kreirate, modificirate i izbrišete pojedinačne objekte u bazi podataka. Važeći tipovi objekata ovise o korištenom DBMS-u i obično uključuju baze podataka, korisnike, tablice i niz manjih objekata podrške kao što su uloge i indeksi.
  2. Jezik za manipulaciju podacima (DML) se koristi za dohvaćanje i modificiranje podataka u bazi podataka. DML izrazi vam omogućavaju da preuzmete, umetnete, modificirate i izbrišete podatke u tablicama. Ponekad se naredbe odabira preuzimanja podataka ne smatraju dijelom DML-a jer ne mijenjaju stanje podataka. Svi DML izrazi su deklarativni.
  3. Jezik definicije pristupa podacima (DCL) se koristi za kontrolu pristupa podacima u bazi podataka. DCL izrazi se primjenjuju na privilegije i dozvoljavaju vam da dodijelite i opozovete prava za primjenu određenih DDL i DML izraza na određene objekte baze podataka.
  4. Jezik kontrole transakcija (TCL) se koristi za kontrolu obrade transakcija u bazi podataka. Tipično, TCL izjave uključuju urezivanje za urezivanje promjena napravljenih tokom transakcije, vraćanje unatrag da ih poništite i tačku spremanja za podjelu transakcije na nekoliko manjih dijelova.

Treba napomenuti da SQL implementira paradigmu deklarativnog programiranja: svaki izraz opisuje samo potrebnu radnju, a DBMS odlučuje kako će je izvesti, tj. planira osnovne operacije potrebne za izvođenje radnje i izvršava ih. Međutim, da bi efikasno koristio snagu SQL-a, programer treba da razume kako DBMS analizira svaki izraz i kreira njegov plan izvršenja.

primjeri:

Zdravo svijete!:

Primjer za Oracle 10g SQL, Oracle 11g SQL

Niz 'Hello, World!' se bira iz ugrađene tablice dual , koja se koristi za upite koji ne zahtijevaju pristup stvarnim tabelama.

odaberite "Hello World!" od dual ;

Faktorski:

Primjer za Oracle 10g SQL, Oracle 11g SQL

SQL ne podržava petlje, rekurzije ili korisnički definirane funkcije. Ovaj primjer pokazuje moguće rješenje pomoću:

  • nivo pseudo-kolona za kreiranje pseudotabela t1 i t2 koje sadrže brojeve od 1 do 16,
  • agregatna funkcija sum, koja vam omogućava da zbrojite elemente skupa bez eksplicitne upotrebe petlje,
  • i matematičke funkcije ln i exp , koje vam omogućavaju da zamijenite proizvod (potreban za izračunavanje faktorijala) sa zbrojem (koji pruža SQL).

Niz “0! = 1” neće biti uključeno u rezultirajući skup redova, jer pokušaj procjene ln(0) rezultira izuzetkom.

Fibonačijevi brojevi:

Primjer za Oracle 10g SQL, Oracle 11g SQL

SQL ne podržava petlje ili rekurziju, a spajanje polja iz različitih redova u tablici ili upitu nije standardna agregatna funkcija. Ovaj primjer koristi:

  • Binetova formula i matematičke funkcije ROUND , POWER i SQRT za izračunavanje n-tog Fibonačijevog broja;
  • nivo pseudo-kolona za kreiranje pseudo-tabele t1 koja sadrži brojeve od 1 do 16;
  • ugrađena funkcija SYS_CONNECT_BY_PATH za uređenu konkatenaciju primljenih brojeva.

SELECT REPLACE (MAX (SYS_CONNECT_BY_PATH (fib || ", " , "/" )), "/" , "" ) || "..." fiblista FROM ( SELECT n , fib , ROW_NUMBER () PREKO (ORDER BY n ) r FROM (odaberite n , okrugli ((power ((1 + sqrt (5)) * 0 . 5 , n ) - snaga ((1 - sqrt (5 )) * 0 . 5 , n )) / sqrt (5 )) fib iz (odaberite nivo n iz dvostrukog povezivanja po nivou<= 16 ) t1 ) t2 ) START WITH r = 1 CONNECT BY PRIOR r = r - 1 ;

Zdravo svijete!:

Primjer za verzije Microsoft SQL Server 2005, Microsoft SQL Server 2008 R2, Microsoft SQL Server 2012, MySQL 5, PostgreSQL 8.4, PostgreSQL 9.1, sqlite 3.7.3

odaberite "Hello World!" ;

Faktorski:

Primjer za Microsoft SQL Server 2005, Microsoft SQL Server 2008 R2, Microsoft SQL Server 2012

Koristi se rekurzivna definicija faktorijala, implementirana kroz rekurzivni upit. Svaki red upita sadrži dva numerička polja, n i n!, a svaki sljedeći red se izračunava na osnovu podataka iz prethodnog.

Možete izračunati faktorijele cijelih brojeva samo do 20!. Prilikom pokušaja izračunavanja 21! javlja se "greška aritmetičkog prelivanja", tj. dolazi do prelivanja.

Za realne brojeve izračunava se faktorijel od 100! (Da biste to učinili, u primjeru, trebate zamijeniti bigint sa float u 3. redu)

Fibonačijevi brojevi:

Primjer za Microsoft SQL Server 2005, Microsoft SQL Server 2008 R2, Microsoft SQL Server 2012

Koristi se iterativna definicija Fibonačijevih brojeva, implementirana kroz rekurzivni upit. Svaki red upita sadrži dva susjedna broja u nizu, a sljedeći red se izračunava kao (posljednji broj, zbir brojeva) prethodnog reda. Dakle, svi brojevi osim prvog i posljednjeg pojavljuju se dvaput, tako da su samo prvi brojevi svakog reda uključeni u rezultat.

Faktorski:

Primjer za Oracle 10g SQL, Oracle 11g SQL

Ovaj primjer pokazuje upotrebu iskaza modela, dostupnog od Oraclea 10g, koji omogućava da se nizovi upita tretiraju kao elementi niza. Svaki red sadrži dva polja - red broj n i njegov faktorijel f.

odaberite n || "!=" || f faktorijel iz dualnog modela vraća dimenziju svih redova po (0 d) mjerama (0 f, 1 n) pravila iteracija (17) ( f [broj_iteracije] = dekodiranje (broj_iteracije, 0, 1, f [broj_iteracije - 1] * broj_iteracije) , n [broj_iteracije] = broj_iteracije);

Fibonačijevi brojevi:

Primjer za Oracle 10g SQL, Oracle 11g SQL

Ovaj primjer pokazuje upotrebu iskaza modela, dostupnog od Oraclea 10g, koji omogućava da se nizovi upita tretiraju kao elementi niza. Svaki red sadrži dva polja - sam Fibonačijev broj i konkatenaciju svih brojeva koji su mu manji ili jednaki. Iterativno spajanje brojeva u istom upitu u kojem su generirani je lakše i brže od agregacije kao samostalne operacije.

odaberite max(e) || ", ..." iz (odabir s iz dualnog modela vraća dimenziju svih redova po ( 0 d ) mjerama ( cast (" " kao varchar2 (200 )) s , 0 f ) iteracija pravila (16 ) ( f [ broj_iteracije ] = dekodiranje (broj_iteracije, 0, 1, 1, 1, f [broj_iteracije - 1] + f [broj_iteracije - 2]), s [broj_iteracije] = dekodiranje (broj_iteracije, 0, to_char (f [broj_iteracije]), s [broj_iteracije] = dekod. 1 ] || ", " || to_char (f [broj_iteracije]))) );

Faktorski:

Primjer za MySQL verzije 5

odaberite concat (cast (t2. n kao char), "!= ", cast (exp (suma (log (t1. n ))) kao char)) iz (odaberite @ i := @ i + 1 AS n iz TABLE , (odaberite @ i := 0 ) kao sel1 limit 16 ) t1 , ( izaberite @ j : = @ j + 1 AS n iz TABLE , (odaberite @ j := 0 ) kao sel1 limit 16 ) t2 gdje je t1 . n<= t2 . n group by t2 . n

Fibonačijevi brojevi:

Primjer za MySQL verzije 5

Zamijenite TABLE sa bilo kojom tablicom kojoj možete pristupiti, kao što je mysql.help_topic .

izaberite concat (group_concat (f separator ", " ), ", ..." ) iz (odaberite @ f := @ i + @ j kao f , @ i := @ j , @ j := @ f iz TABLE , (odaberite @ i := 1, @ j := 0) sel1 limit 16) t

Zdravo svijete!:

Primjer za Oracle 10g SQL, Oracle 11g SQL

Ovaj primjer koristi anonimni PL/SQL blok koji ispisuje poruku na standardni izlaz koristeći paket dbms_output.

započeti dbms_output . put_line("Zdravo, svijet!"); kraj ;

Faktorski:

Primjer za Oracle 10g SQL, Oracle 11g SQL

Ovaj primjer demonstrira iterativno faktorijalno izračunavanje koristeći PL/SQL.

deklarisati n broj := 0 ; fnumber := 1 ; početi dok (n<= 16 ) loop dbms_output . put_line (n || "! = " || f ); n : = n + 1 ; f : = f * n ; end loop ; end ;

Fibonačijevi brojevi:

Primjer za Oracle 10g SQL, Oracle 11g SQL

Ovaj primjer koristi iterativnu definiciju Fibonačijevih brojeva. Već izračunati brojevi se pohranjuju u strukturu podataka varray, analogno nizu.

declare type vector je varray (16) broja; fib vektor := vektor(); i broj ; svarchar2(100); beginfib . proširiti (16); fib (1 ) := 1 ; fib (2 ) := 1 ; s:=fib(1) || ", " || fib(2) || ", "; za i u 3 .. 16 petlja fib (i) : = fib (i - 1 ) + fib (i - 2 ); s := s || fib(i) || ", "; end-loop; dbms_output . put_line(s || "..." ); kraj ;

Kvadratna jednadžba:

Primjer za Oracle 10g SQL, Oracle 11g SQL

Ovaj primjer je testiran sa SQL*Plus, TOAD i PL/SQL Developerom.

Čisti SQL vam omogućava da unesete varijable tokom izvršavanja upita kao zamijenjene varijable. Da bi se definisala takva promenljiva, njeno ime (u ovom slučaju A, B i C) se mora koristiti sa znakom ampersanda i ispred njega svaki put kada se varijabla treba referencirati. Kada se upit izvrši, od korisnika se traži da unese vrijednosti svih zamijenjenih varijabli korištenih u upitu. Nakon unosa vrijednosti, svaka referenca na takvu varijablu zamjenjuje se njenom vrijednošću, a rezultirajući upit se izvršava.

Postoji nekoliko načina za unos vrijednosti za zamijenjene varijable. U ovom primjeru, prvoj referenci na svaku varijablu prethodi dvostruki ampersand && umjesto jednog ampersanda. Dakle, vrijednost za svaku varijablu se unosi samo jednom, a sve naredne reference na nju će biti zamijenjene istom vrijednošću (kada koristite jedan ampersand u SQL*Plusu, vrijednost za svaku referencu na istu varijablu mora se uneti zasebno) . U PL/SQL Developeru, referencama na sve varijable mora prethoditi jedan & , inače će se pojaviti greška ORA-01008 “Nije sve varijable vezane”.

Prvi red primjera specificira znak za decimalni separator, koji se koristi kada se korijenski brojevi pretvaraju u nizove.

Sam zahtjev se sastoji od četiri različita zahtjeva. Svaki upit vraća niz koji sadrži rezultat proračuna, u jednom od slučajeva (A=0, D=0, D>0 i D<0) и ничего — в трех остальных случаях. Результаты всех четырех запросов объединяются, чтобы получить окончательный результат.

alter set session NLS_NUMERIC_CHARACTERS = ". " ; odaberite "Nije kvadratna jednadžba." ans iz duala gdje && A = 0 unija odaberite "x = " || to_char (-&& B / 2 /& A ) iz duala gdje je & A != 0 i & B *& B - 4 *& A *&& C = 0 unije odaberite "x1 = " || to_char ((-& B + sqrt (& B *& B - 4 *& A *& C )) / 2 /& A ) || ", x2 = " || to_char (-& B - sqrt (& B *& B - 4 *& A *& C )) / 2 /& A od dual gdje & A != 0 i & B *& B - 4 *& A *& C > 0 unije odaberite "x1 = (" || to_char (-& B / 2 /& A ) || "," || to_char (sqrt (-& B *& B + 4 *& A *& C ) / 2 /& A ) || "), " || "x2 = (" || to_char (-& B / 2 /& A ) || "," || to_char (- sqrt (-& B *& B + 4 *& A *& C ) / 2 /& A ) || ")" od dual gdje & A != 0 i & B *& B - 4 *& A *& C< 0 ;

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.

Danas, SQL kursevi "za lutke" postaju sve popularniji. To se može objasniti vrlo jednostavno, jer se u modernom svijetu sve više mogu vidjeti takozvani "dinamički" web servisi. Odlikuje ih prilično fleksibilna ljuska i baziraju se na svim programerima početnicima koji odluče posvetiti web stranice, prije svega, upisati se na SQL tečajeve "za lutke".

Zašto učiti ovaj jezik?

Prije svega, SQL se podučava kako bi se dalje kreirao širok spektar aplikacija za jedan od najpopularnijih blog motora danas - WordPress. Nakon što prođete kroz nekoliko jednostavnih lekcija, već ćete moći kreirati upite bilo koje složenosti, što samo potvrđuje jednostavnost ovog jezika.

Šta je SQL?

Ili Structured Query Language, kreiran je sa jednom jedinom svrhom: da odredi da im se omogući pristup i obradi u prilično kratkom vremenskom periodu. Ako znate SQL vrijednost, onda će vam biti jasno da ovaj server pripada takozvanim "neproceduralnim" jezicima. Odnosno, njegove mogućnosti uključuju samo opis bilo koje komponente ili rezultata koje želite da vidite u budućnosti na sajtu. Ali kada ne ukazuje šta će tačno rezultati dobiti. Svaki novi zahtjev na ovom jeziku je, takoreći, dodatni "dodatak". Upiti će se izvršavati redoslijedom kojim su uneseni u bazu podataka.

Koje procedure se mogu izvesti koristeći ovaj jezik?

Uprkos svojoj jednostavnosti, SQL baza podataka vam omogućava da kreirate mnogo različitih upita. Dakle, šta možete učiniti ako naučite ovaj važan programski jezik?

  • kreirati razne tablice;
  • primati, pohranjivati ​​i modificirati primljene podatke;
  • promijenite strukturu tabela po vlastitom nahođenju;
  • kombinirati primljene informacije u pojedinačne blokove;
  • izračunati primljene podatke;
  • osigurati potpunu zaštitu informacija.

Koje su komande najpopularnije na ovom jeziku?

Ako odlučite da pohađate kurseve SQL "za lutke", tada ćete dobiti detaljne informacije o naredbama koje se koriste u kreiranju upita s njim. Najčešći danas su:

  1. DDL je naredba koja definira podatke. Koristi se za kreiranje, modifikovanje i brisanje širokog spektra objekata u bazi podataka.
  2. DCL je naredba koja upravlja podacima. Koristi se za omogućavanje pristupa različitim korisnicima informacijama u bazi podataka, kao i za korištenje tabela ili pogleda.
  3. TCL je tim koji upravlja raznim transakcijama. Njegova glavna svrha je da odredi tok transakcije.
  4. DML - manipuliše primljenim podacima. Njegov zadatak je omogućiti korisniku da premjesti različite informacije iz baze podataka ili ih unese tamo.

Vrste privilegija koje postoje na ovom serveru

Privilegije su one radnje koje određeni korisnik može izvršiti u skladu sa svojim statusom. Najminimalnija je, naravno, redovna prijava. Naravno, privilegije se s vremenom mogu promijeniti. Stari će biti uklonjeni, a novi dodani. Danas svi oni koji pohađaju kurseve SQL Servera "za lutke" znaju da postoji nekoliko vrsta dozvoljenih radnji:

  1. Tip objekta - korisniku je dozvoljeno da izvrši bilo koju naredbu samo u odnosu na određeni objekt koji se nalazi u bazi podataka. Istovremeno, privilegije se razlikuju za različite objekte. Oni su također vezani ne samo za određenog korisnika, već i za tabele. Ako je neko, koristeći svoje mogućnosti, kreirao tabelu, onda se smatra njenim vlasnikom. Stoga je u njegovom pravu da drugim korisnicima dodijeli nove privilegije u vezi sa informacijama u njemu.
  2. Tip sistema je tzv. data copyright. Korisnici koji su dobili takve privilegije mogu kreirati različite objekte u bazi podataka.

Istorija stvaranja SQL-a

Ovaj jezik je kreirao IBM Research Lab 1970. godine. Tada mu je naziv bio nešto drugačiji (SEQUEL), ali je nakon nekoliko godina korištenja promijenjen, neznatno smanjen. Uprkos tome, i danas mnogi poznati svjetski stručnjaci iz oblasti programiranja još uvijek izgovaraju ime na stari način. SQL je stvoren sa jedinom svrhom da se izmisli jezik koji bi bio toliko jednostavan da bi ga čak i obični korisnici Interneta mogli naučiti bez problema. Zanimljiva je činjenica da u to vrijeme SQL nije bio jedini takav jezik. U Kaliforniji je druga grupa stručnjaka razvila sličan Ingres, ali nikada nije postao široko rasprostranjen. Prije 1980. postojalo je nekoliko varijacija SQL-a koje su se samo malo razlikovale jedna od druge. Kako bi se spriječila zabuna, 1983. je stvorena standardna verzija, koja je i danas popularna. SQL kursevi "za lutke" omogućavaju vam da naučite mnogo više o servisu i da ga potpuno razumete za nekoliko nedelja.

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

Jezik SQL

Dakle, generalno, upoznali smo se sa osnovnim konceptima teorije baza podataka, instaliranim i konfigurisanim za MySQL. Sada je vrijeme da naučite kako manipulirati podacima pohranjenim u bazama podataka. Za ovo nam je potrebno SQL - strukturirani jezik upita. Ovaj jezik omogućava kreiranje, uređivanje i brisanje informacija pohranjenih u bazama podataka, kreiranje novih baza podataka i još mnogo toga. SQL je ANSI (Američki nacionalni institut za standarde) i ISO (Međunarodna organizacija za standarde) standard.

Malo istorije

Prvi međunarodni jezički standard SQL je usvojen 1989. godine, često se naziva SQL/89 . Među nedostacima ovog standarda, prije svega, izdvaja se činjenica da postavlja mnoga bitna svojstva definisana u implementaciji. To je rezultiralo mnogim neslaganjima u implementaciji jezika od strane različitih proizvođača. Osim toga, bilo je pritužbi na nedostatak referenci u ovom standardu na praktične aspekte jezika, kao što je njegovo ugrađivanje u programski jezik C.

Sljedeći međunarodni jezički standard SQL usvojen je krajem 1992. godine i postao poznat kao SQL/92 . Ispostavilo se da je mnogo tačnije i potpunije od SQL/89 iako nije bilo bez mana. Trenutno, većina sistema skoro u potpunosti implementira ovaj standard. Međutim, kao što znate, napredak se ne može zaustaviti, a 1999. godine pojavio se novi standard SQL :1999, također poznat kao SQL3. SQL3 je okarakteriziran kao "objektno orijentiran SQL ” i osnova je nekoliko sistema upravljanja objektno-relacijskim bazama podataka (na primjer, Oracleov ORACLE8, Informixov Universal Server i IBM-ova DB2 Universal Database). Ovaj standard nije samo spajanje SQL-92 i objektna tehnologija. Sadrži niz proširenja tradicionalnog SQL , a sam dokument je koncipiran na način da se u budućnosti postigne efikasniji rad u oblasti standardizacije.

Što se MySQL-a tiče, on je početni nivo SQL92, sadrži nekoliko ekstenzija za ovaj standard i ima za cilj da u potpunosti podrži ANSI SQL99 standard bez žrtvovanja brzine i kvaliteta koda.

Zatim, pričamo o osnovama jezika SQL , mi ćemo se držati njegove implementacije u MySQL DBMS.

Operatori osnovnih jezika SQL

Funkcije bilo kojeg DBMS-a uključuju:

  1. kreiranje, brisanje, promjena baze podataka (DB);
  2. dodavanje, mijenjanje, brisanje, dodjeljivanje korisničkih prava;
  3. unos, brisanje i izmjena podataka u bazi podataka (tabele i evidencije);
  4. dohvaćanje podataka iz baze podataka.

Samo administratori baze podataka ili privilegirani korisnici imaju pristup prve dvije funkcije. Razmotrimo kako se rješavaju posljednja dva zadatka (u stvari, ovo je sedam zadataka).

Prije nego što učinite bilo što s podacima, trebate kreirati tabele u kojima će se ti podaci pohranjivati, naučiti kako promijeniti strukturu tih tabela i izbrisati ih ako je potrebno. Za ovo, na jeziku SQL postoje operateri CREATE TABLE, ALTER TABLE i DROP TABLE.

CREATE TABLE izraz

mysql>CREATE TABLE Osobe (id INT PRIMARNI KLJUČ AUTO_INCREMENT, ime_VARCHAR(50), prezime VARCHAR(100), smrti_datum INT, TEKST opisa, fotografija INT, državljanstvo CHAR(50) DEFAULT "Rusija"); Primjer 10.1. Kreiranje tabele osoba

Sa naredbom SHOW specifičnom za MySql, možete vidjeti postojeće baze podataka, tabele u bazi podataka i polja u tabeli.

Prikaži sve baze podataka:

mysql>SHOW baze podataka;

Učinite bazu podataka aktuelnom i pokažite sve tabele u njoj:

mysql>usebook; mysql>prikaži tabele;

Prikaži sve kolone u tabeli Osobe:

mysql> prikaži kolone iz osoba;

DROP TABLE izraz

Operater DROP TABLE briše jednu ili više tabela. Svi podaci i definicije tabele su uklonjeni, tako da morate biti oprezni kada koristite ovu naredbu.

sintaksa:

DROP TABLE table_name [, table_name, ...]

U MySQL verziji 3.22 i novijim, možete koristiti ključne riječi IF EXISTS da pokrenete grešku ako navedene tablice ne postoje.

Opcije RESTRICT i CASCADE olakšavaju prenos programa iz drugih DBMS-ova. Trenutno nisu aktivni.

mysql> ISPUSTI TABELU AKO POSTOJI Osobe, artefakti, test; Primjer 10.2. Korištenje izraza DROP TABLE

ALTER TABLE izraz

Operater ALTER TABLE pruža mogućnost promjene strukture postojeće tabele. Na primjer, možete dodati ili ukloniti stupce, kreirati ili ispustiti indekse ili preimenovati stupce ili samu tablicu. Također možete promijeniti komentar za tabelu i njen tip.

sintaksa:

ALTER TABLE ime_tablice alter_specification [, alter_specification ...]

Možete napraviti sljedeće promjene u tabeli (koje su sve zabilježene u alter_specification):

  • dodavanje polja:

    DODAJ definiciju_stupca

    DODAJ (definicija_stupca, definicija_stupca, ...)

  • dodavanje indeksa:

    DODATI INDEX [indeks_name] (indeksirano_naziv_kolone,...) ili ADD PRIMARNI KLJUČ (indeksirano_naziv_kolone, ...) ili ADD UNIQUE [indeks_name] (indeksirano_naziv_kolone,...) ili DODAJTE CIJELI TEKST [indeks_name] (indeks_column_name,...)

  • promjena polja:

    ALTER column_name (SET DEFAULT literal | DROP DEFAULT) ili PROMIJENI old_column_name column_definition ili MODIFY column_definition

  • brisanje polja, indeksa, ključa:

    DROP column_name DROP PRIMARY KEY DROP INDEX index_name

  • preimenuj tablicu:

    RENAME new_table_name

  • preuređivanje polja tabele:

    ORDER BY polje

    table_options

Ako operater ALTER TABLE se koristi za promjenu definicije tipa stupca, ali DESCRIBE table_name pokazuje da se kolona nije promijenila, onda možda MySQL ignoriše ovu modifikaciju iz jednog od razloga opisanih u posebnom dijelu dokumentacije. Na primjer, ako pokušate promijeniti stupac VARCHAR u CHAR, MySQL će nastaviti koristiti VARCHAR ako tablica sadrži druge stupce promjenjive dužine.

Operater ALTER TABLE dok radi, kreira privremenu kopiju originalne tabele. Potrebna izmjena se vrši na kopiji, zatim se originalna tablica ispušta i nova se preimenuje. Ovo se radi tako da sva ažuriranja, osim neuspjelih, automatski ulaze u novu tabelu. U vrijeme izvođenja ALTER TABLE originalna tabela je čitljiva od strane drugih klijenata. Operacije ažuriranja i pisanja na ovoj tabeli su suspendovane dok nova tabela ne bude spremna. Treba napomenuti da kada koristite bilo koju drugu opciju za ALTER TABLE osim RENAME , MySQL će uvijek kreirati privremenu tabelu, čak i ako podaci ne moraju biti strogo kopirani (na primjer, kada se promijeni ime kolone).

Primjer 10.3. Dodajmo polje za evidentiranje godine rođenja osobe u kreiranu tabelu osoba:

mysql> ALTER TABLE Osobe ADD bday INTEGER AFTER prezime_name; Primjer 10.3. Dodavanje polja u tabelu Osobe za evidentiranje godine rođenja osobe

Dakle, naučili smo kako raditi s tabelama: kreirati ih, brisati i mijenjati ih. Sada hajde da shvatimo kako da uradimo isto sa podacima koji su pohranjeni u ovim tabelama.

SELECT izraz

Operater SELECT koristi se za dohvaćanje redova odabranih iz jedne ili više tabela. Odnosno, uz njegovu pomoć postavljamo stupce ili izraze koji se izdvajaju ( select_expressions ), tabele ( table_reference ) iz kojih treba izvršiti selekciju i, eventualno, uslov ( where_definition ) da podaci u ovim kolonama moraju odgovarati , i redoslijed kojim se podaci trebaju dati.

Osim toga, operater SELECT može se koristiti za izdvajanje redova izračunatih bez pozivanja na bilo koju tablicu. Na primjer, da biste izračunali koliko je 2*2 jednako, trebate samo napisati

mysql> SELECT 2*2;

Pojednostavljena struktura operatera SELECT može se predstaviti na sljedeći način:

Uglaste zagrade znače da je upotreba operatora u njima opciona, okomita crta | znači listu mogućih opcija. Nakon ključne riječi ORDER BY slijedi naziv stupca, broj (cijeli broj bez predznaka) ili formula i metoda reda (uzlazno - ASC, ili silazno - DESC). Zadana vrijednost je rastući redoslijed.

Kada upišemo "*" u izraz_izraza, to znači odabrati sve kolone. Pored "*", funkcije kao što su max, min i avg mogu se koristiti u select_expressions.

Primjer 10.4. Odaberite iz tabele Osobe sve podatke za koje polje first_name ima vrijednost "Aleksandar" :

Odaberite naslov i opis (naslov, opis) artefakta broj 10:

INSERT izjava

Operater INSERT umeće nove redove u postojeću tabelu. Operater ima nekoliko oblika. Parametar table_name u svim ovim obrascima specificira tablicu u koju treba unijeti redove. Kolone za koje se postavljaju vrijednosti navedene su u listi naziva kolona (ime_stupca) ili u dijelu SET.

sintaksa:

    INSERT table_name [(ime_kolone,...)] VRIJEDNOSTI (izraz,...),(...),...

    Ova komandna forma INSERT umeće redove tačno onako kako je navedeno u naredbi. Kolone su navedene u zagradama iza naziva tabele, a njihove vrednosti su navedene iza ključne reči VALUES.

    Na primjer:

    mysql> INSERT INTO Osobe (prezime, bdan) VRIJEDNOSTI("Ivanov", "1934");

    umetnut će red u tabelu Osobe u kojem će vrijednosti prezimena (prezime) i datuma rođenja (bdan) biti postavljene na "Ivanov" odnosno "1934".

    INSERT table_name [(naziv_kolone,...)] SELECT ...

    Ova komandna forma INSERT umeće redove izabrane iz druge tabele ili tabela.

    Na primjer:

    umetnut će u tabelu Artefakti u polje "autor" (autor) vrijednost identifikatora odabranog iz tabele Osobe pod uslovom da se osoba preziva Ivanov.

    INSERT table_name SET column_name=izraz, column_name=izraz, ...

    Na primjer:

    mysql> INSERT INTO Persons SET last_name="Petrov", first_name="Ivan";

    Ova komanda će umetnuti vrijednost "Petrov" u tabelu Osobe u polje prezime_name, a string "Ivan" u polje ime_ime.

Forma INSERT ... VRIJEDNOSTI multilist je podržan u MySQL verziji 3.22.5 i novijim. Sintaksa izraza ime_kolone=izraz podržano u MySQL verziji 3.22.10 i novijim.

Primjenjuju se sljedeći ugovori.

  • Ako nije navedena lista stupaca za INSERT ... VRIJEDNOSTI ili INSERT ... SELECT, tada vrijednosti za sve stupce moraju biti definirane u listi VALUES() ili kao rezultat rada SELECT. Ako je redoslijed kolona u tabeli nepoznat, možete koristiti DESCRIBE table_name.
  • Svaka kolona kojoj nije izričito data vrijednost bit će postavljena na svoju zadanu vrijednost. Na primjer, ako data lista kolona ne specificira sve stupce u datoj tabeli, tada se kolone koje nisu spomenute postavljaju na svoje zadane vrijednosti.
  • Izraz se može odnositi na bilo koju kolonu koja je prethodno bila navedena na listi vrijednosti. Na primjer, možete odrediti sljedeće:

    mysql> INSERT INTO table_name (col1,col2) VALUES(15,col1*2);

    Ali ne možete odrediti:

    mysql> INSERT INTO table_name (col1,col2) VALUES(col2*2,15);

Još nismo razgovarali o tri opciona parametra prisutna u sva tri oblika naredbe: LOW_PRIORITY, DELAYED i IGNORE.

Opcije LOW_PRIORITY i DELAYED se koriste kada veliki broj korisnika radi na stolu. Oni propisuju postavljanje prioriteta ove operacije nad operacijama drugih korisnika. Ako je navedena ključna riječ LOW_PRIORITY, onda se izvršavanje ove naredbe INSERTće biti odgođeno dok drugi klijenti ne završe čitanje ove tabele. U ovom slučaju, klijent mora čekati dok se data komanda za umetanje ne završi, što može potrajati značajno vrijeme ako se tablica intenzivno koristi. Nasuprot tome, komanda INSERT DELAYED omogućava ovom klijentu da odmah nastavi operaciju, bez obzira na druge korisnike.

Ako u timu INSERT navedena je ključna riječ IGNORE, zatim svi redovi koji imaju duple ključeve PRIMARNA ili UNIQUE u ovoj tabeli će biti zanemareno i neće biti uključeno u tabelu. Ako ne navedete IGNORE , tada se ova operacija umetanja zaustavlja kada se pronađe red koji ima dupliciranu vrijednost postojećeg ključa.

UPDATE izjava

sintaksa:

Operater UPDATE ažurira vrijednosti postojećih kolona tablice prema unesenim vrijednostima. Naredba SET specificira koje stupce treba modificirati i koje vrijednosti treba postaviti u njima. Klauzula WHERE, ako postoji, specificira koje redove treba ažurirati. U suprotnom, svi redovi se ažuriraju. Ako je specificirana klauzula ORDER BY, tada će se redovi ažurirati redoslijedom navedenim u njoj.

Ako je navedena ključna riječ LOW_PRIORITY, onda se izvršavanje ove naredbe UPDATE odgođeno dok drugi klijenti ne završe čitanje ove tabele.

Ako je navedena ključna riječ IGNORE, tada naredba ažuriranja neće biti prekinuta čak i ako dođe do greške duplog ključa. Redovi koji uzrokuju sukobe neće se ažurirati.

Ako izraz koji specificira novu vrijednost za stupac koristi ime tog polja, onda naredba UPDATE koristi trenutnu vrijednost za tu kolonu. Na primjer, sljedeća naredba postavlja stupac death_date na vrijednost za jedan veću od njene trenutne vrijednosti:

mysql> UPDATE Osobe SET death_date=death_date+1;

U MySQL 3.23, možete koristiti opciju LIMIT # da osigurate da je samo određeni broj redova izmijenjen.

Na primjer, takva operacija će zamijeniti naslov naslova u prvom redu naše tabele eksponata nizom "Lamp computer":

mysql> UPDATE Artefacts SET title="(!LANG:Lamp" Limit 1;!}

Izjava DELETE

Operater IZBRIŠI uklanja redove iz tabele table_name koji zadovoljavaju uslove navedene u where_definition i vraća broj uklonjenih zapisa.

Ako operater IZBRIŠI radi bez definicije WHERE, tada se svi redovi brišu.

sintaksa:

Na primjer, sljedeća komanda će izbrisati iz tabele Osobe

Top Related Articles