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

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

Programski jezik

SQL (Structured Query Language) je jezik za upravljanje bazom podataka za relacijske baze podataka. SQL sam po sebi nije Turingov potpuni programski jezik, ali njegov standard vam omogućuje stvaranje proceduralnih proširenja za njega koja proširuju njegovu funkcionalnost na potpuni programski jezik.

Jezik je stvoren 1970-ih pod nazivom “SEQUEL” za System R. Sustav upravljanja bazama podataka (DBMS). Kasnije je preimenovan u “SQL” kako bi se izbjegle sukobe zaštitnih znakova. 1979. godine SQL je prvi put objavljen kao komercijalni proizvod, Oracle V2.

Prvi službeni jezični standard usvojio je ANSI 1986., a ISO - 1987. Od tada je stvoreno još nekoliko verzija standarda, od kojih su neke ponavljale prethodne s manjim varijacijama, druge su poprimile nove značajne značajke.

Unatoč postojanju standarda, najčešće se implementacije SQL-a toliko razlikuju da se kod rijetko može prenijeti s jednog DBMS-a na drugi bez značajnih promjena. To je zbog velike veličine i složenosti standarda, kao i nedostatka specifikacija u nekim važnim područjima implementacije.

SQL je stvoren kao jednostavan, standardiziran način dohvaćanja i manipulacije podacima sadržanim u relacijskoj bazi podataka. Kasnije je postao složeniji od predviđenog i postao alat za razvojne programere, a ne krajnji korisnik. Trenutno, SQL (uglavnom u implementaciji Oraclea) ostaje najpopularniji jezik za upravljanje bazom podataka, iako postoji niz alternativa.

SQL ima četiri različita dijela:

  1. Jezik definicije podataka (DDL) koristi se za definiranje struktura podataka pohranjenih u bazi podataka. DDL izrazi omogućuju vam stvaranje, izmjenu i brisanje pojedinačnih objekata u bazi podataka. Dopuštene vrste objekata ovise o korištenom DBMS-u i obično uključuju baze podataka, korisnike, tablice i niz manjih pratećih objekata kao što su uloge i indeksi.
  2. Jezik za upravljanje podacima (DML) koristi se za dohvaćanje i modificiranje podataka u bazi podataka. DML izrazi omogućuju vam dohvaćanje, umetanje, izmjenu i brisanje podataka u tablicama. Ponekad se izrazi odabira dohvaćanja podataka ne smatraju dijelom DML-a jer ne mijenjaju stanje podataka. Svi DML izrazi su deklarativni.
  3. Jezik definicije pristupa podacima (DCL) koristi se za kontrolu pristupa podacima u bazi podataka. DCL izrazi se primjenjuju na privilegije i omogućuju vam da dodijelite i opozovete prava za primjenu određenih DDL i DML izraza na određene objekte baze podataka.
  4. Jezik za upravljanje transakcijama (TCL) koristi se za kontrolu obrade transakcija u bazi podataka. Uobičajeno TCL naredbe uključuju predaju za uređivanje promjena napravljenih tijekom transakcije, vraćanje unatrag za njihovo poništavanje i točku spremanja za podjelu transakcije na manje dijelove.

Treba napomenuti da SQL implementira paradigmu deklarativnog programiranja: svaki izraz opisuje samo potrebnu radnju, a DBMS odlučuje kako će je izvesti, t.j. planira i izvodi osnovne operacije potrebne za dovršetak radnje. Međutim, da bi učinkovito koristio snagu SQL-a, programer mora razumjeti kako DBMS analizira svaki izraz i kreira njegov plan izvršenja.

primjeri:

Pozdrav svijete !:

Primjer za verzije Oracle 10g SQL, Oracle 11g SQL

Niz ‘Hello, World!’ dohvaća se iz ugrađene tablice dual, koja se koristi za upite koji ne zahtijevaju pristup stvarnim tablicama.

odaberite "Halo, World!" od dual;

Faktorijel:

Primjer za verzije Oracle 10g SQL, Oracle 11g SQL

SQL ne podržava petlje, rekurzije ili UDF-ove. Ovaj primjer pokazuje moguće rješenje pomoću:

  • razina pseudostupca za stvaranje pseudotablica t1 i t2 koje sadrže brojeve od 1 do 16,
  • zbroj agregatne funkcije, koji vam omogućuje da zbrojite elemente skupa bez eksplicitne upotrebe petlje,
  • i matematičke funkcije ln i exp za zamjenu proizvoda (potrebnog za izračunavanje faktorijala) zbrojem (omogućen SQL-om).

Niz “0! = 1 ”neće biti uključeno u rezultirajući skup redaka, budući da pokušava izračunati ln (0) izbacuje iznimku.

Fibonaccijevi brojevi:

Primjer za verzije Oracle 10g SQL, Oracle 11g SQL

SQL ne podržava petlje ili rekurzije, a spajanje polja iz različitih redaka 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 Fibonaccijevog broja;
  • razina pseudo-stupca za kreiranje pseudo-tablice t1 koja sadrži brojeve od 1 do 16;
  • ugrađena funkcija SYS_CONNECT_BY_PATH za uređenu konkatenaciju primljenih brojeva.

ODABIR ZAMJENA (MAX (SYS_CONNECT_BY_PATH (fib || ",", "/")), "/", "") || "..." fiblist FROM (ODABIR 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 razinu n iz dvostrukog povezivanja po razini<= 16 ) t1 ) t2 ) START WITH r = 1 CONNECT BY PRIOR r = r - 1 ;

Pozdrav 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 "Halo, World!" ;

Faktorijel:

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

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

Možete izračunati samo cjelobrojne faktorijele do 20!. Prilikom pokušaja izračunavanja 21! javlja se pogreška “Aritmetic overflow error”, tj. rešetka za pražnjenje se prelijeva.

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

Fibonaccijevi brojevi:

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

Koristi se iterativno određivanje Fibonaccijevih brojeva, implementirano kroz rekurzivni upit. Svaki redak upita sadrži dva susjedna broja u nizu, a sljedeći red se izračunava kao (zadnji broj, zbroj brojeva) prethodnog retka. Dakle, svi brojevi osim prvog i posljednjeg pojavljuju se dvaput, tako da su samo prvi brojevi svakog retka uključeni u rezultat.

Faktorijel:

Primjer za verzije Oracle 10g SQL, Oracle 11g SQL

Ovaj primjer pokazuje upotrebu klauzule modela, dostupne počevši od Oraclea 10g, kako bi se nizovi upita tretirali kao elementi polja. Svaki redak sadrži dva polja - red broj n i njegov faktorijel f.

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

Fibonaccijevi brojevi:

Primjer za verzije Oracle 10g SQL, Oracle 11g SQL

Ovaj primjer pokazuje upotrebu klauzule modela, dostupne počevši od Oraclea 10g, kako bi se nizovi upita tretirali kao elementi polja. Svaki redak sadrži dva polja – sam Fibonaccijev broj i konkatenaciju svih brojeva koji su mu manji ili jednaki. Iterativno spajanje brojeva u istom upitu u kojem su generirani jednostavnije je i brže od združivanja kao samostalne radnje.

odaberite max (s) || ", ..." iz (odaberi s iz dualnog modela vrati dimenziju svih redaka po (0 d) mjere (cast ("" kao varchar2 (200)) s, 0 f) ponavljanje 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 - 1] || "," || to_char (f [broj_iteracije]))));

Faktorijel:

Primjer za verzije MySQL 5

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

Fibonaccijevi brojevi:

Primjer za verzije MySQL 5

Zamijenite TABLE bilo kojom tablicom kojoj možete pristupiti, na primjer mysql.help_topic.

odaberite 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

Pozdrav svijete !:

Primjer za verzije Oracle 10g SQL, Oracle 11g SQL

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

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

Faktorijel:

Primjer za verzije Oracle 10g SQL, Oracle 11g SQL

Ovaj primjer pokazuje iterativno izračunavanje faktorijala pomoću PL / SQL.

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

Fibonaccijevi brojevi:

Primjer za verzije Oracle 10g SQL, Oracle 11g SQL

Ovaj primjer koristi iterativno određivanje Fibonaccijevih brojeva. Već izračunati brojevi pohranjeni su u strukturi podataka varijable - analognom nizu.

declare type vector je varray (16) broja; fib vektor: = vektor (); ja broj; s varchar2 (100); započeti fib. produžiti (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) || ","; krajnja petlja; dbms_output. put_line (s || "..."); kraj;

Kvadratna jednadžba:

Primjer za verzije Oracle 10g SQL, Oracle 11g SQL

Ovaj primjer je testiran u SQL * Plus, TOAD i PL / SQL Developer.

Čisti SQL vam omogućuje da unesete varijable tijekom izvršavanja upita kao zamjenjive varijable. Za definiranje takve varijable, njezino ime (u ovom slučaju, A, B i C) mora se koristiti s ampersandom & ispred njega kad god se trebate pozvati na tu varijablu. Kada se upit izvrši, od korisnika se traži da unese vrijednosti svih zamjenjivih varijabli korištenih u upitu. Nakon unosa vrijednosti, svaka referenca na takvu varijablu zamjenjuje se njenom vrijednošću, a rezultirajući zahtjev se izvršava.

Postoji nekoliko načina za unos vrijednosti zamjenskih varijabli. U ovom primjeru, prvoj referenci na svaku varijablu ne prethodi jedan, već dvostruki ampersand &&. Dakle, vrijednost za svaku varijablu se unosi samo jednom, a sve sljedeće reference na nju bit će zamijenjene istom vrijednošću (kada se koristi jedan ampersand u SQL * Plus, vrijednost za svaku referencu na istu varijablu mora se unijeti zasebno) . U PL / SQL Developeru, svim referencama varijabli mora prethoditi jedan &, inače će se pojaviti pogreška ORA-01008 "Sve varijable nisu vezane".

Prvi redak primjera specificira znak decimalnog separatora koji se koristi pri pretvaranju korijenskih brojeva u nizove.

Sam zahtjev se sastoji od četiri različita zahtjeva. Svaki upit vraća niz koji sadrži rezultat izrač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 dual gdje & A! = 0 i & B * & B - 4 * & A * && C = 0 unija odabir "x1 =" || to_char ((- & B + sqrt (& B * & B - 4 * & A * & C)) / 2 / & A) || ", x2 =" || to_char (- & B - sqrt (& B * & B - 4 * & A * & C)) / 2 / & A iz 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 ) || ")" iz duala gdje je & A! = 0 i & B * & B - 4 * & A * & C< 0 ;

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

Naziv SQL jezika obično se izgovara slovima "es-q-el". Ponekad se koristi mnemonički naziv "See-Quel".

SQL jezik pruža korisniku (uz minimalan napor s njegove strane) sljedeće mogućnosti:

Kreirajte baze podataka i tablice s potpunim opisom njihove strukture

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

Izvršite jednostavne i složene upite.

SQL je relacijski potpun.

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

SQL jezik ima dvije glavne komponente:

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

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

SQL jezik je neproceduralan, odnosno pri njegovoj upotrebi potrebno je naznačiti koje informacije treba dobiti, a ne kako se one mogu dobiti. SQL naredbe su obične engleske riječi (SELECT, INSERT, itd.). Pogledajmo prvo SQL DML izraze:

SELECT - dohvaćanje podataka iz baze podataka

INSERT - umetanje podataka u tablicu

AŽURIRANJE - ažuriranje podataka u tablici

DELETE - brisanje podataka iz tablice

SELECT izjava

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

Najjednostavniji SQL upit koji ga koristi izgleda ovako:

SELECT col_name FROM tbl

Nakon ključne riječi za odabir slijedi popis stupaca odvojenih zarezima koji će biti vraćeni iz upita. Ključna riječ from određuje iz koje tablice (ili pogleda) dohvaćati podatke.

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

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

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

Rezultat upita

ODABIR * IZ proizvoda;

bit će cijela tablica proizvoda.

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

SELECT col1, col2, ..., coln FROM tbl;

Dakle, rezultat upita

ODABERITE vrstu, cijenu od proizvoda;

bit će stol

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

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

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

ODABERITE * IZ proizvoda gdje je cijena<3200;

Njegov rezultat:

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

Korištenje konstrukcije IZMEĐU var1 I var2 omogućuje vam da provjerite jesu li vrijednosti bilo kojeg izraza unutar raspona var1 do var2 (uključujući ove vrijednosti):

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

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

Nazivi stupaca navedeni u klauzuli SELECT mogu se preimenovati. Za to se koristi ključna riječ AS, koja se, međutim, može izostaviti jer se implicitno podrazumijeva. Na primjer, zahtjev

SELECT Tip AS model, Type_id AS broj FROM proizvoda gdje je Type_id = 3

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

Operator LIKE služi za usporedbu niza s uzorkom:

SELECT * FROM tbl gdje col_name KAO "abc"

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

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

Možete pronaći sve zapise tablice proizvoda u kojima vrijednost vrste počinje slovom "a" kako slijedi:

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

auto vaga

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

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

Da biste provjerili usklađenost vrijednosti sa nizom "20%", možete koristiti sljedeći operator:

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

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

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

Zadani rezultat odabira vraća zapise istim redoslijedom u kojem su pohranjeni u bazi podataka. Ako trebate sortirati zapise prema jednom od stupaca, morate koristiti klauzulu ORDER BY, nakon koje slijedi naziv ovog stupca:

SELECT * FROM tbl ORDER BY col_name;

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

Zapisi se mogu razvrstati po nekoliko stupaca. Da biste to učinili, njihova imena moraju biti navedena nakon ORDER BY, odvojena zarezima:

SELECT * FROM tbl ORDER BY col_name1, col_name2.

Zapisi će biti razvrstani prema polju col_name1; ako postoji nekoliko zapisa s istom vrijednošću u stupcu col_name1, oni će biti razvrstani prema polju col_name2.

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

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

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

Stoga se informacije često paginiraju i prikazuju korisniku u komadima. Navigacija po stranici koristi se s ključnom riječi limit nakon koje slijedi broj zapisa za prikaz. Sljedeći upit dohvaća prvih 10 zapisa, dok istovremeno izvodi obrnuto sortiranje u polju col_name1:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10

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

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

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

Danas su SQL tečajevi za lutke sve popularniji. To se može objasniti vrlo jednostavno, jer se u suvremenom svijetu sve više može naći takozvanih "dinamičkih" web servisa. Razlikuju se u prilično fleksibilnoj ljusci i temelje se na Svi programeri početnici koji se odluče posvetiti stranicama, prije svega, upisuju se na SQL tečajeve "za lutke".

Zašto učiti ovaj jezik?

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

Što je SQL?

Ili strukturirani jezik upita, stvoren je s jednom jedinom svrhom: definirati i omogućiti im pristup te ih obraditi u prilično kratkom vremenskom razdoblju. Ako znate SQL vrijednost, tada ćete shvatiti da ovaj poslužitelj pripada takozvanim "neproceduralnim" jezicima. To jest, njegove mogućnosti uključuju samo opis svih komponenti ili rezultata koje želite vidjeti u budućnosti na web mjestu. Ali to ne pokazuje točno kakve će rezultate dobiti. Svaki novi zahtjev na ovom jeziku je takoreći dodatni "dodatak". Upiti će se izvršavati redoslijedom kojim su upisani u bazu podataka.

Koji se postupci mogu izvesti pomoću ovog jezika?

Unatoč svojoj jednostavnosti, SQL baza podataka omogućuje stvaranje prilično velikog broja upita. Dakle, što možete učiniti ako naučite ovaj važan programski jezik?

  • stvoriti širok izbor stolova;
  • primati, pohranjivati ​​i mijenjati primljene podatke;
  • mijenjajte strukture tablica prema vlastitom nahođenju;
  • kombinirati primljene informacije u pojedinačne blokove;
  • izračunati primljene podatke;
  • osigurati potpunu zaštitu informacija.

Koje su najpopularnije naredbe na ovom jeziku?

Ako odlučite pohađati tečaj SQL Dummies, 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 stvaranje, modificiranje 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 tablica ili pogleda.
  3. TCL je tim koji upravlja raznim vrstama transakcija. Njegova glavna svrha je odrediti napredak transakcije.
  4. DML - manipulira primljenim podacima. Njegova je zadaća omogućiti korisniku da premjesti razne informacije iz baze podataka ili ih tamo unese.

Vrste privilegija koje postoje na ovom poslužitelju

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

  1. Vrsta objekta - korisniku je dopušteno izvršiti bilo koju naredbu samo u odnosu na određeni objekt koji se nalazi u bazi podataka. Istodobno, privilegije se razlikuju za različite objekte. Također se vežu ne samo na određenog korisnika, već i na tablice. Ako je netko, koristeći svoje mogućnosti, stvorio stol, onda se smatra njegovim vlasnikom. Stoga ima pravo drugim korisnicima dodijeliti nove privilegije vezane uz informacije u njemu.
  2. Vrsta sustava je tzv. data copyright. Korisnici koji su dobili takve privilegije mogu kreirati razne objekte u bazi podataka.

Povijest stvaranja SQL-a

Ovaj jezik je stvorio IBM-ov istraživački laboratorij 1970. godine. Tada mu je naziv bio nešto drugačiji (SEQUEL), ali je nakon nekoliko godina korištenja promijenjen, malo skraćen. Unatoč tome, i danas mnogi poznati svjetski stručnjaci iz područja programiranja još uvijek to ime izgovaraju na starinski način. SQL je stvoren s jednim jedinim ciljem - izmisliti jezik koji bi bio toliko jednostavan da bi ga 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 skupina 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. stvorena je standardna verzija koja je i danas popularna. Tečajevi SQL Dummies omogućuju vam da naučite puno više o usluzi i potpuno je savladate u nekoliko tjedana.

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

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

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

SQL ključne riječi

SQL riječi podijeljene su u nekoliko grupa.

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

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

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

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

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

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

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

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

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

Sustavi baza podataka koji koriste SQL

  • InterBase
  • MySQL
  • Oracle
  • PostgreSQL
  • SQL Server

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

Jezik SQL

Dakle, općenito smo se upoznali s osnovnim konceptima teorije baza podataka, instalirali i konfigurirali MySQL za rad. 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ćuje stvaranje, uređivanje i brisanje informacija pohranjenih u bazama podataka, stvaranje novih baza podataka i još mnogo toga. SQL je ANSI (American National Standards Institute) i ISO (International Organization for Standardization) standard.

Malo povijesti

Prvi međunarodni jezični standard SQL usvojen je 1989. godine, često se naziva SQL/89 ... Među nedostacima ovog standarda, prvi je činjenica da postavlja mnoga važna svojstva koja su definirana u implementaciji. Stoga je bilo mnogo odstupanja u jezičnim implementacijama različitih proizvođača. Osim toga, bilo je tvrdnji da standard ne spominje praktične aspekte jezika, kao što je njegovo ugrađivanje u programski jezik C.

Sljedeći međunarodni jezični standard SQL usvojena je krajem 1992. godine i postala poznata kao SQL/92 ... Pokazalo se da je puno točnije i potpunije od SQL/89 , iako nije bio lišen nedostataka. Većina današnjih sustava gotovo 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 predstavlja okosnicu nekoliko sustava 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 izrađen je na način da se u budućnosti postigne učinkovitiji rad na području standardizacije.

MySQL je SQL92 početničke razine, sadrži nekoliko proširenja standarda i nastoji u potpunosti podržati ANSI SQL99 standard, ali bez žrtvovanja brzine i kvalitete koda.

Nadalje, govoreći o osnovama jezika SQL , mi ćemo se držati njegove implementacije u MySQL DBMS.

Osnovni operatori jezika SQL

Funkcije svakog DBMS-a uključuju:

  1. stvaranje, brisanje, modifikacija baze podataka (DB);
  2. dodavanje, mijenjanje, brisanje, dodjeljivanje korisničkih prava;
  3. unos, brisanje i mijenjanje podataka u bazi podataka (tablice i zapisi);
  4. dohvaćanje podataka iz baze podataka.

Samo administratori DBMS-a ili privilegirani korisnici imaju pristup prve dvije funkcije. Razmotrimo kako se rješavaju posljednja dva zadatka (u stvari, radi se o sedam zadataka).

Prije nego što učinite bilo što s podacima, morate stvoriti tablice u koje će se ti podaci pohranjivati, naučiti kako promijeniti strukturu tih tablica i izbrisati ih, ako je potrebno. Za ovo na jeziku SQL postoje operateri STVORI TABLU, ALTER TABLE i ISPUSTI STOL.

Izjava CREATE TABLE

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) ZADANO "Rusija"); Primjer 10.1. Izrada tablice Osobe

S naredbom SHOW specifičnom za MySql možete vidjeti postojeće baze podataka, tablice u bazi podataka i polja u tablici.

Prikaži sve baze podataka:

mysql> PRIKAŽI baze podataka;

Napravite knjigu trenutne baze podataka i pokažite sve tablice u njoj:

mysql> knjiga korištenja; mysql> prikaži tablice;

Prikaži sve stupce u tablici Osobe:

mysql> prikaži stupce iz osoba;

DROP TABLE izraz

Operater ISPUSTI STOL briše jednu ili više tablica. Svi podaci i definicije tablice su uklonjeni, stoga budite oprezni kada koristite ovu naredbu.

Sintaksa:

DROP TABLE naziv_tablice [, ime_tablice, ...]

U MySQL 3.22 i novijim, ključne riječi IF EXISTS mogu se koristiti za sprječavanje greške ako navedene tablice ne postoje.

Opcije RESTRICT i CASCADE olakšavaju prijenos programa iz drugih DBMS-a. Trenutno nisu uključeni.

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

ALTER TABLE izraz

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

Sintaksa:

ALTER TABLE naziv_tablice alter_specification [, alter_specification ...]

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

  • dodavanje polja:

    DODAJ definiciju_stupca

    DODAJ (definicija_stupca, definicija_stupca, ...)

  • dodavanje indeksa:

    DODATI INDEX [indeks_name] (indeks_name_stupac, ...) ili DODAJ PRIMARNI KLJUČ (indeksirano_naziv_stupca, ...) ili DODAJ UNIQUE [indeks_name] (indeks_name_column, ...) ili DODAJ CIJELI TEKST [indeks_name] (indeks_name_stupac, ...)

  • mijenjanje polja:

    ALTER column_name (POSTAVI 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

  • preimenovanje tablice:

    RENAME new_table_name

  • promjena redoslijeda polja tablice:

    RED PO polju

    table_options

Ako operater ALTER TABLE koristi se za promjenu definicije tipa stupca, ali DESCRIBE naziv_tablice pokazuje da se stupac nije promijenio, onda, možda, MySQL ignorira ovu izmjenu iz jednog od razloga opisanih u posebnom odjeljku dokumentacije. Na primjer, kada pokušavate promijeniti stupac VARCHAR u CHAR, MySQL će nastaviti koristiti VARCHAR ako navedena tablica sadrži druge stupce varijabilne duljine.

Operater ALTER TABLE stvara privremenu kopiju izvorne tablice tijekom izvođenja. Zatražena promjena se izvodi na kopiji, zatim se izvorna tablica ispušta i nova se preimenuje. To je učinjeno tako da se sva ažuriranja, osim neuspjelih, automatski uključe u novu tablicu. U vrijeme izvođenja ALTER TABLE izvornu tablicu mogu čitati drugi klijenti. Ažuriranja i upisi u ovu tablicu pauziraju se dok nova tablica ne bude spremna. Treba napomenuti da kada koristite bilo koju drugu opciju za ALTER TABLE osim RENAME, MySQL će uvijek kreirati privremenu tablicu, čak i ako podatke, strogo govoreći, nije potrebno kopirati (na primjer, ako je naziv stupca promijenio).

Primjer 10.3... Dodajte polje u kreiranu tablicu Osobe da zabilježite godinu rođenja osobe:

mysql> ALTER TABLE Osobe DODAJ bdan CJELI CIJELI NAKON prezimena; Primjer 10.3. Dodavanje polja u tablicu Osobe za bilježenje godine rođenja osobe

Dakle, naučili smo kako raditi s tablicama: stvarati, brisati i mijenjati ih. Sada ćemo shvatiti kako to učiniti s podacima pohranjenim u ovim tablicama.

SELECT izjava

Operater IZABERI koristi se za dohvaćanje redaka odabranih iz jedne ili više tablica. Odnosno, uz njegovu pomoć postavljamo stupce ili izraze za dohvaćanje (select_expressions), tablice (table_reference) iz kojih treba napraviti odabir i, eventualno, uvjet (where_definition) da podaci u tim stupcima trebaju odgovarati do i redoslijeda kojim se ti podaci trebaju izdati.

Osim toga, operater IZABERI može se koristiti za dohvaćanje izračunatih redaka bez referenciranja bilo koje tablice. Na primjer, da biste izračunali koliko je 2 * 2, trebate samo napisati

mysql> SELECT 2 * 2;

Pojednostavljena struktura operatora IZABERI može se predstaviti na sljedeći način:

Uglate zagrade označavaju da je zatvoreni pogon neobavezan, cijev | znači popis mogućih opcija. Nakon ključne riječi ORDER BY navedite naziv stupca, broj (cijeli broj bez predznaka) ili formulu i način redoslijeda (uzlazno - ASC, ili silazno - DESC). Uzlazni poredak koristi se prema zadanim postavkama.

Kada upišemo "*" u select_expression, to znači odabrati sve stupce. Osim "*" funkcije kao što su max, min i avg mogu se koristiti u select_expression.

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

Odaberite naslov i opis (naslov, opis) artefakta na broju 10:

INSERT izjava

Operater UMETNUTI umeće nove retke u postojeću tablicu. Operater ima nekoliko oblika. Parametar table_name u svim ovim obrascima specificira tablicu u koju treba umetnuti retke. Stupci koji se trebaju postaviti navedeni su u popisu naziva stupaca (ime_stupca) ili u dijelu SET.

Sintaksa:

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

    Ovaj naredbeni obrazac UMETNUTI umeće retke prema točnim vrijednostima navedenim u naredbi. Stupci su navedeni u zagradama iza naziva tablice, a njihove vrijednosti iza ključne riječi VALUES.

    Na primjer:

    mysql> UMETNI U Osobe (prezime, dan rođenja) VRIJEDNOSTI ("Ivanov", "1934");

    umetnut će red u tablicu Osobe, u kojem će vrijednosti prezimena (prezime) i datuma rođenja (bdan) biti navedene kao "Ivanov" odnosno "1934".

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

    Ovaj naredbeni obrazac UMETNUTI umeće retke odabrane iz druge tablice ili tablice.

    Na primjer:

    umetnut će u tablicu Artefakti u polje "autor" (autor) vrijednost identifikatora odabranog iz tablice Osobe pod uvjetom da se osoba preziva Ivanov.

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

    Na primjer:

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

    Ova naredba umetnut će u tablicu Osobe u polje prezime vrijednost "Petrov", au polje ime - niz "Ivan".

Oblik UMETNI ... VRIJEDNOSTI popis s više vrijednosti podržan je u MySQL verziji 3.22.5 i novijim. Sintaksa izraza naziv_stupca = izraz podržano u MySQL verziji 3.22.10 i novijim.

Primjenjuju se sljedeći ugovori.

  • Ako nije naveden popis stupaca za UMETNI ... VRIJEDNOSTI ili INSERT ... SELECT, tada vrijednosti za sve stupce moraju biti definirane na popisu VRIJEDNOSTI () ili kao rezultat IZABERI... Ako je redoslijed stupaca u tablici nepoznat, možete ga koristiti za dobivanje DESCRIBE naziv_tablice.
  • Svaki stupac kojem nije izričito dodijeljena vrijednost bit će postavljen na zadanu vrijednost. Na primjer, ako dati popis stupaca ne uključuje sve stupce u danoj tablici, tada se nespomenuti stupci postavljaju na svoje zadane vrijednosti.
  • Izraz se može odnositi na bilo koji stupac koji je prethodno bio naveden na popisu vrijednosti. Na primjer, možete odrediti sljedeće:

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

    Ali ne možete odrediti:

    mysql> INSERT INTO table_name (col1, col2) VRIJEDNOSTI (col2 * 2.15);

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

Parametri LOW_PRIORITY i DELAYED koriste se kada veliki broj korisnika radi na tablici. Oni propisuju postavljanje prioriteta ove operacije nad operacijama drugih korisnika. Ako je navedena ključna riječ LOW_PRIORITY, tada se izvršava ova naredba UMETNUTI bit će odgođeno dok drugi klijenti ne završe čitanje ove tablice. U ovom slučaju, klijent mora čekati dok se ova naredba umetanja ne završi, što može potrajati dugo ako se tablica intenzivno koristi. Nasuprot tome, naredba UMETANJE ODGOĐENO omogućuje određenom klijentu da odmah nastavi, neovisno o drugim korisnicima.

Ako je tim UMETNUTI navedena je ključna riječ IGNORE, zatim svi retki koji imaju duple ključeve PRIMARNI ili JEDINSTVENO u ovoj tablici će biti zanemareno i neće biti uključeno u tablicu. Ako IGNORE nije navedeno, tada se ova operacija umetanja prekida kada se naiđe na red koji ima dupliciranu postojeću vrijednost ključa.

UPDATE izjava

Sintaksa:

Operater AŽURIRANJE ažurira vrijednosti postojećih stupaca tablice prema unesenim vrijednostima. Naredba SET određuje koje stupce treba izmijeniti i koje vrijednosti treba postaviti u njima. Klauzula WHERE, ako postoji, određuje koje retke treba ažurirati. Inače se ažuriraju svi retki. Ako je navedena klauzula ORDER BY, retki će se ažurirati redoslijedom navedenim u njoj.

Ako je navedena ključna riječ LOW_PRIORITY, tada se izvršava ova naredba AŽURIRANJE odgađa dok drugi klijenti ne završe čitanje ove tablice.

Ako je navedena ključna riječ IGNORE, naredba ažuriranja neće biti prekinuta čak i ako dođe do pogreške dupliciranog ključa. Sukobne linije neće se ažurirati.

Ako izraz koji navodi novu vrijednost za stupac koristi naziv ovog polja, tada naredba AŽURIRANJE koristi trenutnu vrijednost za ovaj stupac. Na primjer, sljedeća naredba postavlja stupac death_date na jedan veći od njegove trenutne vrijednosti:

mysql> AŽURIRAJ Osobe SET death_date = death_date + 1;

Od MySQL 3.23, parametar LIMIT # može se koristiti kako bi se osiguralo da je promijenjen samo određeni broj redaka.

Na primjer, takva će operacija zamijeniti naslov naslova u prvom retku naše tablice izložaka redkom "Lamp computer":

mysql> UPDATE Artefakti SET title = "(! LANG: Lamp računalo" Limit 1;!}

Izjava DELETE

Operater IZBRISATI uklanja retke iz tablice table_name koji ispunjavaju uvjete navedene u where_definition i vraća broj izbrisanih zapisa.

Ako operater IZBRISATI se pokreće bez definicije WHERE, tada se brišu svi reci.

Sintaksa:

Na primjer, sljedeća naredba će izbrisati iz tablice Osobe

Vrhunski povezani članci