8447636-Mysql

May 27, 2018 | Author: strongerblonde | Category: N/A
Share Embed Donate


Short Description

mysql...

Description

MYSQL 1. Introducere 1.1. Ce este mySQL? MySQL este MySQL este unul dintre cele mai populare sisteme de gestiune de b aze de date (SGBD) in regim OpenSource. Producatorul sau se numeste MySQL AB si AB si este o companie a carei principala activitate consta in oferirea de servicii legate de acest SGBD. Cele mai importante caracteristici ale MySQL sunt: MySQL sunt: •







Este un SGBD.  sigura gestiunea unei colectii structurate structurate de date. Este un SGBD relational . Datele sunt organizate in tabele. !ntre tabele sunt stabilite relatii si constrangeri de integritate. Pentru gestiunea datelor foloseste limba"ul SQL ( SQL (Structured Structured Query Language) Language ) care este un standard in acest domeniu. Este un sistem client-server . Serverul de baze de date este separat logic si deseori fizic (pe calculatoare diferite) de programele client care asigura interfata operatiilor cu baza de d ate. Serverul MySQL suporta MySQL suporta o paleta larga de programe client# scrise in diverse limba"e de programare.

2.1. Crearea unei baze de date Crearea unei baze de date se poate face simpu apeand comanda! mys"# C$%A&% 'A&ABAS% nume_db( Crearea unei baze de date corespunde crearii unui director in care )or fi pastrate eementee specifice cum ar fi! tabee* indecsi* +urnae etc. 'aca de+a e,ista o baza de date cu numee specificat se )a da un mesa+ de eroare. -entru stergerea unei baze de date se poate utiiza sinta,a! mys"# '$- 'A&ABAS% nume_db( 2.2 /tiizarea unei baze de date -entru seectarea unei baze de date se )a foosi comanda /S% /S%.. -rin aceasta se stabieste baza de date in conte,tu careia se )or e,ecuta interogarie interogarie uterioare. uterioare. %a se )a numi baza de date acti)a. Sinta,a acestei comenzi este! mys"# /S% nume0db( Ciar daca o singura baza de date poate fi acti)a a un moment dat* o interogare poate referi tabee si din ate baze de date prin utiizarea prefi,arii cu numee bazei de date respecti)e e,. db2.tabea3 db2.tabea34. 4. %,empu! mys"# /S% mys"( mys"# S56 &ABL%S( mys"# S%L%C& 7 8$M db( 2. &ipuri de date

1

2.1. &ipuri de date numerice

1. $!%&!%$ $!%&!%$ '()  '() '*%S!G%ED '+E,-!// %umar intreg foarte mic. !ntervalul de valori posibile este '0123..124. Daca se specifica UNSIGNED  intervalul este '5..266. S//!%$ '()  '() '*%S!G%ED '+E,-!// 2. S//!%$ %umar intreg mic. !ntervalul de valori posibile este '072483..72484. Daca se specifica UNSIGNED  intervalul este '5...86676. 3. ED!*!%$ ED!*!%$ '()  '() '*%S!G%ED '+E,-!// %umar intreg mediu. !ntervalul de valori posibile este '03733853..3733854. Daca se specifica UNSIGNED  intervalul este '5..18444216. 4. !%$ !%$ '()  '() '*%S!G%ED '+E,-!// %umar intreg normal. !ntervalul de valori posibile este '02194937893..2194937894. Daca se specifica UNSIGNED intervalul este '5..9298426. 5. !%$EGE, !%$EGE, '()  '() '*%S!G%ED '+E,-!// Sinonim cu !%$ !%$.. B!G!%$ '()  '() '*%S!G%ED '+E,-!// 6. B!G!%$ %umar intreg mare. !ntervalul de valori posibile este '0227742578369446353..227742578369446354; Daca se specifica UNSIGNED  intervalul este '5..1399849954745661816. 7. /-$ /-$ '(#  '(# D) '+E,-!// %umar in virgula flotanta simpla precizie (numar real). !ntervalul de valori posibile este '07.952327988E SELECT SELECT "hello",  "hello", "'hello'", "''hello''", "hel""lo", "\"hello" ;

Constantele intregi sunt intregi  sunt reprezentate printr0un sir de cifre zecimale. Constantele reae contin reae contin semnul ?.? pentru specificarea partii zecimale. mbele mbele tipuri pot fi precedate de semnul ?0? pe ntru a indica numere negative. %,! 17679 792.7967 Constanta ;/LL este ;/LL este folosita cu semnificatia Hnici o valoareH. Se face diferenta intre %*// si numarul 5 sau sirul vid HH.

9.2. Identificatori Identificatori %umele pentru baza de date# tabele# coloane# indecsi sau alias0uri trebuie sa indeplineasca conditiile normale pentru identificatori in limab"e de programare: sa fie o combinatie de litere# cifre si semne grafice care incep cu o litera. !n plus mS/ impune: Identificato Identificatorr Luni!e !ai!a Caractere Caractere inter#i$e inter#i$e

Baza de date 64

!

"a#ela

64

! si .

$%l%ana

64

&lias

255

,eferirea la o coloana in cadrul unei interogari se poate face in mai multe moduri# functie de conte>tul e>istent: %eferinta la coloana

Se!nificatie

nume'c%l%ana

Re(e)inta la c%l%ana unei ta#ele din #aza de date activa. *e +%ate (%l%si daca inte)%,a)ea nu c%ntine si alte ta#ele ca)e au c%l%ane cu nume identice

nume nume't 'ta# a#el ela. a.nu nume me'c 'c%l %l%a %ana na

Re(e Re(e)i )int ntaa e-+ e-+li lici cita ta la c%l% c%l%ana ana ta#e ta#ele leii s+e s+eci ci(i (ica cate te +)in +)in nume nume't 'ta# a#el elaa din din #aza #aza de date date acti activa va..

nume'B.nume'ta#ela.nume'c%l%ana

Re(e)inta e-+licita e-+licita la c%l%ana ta#elei s+eci(icate +)in nume'ta#ela din #aza de date s+eci(icata +)in nume'B /nu este necesa) sa (ie cea activa.

!dentificatorii pot fi scrisi in general cu orice combinatie de litere mari sau mici. Pentru numele bazei de date si cel al tabelelor unele# implementari impun respectarea tipului de caractere folosit la definirea elementelor respective. Ca si regula generala# este bine sa se pastreze o conventie de notare care sa nu fie sc=imbata de la o interogare la alta. - regula simpla este sa se scrie comenzile S/ cu litere mari si identificatorii definiti de utilizator cu litere mici. 9.9. Comentarii S/ suporta trei tipuri de comentarii prin care se poate e>plica codul. Ele sunt: • •



Comentarii pe o singura linie care incep cu M si continua pana la sfarsitul linieiN Comentarii pe o singura linie care incep cu 00 00 si  si continua pana la sfarsitul liniei. Este necesar cel putin un spatiu dupa semnul 00 00NN Comentarii pe mai multe linii care incep cu @O @O si  si se inc=eie cu O@ O@ N  N

4

Rulati secventele:

Activitate &

mysql> SELECT SELECT 11;  11; ( Ace$t co!entariu continua )ana la $far$itul l iniei   mysql> SELECT SELECT 11;  11; ** Ace$t co!entariu continua )ana la $far$itul liniei mysql> SELECT SELECT 1  1 + Ace$ta e$te un co!entariu i!-ricat +  1;   mysql> SELECT SELECT 1  1 . + . Ace$ta e$te . un co!entariu !ulti*linie . + . 1;

peratori si functii mySQL 9.3. -aranteze de grupare Sunt folosite pentru a sc=imba ordinea de evaluare in interiorul e>presiilor. Parantezele folosite sunt doar paranteze rotunde. Rulati secventele:

Activitate /

mysql> SELECT SELECT 1&/;  1&/; mysql> SELECT SELECT 01&/;  01&/;

9. SELECT SELECT   14512/6435624164214512/6435624164275; mysql> SELECT SELECT   14512/6435624164214512/64356241642; + de)a$ire 0nu!ar intre . 82 -it + mysql> SELECT SELECT /+3;  /+3; mysql> SELECT SELECT 3+0/*/;  3+0/*/;

9.>. peratori ogici -peratorii logici intorc 1 pentru ade)arat si ade)arat si 5 pentru fas. fas. •





%-$ ; 0 %egatie logica. !ntoarce 1 daca argumentul este 5# altfel intoarce 5. E>ceptie: %-$ %*// intoarce %*//. -,  0   0 S* logic. !ntoarce 1 daca cel putin un argument nu este 5 sau %*//.  %D  0   0 S! logic. !ntoarce 5 sau %*// daca cel putin un argument este 5 sau %*//# altfel intoarce 1. Rulati secventele:

Activitate 3

mysql> SELECT SELECT 9:T  9:T 1, 9:T 9LL, < 011, < 11 ; mysql> SELECT SELECT 1  1 :% 5, 5 :% 01*1, 1 == 9LL ; mysql> SELECT SELECT 1  1 >> 9LL, 1 >> 5, 1 A9? 051 ;

9.. peratori de comparare

5

-peratorii de comparare returneaza 1 pentru adevarat# 5 pentru fals si %*// daca nu se poate efectua comparatia. Ei pot compara atat numere cat si siruri de caractere. /a compararea unui numar cu un sir se incearca transformarea sirului in numarul pe care il contine. /a compararea a doua siruri nu se va tine cont de litere mari@mici. • • • • • • •

• • • • • • •

Q egalitateN la compararea cu %*// intoarce %*//N R sau R  sau ;Q ;Q inegalitateN  inegalitateN R 0 mai micN RQ 0 RQ  0 mai mic sau egalN  0 mai mareN Q 0 Q  0 mai mare sau egalN RQ 0 RQ  0 ec=ivalentaN la compararea cu %*// intoarce 5 sau 1 (1 doar la %*// RQ %*//)N daca ambii operanzi sunt diferiti de %*//se comporta ca si QN !S %*// 0 %*// 0 testeaza daca operandul are valoarea %*//N !S %-$ %*// 0 %*// 0 testeaza daca operandul este diferit de %*//N !S%*//(e>pr) 0 !S%*//(e>pr)  0 testeaza daca e>presia are valoarea %*//N e>pr BE$TEE% min %D ma> 0 testeaza daca valoarea e>presiei este in intervalul 'min..ma>N e>pr !% (value#...) 0 (value#...)  0 testeaza daca valoarea e>presiei este in lista de valori specificataN e>pr %-$ !% (value#...) 0 (value#...)  0 testeaza daca valoarea e>presiei nu este in lista de valori specificataN !(e>pr1#e>pr2#e>pr7) 0 !(e>pr1#e>pr2#e>pr7)  0 testeaza valoarea de adevar a e>pr1 (falsa daca este 5 sau %*//) si intoarce e>pr2 pentru adevarat respectiv e>pr7 pentru falsN Rulati secventele:

Activitate 8

mysql> SELECT SELECT 1  1 @ 5, '575' @ 5, '751' @ 5751 ; mysql> SELECT SELECT 751  751 . '5751', 'a-c' . 'a-cd' , 'a-c' . 'ABC' ; mysql> SELECT SELECT 571  571 @ &, & .@ &, 3 . '/' ;   mysql> SELECT SELECT 5  5 @. 9LL, 9LL @ 9LL, 9LL @. 9LL ;   mysql> SELECT SELECT 5  5 IS 9LL, 9LL IS 9LL, 5 IS 9:T 9LL ;   mysql> SELECT SELECT 1  1 BETEE9 & A9? /, '-' BETEE9 'a' A9? 'c', & BETEE9 & A9? '/' ;   mysql> SELECT SELECT &  & I9 05,/,3,'a-c' , 'a-c' I9 05,/,3,'A-c' ;   mysql> SELECT SELECT ID01>t&,&,/,  ID01>t&,&,/, ID01>lt&,'da','nu' ;

9.@. 8unctii pe siruri de caractere unctiile pe siruri considera implicit primul caracter pe pozitia 1. • • •

• • •

• • •





• •

 SC!!(str) 0 intoarce codul SC!! al caracterului de pe pozitia 1 din sir. Daca sirul este vid intoarce 5.  SC!!(str) 0 C-%(%# fromLbase# toLbase) 0 toLbase) 0 converteste numarul % considerat in baza fromLbase in valoarea sa in b aza toLbase. CA,(%#...) 0 converteste sirul de numere primite intr0un sir de caractere ale caror coduri SC!! sunt egale cu cele din sirul initial. C-%C$(str1#str2#...)  0 concateneaza sirurile primite ca argument# returnand sirul rezultat. /E%G$A(str) 0 /E%G$A(str)  0 intoarce lungimea (numarul de caractere) a sirului primit ca si argument. /-C$E(substr#str) P-S!$!-%(substr P-S!$!-% (substr !% str) str) 0  0 cauta prima aparitie a sirului substr in sirul str. Daca il gaseste returneaza pozitia# daca nu# returneaza 5. /E$(str#len) 0 /E$(str#len)  0 intoarce un sir format din primele len caractere din sirul dat. ,!GA$(str#len) 0 ,!GA$(str#len)  0 intoarce un sir format din ultimele len caractere din sirul dat. S*BS$,!%G(str#pos#len) !D(str#pos#len) 0 !D(str#pos#len)  0 intorc subsirul de pe pozitia pos# de lungime len caractere din sirul str. str. S*BS$,!%GL!%DEF(str#delim#count)  0 intoarce subsirul pana la count aparitii ale caracterului delimitator delim. Daca delim este pozitiv intoarce prima parte a sirului# daca este negativ# ultima parte. /$,!(str) ,$,!(str) $,!(str) 0 $,!(str)  0 intoarce sirul str fara spatiile de la inceput (/$,!)# (/$,!)# sfarsit (,$,!) (,$,!) sau din a mbele parti ($,!). SPCE(%) 0 SPCE(%)  0 intoarce un sir format din % spatii. /-TE,(str) *PPE,(str) 0 *PPE,(str)  0 intorc sirul str cu toate caracterele convertite la litere mici# respectiv litere mari.

6



sir (%-$) /!E tipar  0  0 compara sirul sir cu tiparul dat. !ntoarce adevarat (1) daca se potrivesc. $iparele $iparele pot include caracterele speciale: ?L? care se potriveste cu orice caracter si ?K? care poate inlocui orice secventa de 5 sau mai multe caractere. E>. ?ana? /!E ?anL?# ?ana? /!E ?aK?# ?ana? %-$ /!E ?aKz?. Rulati secventele:

Activitate 

mysql> SELECT SELECT ASCII0'5',  ASCII0'5', C:9F0"1&3",15,&, CGA%0,1&1 ; mysql> SELECT SELECT C:9CAT0'MH  C:9CAT0'MH', ', 'S', 'QL', LE9TG0'tet', L:CATE0'!e', L:CATE0'!e', 'Ana are ME%E' ; mysql> SELECT SELECT LEDT0'MHSQL',  LEDT0'MHSQL', &, %IGT0'MHSQL', /, SBST%I90'Ja$a)ort',2,3 ;   mysql> SELECT SELECT SBST%I9KI  SBST%I9KI9?E0'7! 9?E0'7!H$Nl7co!', H$Nl7co!', '7', &, C:9CAT0 C:9CAT0'A', 'A', LT%IM0' LT%IM0' na ' ;   mysql> SELECT SELECT C:9CAT0'a',SJ  C:9CAT0'a',SJACE08,'-', ACE08,'-', L:E%0'Ana are ME%E', JJE%0'Ana are ME%E' ; mysql> SELECT SELECT 'ana'  'ana' LIOE 'AnK', 'ana' LIOE 'aP', 'ana' LIOE 'aP#' ;

9.1. 8unctii matematice $oate functiile matematice intorc %*// in caz de eroare. • • •

• • • • • • • • • • •

• •

 BS(F) 0 valoarea absoluta (fara semn) a lui >.  BS(F) 0 S!G%(F) 0 S!G%(F)  0 testeaza semnul lui ># intoarce 01 pentru > negativ# 1 pentru > pozitiv si 5 in caz contrar -D(%#) K 0 modulo (restul impartirii) lui % la . /--,(F) 0 /--,(F)  0 cea mai mare valoare intreaga mai mica decat > (rotun"ire in "os) CE!/!%G(F) 0 CE!/!%G(F)  0 cea mai mica valoare intreaga mai mare decat > (rotun"ire in sus) ,-*%D(F) 0 ,-*%D(F)  0 rotun"ire la cel mai apropiat intreg EFP(F) 0 EFP(F)  0 e>ponentiala (e la puterea >) /-G(F) 0 /-G(F)  0 logaritm natural din > /-G15(F) 0 /-G15(F)  0 logaritm in baza 15 din > P-T(F#&) 0 P-T(F#&)  0 > la puterea  S,$(F) 0 S,$(F)  0 radical de ordinul 2 din > P!() 0 P!()  0 numarul P!N implicit se afiseaza cu 6 zecimale dar in calcule intervine cu dubla precizie C-S(F)# S!%(F)#$%(F) 0 S!%(F)#$%(F)  0 cosinus# sinus si tangenta de > ,%D() ,%D(%) 0 ,%D(%)  0 genereaza un numar pseudo0aleator in intervalul '5..1N prin % se poate specifica o valoare de initializare calcul /ES$(F#&#...) 0 /ES$(F#&#...)  0 intoarce cea mai mica valoare din lista valorilor specificate G,E$ES$(F#&#...)  0 intoarce cea mai mare valoare din lista valorilor specificate Rulati secventele:

Activitate 4

mysql> SELECT SELECT ABS0*/&,  ABS0*/&, SI90*/&, M:?0&6,15 ;   mysql> SELECT SELECT DL::%017&/,  DL::%017&/, CEILI9017&/, %:9?01734 ;   mysql> SELECT SELECT EJ0/,  EJ0/, L:0/, L:150155 ;   mysql> SELECT SELECT J:0&,3,  J:0&,3, SQ%T018, JI0 ;   mysql> SELECT SELECT C:S0JI0,  C:S0JI0, %A9?0&5, %A9?0&5, %A9?0 ; mysql> SELECT SELECT LEAST0&,5,  LEAST0&,5, LEAST0"B","A","C", %EATEST0&,5 ;

9.11. 8unctii de tip data caendaristica si timp • • • • • • • • • •

D&-TEE(date) 0 inde>ul zilei din spatamana al datei specificate (1Qduminica# 2Qluni etc.) D&-TEE(date) 0 D&-&E,(date) 0 D&-&E,(date)  0 numarul zilei din an pentru data specificata D&%E(date) 0 D&%E(date)  0 numele (in engleza) al zilei din data specificata -%$A%E(date)  0 numele (in engleza) al lunii din data specificata &E,(date) 0 &E,(date)  0 e>trage anul din data specificata A-*,(time) 0 A-*,(time)  0 e>trage ora din timpul precizat !%*$E(time) 0 !%*$E(time)  0 e>trage minutul din timpul precizat SEC-%D(time) 0 SEC-%D(time)  0 e>trage secunda din timpul precizat C*,D$E() 0 C*,D$E()  0 intoarce data curenta in format ?&&&&00DD? C*,$!E() 0 C*,$!E()  0 intoarce ora curenta in format ?AA::SS?

7



• •

%-T() S&SD$E() 0 S&SD$E()  0 intoarce data si ora curenta in format ?&&&&00DD ?&&&&00DD AA::SS? AA::SS? SECL$-L$!E(seconds)  0 intoarce timpul in format ?AA::SS? reprezentat de numarul de secunde specificate $!EL$-LSEC(time)  0converteste timpul specificat in numar de secunde scurse de la ora 55:55:55 Rulati secventele:

Activitate 6

mysql> SELECT SELECT 9:0,  9:0, ?AY:DEEO09:0, ?AY:DYEA%09:0 ;   mysql> SELECT SELECT ?AY9AME09:0,  ?AY9AME09:0, M:9TG9AME09:0, YEA%09:0 ;   mysql> SELECT SELECT C%TIME0,  C%TIME0, G:%0C%TIME0, MI9TE0C%TIME0 ;   mysql> SELECT SELECT SECKT:KTIME088,  SECKT:KTIME088, TIMEKT:KSEC0"555158" ;

9.12. 8unctii speciae • • • •



D$BSE() 0 numele bazei de date active *SE,() 0 numele utilizatorului coectat la server E,S!-%() E,S!-%() 0 returneaza versiunea serverului S/ instalat PSST-,D(str) SST-,D(str) 0 criptare sir dupa metoda interna prin care S/ isi pastreaza paroleleN criptarea nu este reversibila (nu se poate calcula sirul de plecare pornind de la c=eia criptata) -,$(%#D) -,$(%#D) 0 returneaza numarul % in format ?M#MMM#MMM.MM? cu D zecimale Rulati secventele:

Activitate 15

mysql> SELECT SELECT ?ATABASE0,  ?ATABASE0, SE%0, FE%SI:90 ;   mysql> SELECT SELECT D:%MAT0/2382/337/3,/,  D:%MAT0/2382/337/3,/, JASS:%?0")arola" ;

:. Crearea si stergerea tabeeor Datele rezultate din procesul de analiza a problemei ce trebuie implementata se impart in tabele prin procesul de normalizare. !n acest fel o baza de date va fi formata dintr0o colectie de tabele. Pentru a crea o tabela se va utiliza comanda S/ C,E$E $B/E.. $B/E C,E$E '$EP-,,& $B/E '! %-$ EF!S$S tblLname '(createLdefinition#...) '(createLdefinition#...) •

• •



$EP-,,& 0 specifica crearea unei tabele temporare care va fi stearsa automat la inc=iderea cone>iunii in care a fost creataN doua cone>iuni pot crea doua tabele temporare cu aceleasi nume# ele nu vor interfera. ! %-$ EF!S$S 0 EF!S$S  0 in=iba mesa"ul de eroare care se generea za daca la incercarea de a crea o tabela care mai e>ista. createLdefinition 0 createLdefinition  0 pentru definirea coloanelor este un sir de tipul: colLname tpe '%-$ %*//  %*// 'DE*/$ defaultLvalue '*$-L!%C,EE%$ 'P,!,& E& o colLname 0 nume coloana o tpe 0 tip coloana (vezi sectiunea 1) %-$ %*// 0 nu se permit valori %*// in acest camp (campul trebuie completat in orice situatie) o o %*// 0 permite valori %*// in camp (optiune implicita daca nu se specifica nimic) DE*/ DE*/$ $ defaultLvalue 0 completeaza campul lasat liber cu valoarea implicita defaultLvalue o  *$-L!%C,EE%$  *$-L!%C,EE%$ 0 daca nu se insereaza nimic nimic in camp# se va genera automat o valoare valoare mai mare cu o o unitate fata de cea mai mare valoare din acel camp. Poate fi specificata o singura coloana cu acest parametru intr0o tabela. Coloanele specificate astfel trebuie inde>ate. P,!,& E& E& 0 specifica c=eia primara pentru tabela. *n singur camp din tabela poate avea acest parametru. o Coloana declarata ca si c=eie primara este inde>ata automat. Daca tabela are c=eia primara formata din mai multe campuri# aceasta va trebui specificata separat# p e post de camp suplimentar# cu sinta>a Hprimar Ue (camp1# camp2 ...)H. createLdefinition 0 createLdefinition  0 pentru definirea inde>ilor are forma: !%DEF (coloana1#...)

Pentru a sterge o tabela se va folosi comanda: '$- &ABL% I8 %IS&SD  tb0name

8

Parametrul ! EF!S$S va in=iba mesa"ul de eroare care apare daca tabela nu e>ista. *electati cu aut%)ul c%menzii * #aza de date B&$& c)eata la "ema 2.2. $)eati % ta#ela e+%nent )uland c%manda:

Activitate 11

mysql> C%EATE TABLE ?e)onent TABLE  ?e)onent 0   mysql> nrK-uletin char04 9:T 9LL J%IMA%Y OEY,   mysql> cn) char01/ 9:T 9LL,   mysql> nu!e char0&2 9:T 9LL,   mysql> )renu!e char0&2 9:T 9LL,   mysql> datan date,   mysql> ora$ char0&2 ?EDALT 'Ti!i$oara',   mysql> adre$a char0/&,   mysql> telefon char06,   mysql> inde 0cn), inde 0nu!e   mysql> ; e)i(icati c%)ectitudinea ta#elei c)eate cu aut%)ul c%menzil%):   mysql> SG: C:LM9S D%:M ?e)onent D%:M  ?e)onent ;   mysql> SG: I9?E D%:M ?e)onent D%:M ?e)onent ;

3. Inserarea dateor in tabee 3.1. Comanda I;S%$&

Comanda !%SE,$ !%SE,$ permite  permite inserarea (adaugarea) de noi inregistrari (randuri) intr0o tabela. Deoarece sistemul mS/ este pur relational# nu e>ista nici o diferenta intre inserarea de noi date sau adaugarea lor. !n ambele situatii# locul in care se face adaugarea nu este precizat# nefiind relevant. /a sistemele care nu sunt pur relationale (cum este dBase sau o>Pro) operatia de adaugare semnifica adaugarea la sfarsitul unei tabele# pe cand insertia inseamna inserarea intre alte doua inregistrari e>istente. Comanda !%SE,$ !%SE,$ din  din mS/ are sinta>a de baza: I;S%$& L60-$I$I&E F '%LAE%'D I=;$%D I;&D tb0nume I;&D  tb0nume co0nume*...4D GAL/%S e,presie*...4*...4*... e,presie*...4*...4*... Parametrii au urmatoarea semnificatie: •







• •



/-TLP,!-,!$&  0 se foloseste pentru a intarzia scrierea efectiva a datelor in tabela pana cand alti utilizatori nu mai citesc /-TLP,!-,!$& 0 date din tabela. cest lucru avanta"eaza citirea dar intarzie# semnificativ pentru o tabela foarte utilizata# scrierea. Efectul este blocarea e>ecutiei pana cand se reuseste scrierea efectiva. DE/&ED 0 DE/&ED  0 are actiune opusa parametrului precedent. !nregistrarea care trebuie adaugata este pusa intr0o coada de asteptare pe server si controlul revine la client# ca si cum scrierea ar fi fost facuta efectiv. vanta"ul consta in timpul mic de e>ecutie a comenzii !%SE,$ !%SE,$ pe  pe o tabela utilizata intensiv. intensiv. Dezavanta"ul consta in incarcarea serverului cu o operatie in plus si in pierderea datelor daca serverul se opreste neasteptat. Din aceasta cauza parametrul este folosit doar cand este cu adevarat necesar. !G%-,E 0 !G%-,E  0 este util daca se insereaza mai multe inregistrari simultan (in acest caz lista de dupa /*ES /*ES va  va contine mai multe seturi de date in paranteze# departite prin virgula). !n mod obisnuit# S/ raporteaza eroare si nu e>ecuta comanda care incearca adaugarea a cel putin unei inregistrari care duplica c=eia primara sau campuri cu valori unice. Prin folosirea parametrului !G%-,E !G%-,E inregistrarile  inregistrarile gresite sunt ignorate# dar restul sunt adaugate fara raportarea unei erori. Dupa e>ecutia comenzii se va raporta doar numarul de inregistrari a caror adaugare a reusit. !%$- 0 !%$ 0 este optional# se foloseste pentru compatibilitate cu alte sisteme S/. Datorita claritatii mai mari a interogarii se prefera totusi utilizarea lui. tblLnume 0 specifica numele tabelei unde se adauga inregistrarile. co0nume*...4  0 este o lista de coloane care specifica ordinea in care se vor adauga datele in tabela. Prin aceasta se pot insera doar datele considerate esentiale# restul primind valorile implicite specificate la declararea tabelei. Daca lista lipseste# setul de date furnizat trebuie sa aiba valori pentru toate campurile# in ordinea din declararea tabelei. /*ES 0 /*ES  0 specifica seturile de date (inregistrarile) care se vor adauga in tabela.

9



e,presie* ...4*...4*... ...4*...4*... 0  0 fiecare paranteza specifica datele unei inregistrari ce va fi adaugata. Ele trebuie sa respecte numarul si ordinea coloanelor de la declararea tabelei sau# daca e specificat# numarul si ordinea campurilor din lisata de coloane co0nume*...4  prezentata anterior.

- sinta>a introdusa o data cu versiunea 9.22.1 permite 9.22.1 permite specificarea e>plicita a corespondentei intre coloane si valorile inserate: I;S%$& L60-$I$I&E F '%LAE%'D I=;$%D I;&D tb0nume I;&D  tb0nume S%& co0nume1He,presie1* co0nume1He,presie1* co0nume2He,presie2* ... - a treia sinta>a permite adugarea automata a inregistrarilor prin selectia lor din alte tabele: I;S%$& L60-$I$I&E F '%LAE%'D I=;$%D I;&D tb0name I;&D  tb0name co0name*...4D co0name*...4D S%L%C& ... S%L%C&  ... -ptiunea SE/EC$ SE/EC$ va  va fi discutata pe larg in capitolul urmator. urmator. !n principiu trebuie retinute totusi cateva limitari: • •

operatia de selectie nu poate contine clauza -,DE,LB& -,DE,LB& pentru  pentru ordonarea rezultatului datele nu pot fi selectate din aceeasi tabela in care sunt a poi inserate

3.2. /tiizarea comenzii I;S%$&

Se considera baza de date Banca# Banca# cuprinzand tabelele: 'eponent nrLbuletin nrLbule tin c=ar(3) %-$ %*// P,!,& E& cnp c=ar(17) %-$ %*// nume c=ar(29) %-$ %*// prenume c=ar(29) %-$ %*// datan date oras c=ar(29) DE*/$ DE*/$ ?$imisoara? adresa c=ar(72) telefon c=ar() Conturi nrLcont c=ar(8) c=ar(8 ) %-$ %*// P,!,& E& nrLbuletin c=ar(3) c=ar(3) %-$ %*// tipLcont c=ar(7) DE*/$ DE*/$ ?/ei? termenLdepozit termenLd epozit int(7) DE*/$ DE*/$ 5 sold int DE*/$ DE*/$ 5 peratii nrLcont c=ar(8) %-$ %*// suma int data timestamp  ctivitatea urmatoare urmatoare prezinta diverse diverse moduri de scriere a instructiunii !%SE,$ !%SE,$.. Activitate 1

Rulati secventele: mysql> SE SE Banca;  Banca; mysql> I9SE%T I9T: ?e)onent I9T:  ?e)onent FALES 0'TM1&/238', '1&&1141464/41', '1&&1141464/41', 'Jo)e$cu','Fictor', '168&*5/*&3', 'Ti!i$oara', 'Dlorilor 2A a) /', '5381&//&1', 0'BF123238', '111&&8384/21', '111&&8384/21', 'Jo)','Mircea', '1632*5*13', 'Bra$ov', 'Jiatra Craiului nr 4', '5231&/238'; mysql> I9SE%T I9T: ?e)onent0nrK-uletin, I9T:  ?e)onent0nrK-uletin, cn), )renu!e, nu!e FALES

10

0'TM4/&/1&', '111&&4&38422 '111&&4&384221','Dlorin','Mara$e$cu', 1','Dlorin','Mara$e$cu', 0'TM2/881/', '556568812&8','Ana','Ti)ate$cu'; '556568812&8','Ana','Ti)ate$cu'; mysql> I9SE%T I9T: ?e)onent I9T:  ?e)onent SET nu!e@'eroe$cu', SET  nu!e@'eroe$cu', )renu!e@'Genrieta', nrK-uletin@'L8 nrK-ule tin@'L832/&1', 32/&1', cn)@'511118818/28',   ora$@'alati'; mysql> SELECT SELECT    D%:M D%:M ?e)onent;  ?e)onent;

ecutia comenzii *PD$E /-TLP,!-,!$& 0 *PD$E pana  pana cand nici un alt client nu mai citeste din tabela. re acelasi efect ca si in cazul comenzii !%SE,$ !%SE,$.. !G%-,E 0 !G%-,E  0 nu se intrerupe e>ecutia in cazul in care se duplica c=ei unice la actualizare. !nregistrarile care cauzeaza erori sunt pur si simplu ignorate. tb0nume 0 tb0nume  0 nume tabela unde are loc actualizarea SE$ co0nume1He,pr1*co0nu co0nume1He,pr1*co0nume2He,pr2*... me2He,pr2*... 0  0 indica acele coloane care sunt modificate si noile lor valori. E>presiile de actualizare pot cuprinde vec=ile valori ale campurilor de actualizat. TAE,E conditie0de0actuaizare conditie0de0actuaizare 0  0 indica acele coloane care sunt actualizate# si anume doar cele pentru care conditie0de0actuaizare are conditie0de0actuaizare  are valoarea ade)arat. ade)arat. Daca clauza TAE,E TAE,E lipseste#  lipseste# vor fi actualizate toate inregistrarile.

a comazii DE/E$E DE/E$E este:  este: '%L%&% L60-$I$I&ED 8$M tb0nume 8$M  tb0nume 65%$% conditie0de0stergereD conditie0de0stergereD Parametrii au urmatoarea semnificatie: •

• •

/-TLP,!-,!$&  0 intarzie e>ecutia comenzii DE/E$E /-TLP,!-,!$& 0 DE/E$E pana  pana cand nici un client nu mai citeste din tabela. re acelasi efect ca si in cazul comenzii !%SE,$ !%SE,$.. ,- tb0nume 0 tb0nume  0 specifica tabela de unde se sterg inregistrari. TAE,E conditie0de0stergere conditie0de0stergere 0  0 specifica inregistrarile care vor fi sterse# si anume cele care indeplinesc conditia logica precizata. tentie; tentie; Daca clauza TAE,E este omisa se vor sterge toate inregistrarile din tabela.

>.2. /tiizarea comenzii '%L%&%

Considerand tabelele bazei de date Banca si Banca si datele adaugate in cadrul activitatii anterioare# se vor e>emplifica urmatoarele stergeri: Rulati secventele:

Activitate /

 *e v%) ste),e +e)s%anele din ;alati: mysql> ?ELETE D%:M ?e)onent D%:M  ?e)onent GE%E ora$@'alati'; GE%E  ora$@'alati'; mysql> SELECT SELECT    D%:M D%:M ?e)onent;  ?e)onent;  *e v%) ste),e in)e,ist)a)ile cu numa)ul de tele(%n nec%m+letat: mysql> ?ELETE D%:M ?e)onent D%:M  ?e)onent GE%E I$9ull0telefon; GE%E  I$9ull0telefon; mysql> SELECT SELECT    D%:M D%:M ?e)onent;  ?e)onent;

. Interogarea dateor  .1. Comanda S%L%C&

Comanda SE/EC$ SE/EC$ este  este cea mai utilizata comanda S/. Ea permite atat regasirea si vizualizarea datelor din tabelele bazei de date cat si calcularea unor e>presii care nu au legatura cu d atele din tabele. Sinta>a comenzii SE/EC$ SE/EC$ pentru  pentru calcularea valorii unor e>presii este foarte simpla si a fost de"a folosita in capitolele anterioare: S%L%C& e,presie( S%L%C&  e,presie( E>: S%L%C& S%L%C& 973124(  973124( *tilizarea comenzii SE/EC$ SE/EC$ pentru  pentru interogarea tabelelor este mai comple>a. Sinta>a de baza a comenzii in acest caz este: S%L%C& SQL0B/88%$0$%S/L&D 5I=50-$I$I&ED 'IS&I;C& F ALLD e,presie0de0seectie*... I;& J/&8IL% F '/M-8IL%K nume0fisierD nume0fisierD 8$M referinte0tabee referinte0tabee 65%$% conditie0seectieD conditie0seectieD $'%$ BE Jintreg0poziti) BE Jintreg0poziti) F nume0co F formuaK  ASC F '%SCD '%SC D *...D Parametrii din paranteze drepte sunt optionali. Cei din acolade si despartiti prin ?? sunt obligatorii dar mutual e>clusivi (doar unul poate apare). Ei au urmatoarea semnificatie:

12





• •











S/LB*E,L,ES*/$  0 se foloseste pentru a forta serverul sa creeze o tabela temporara cu rezultatul interogarii. cest S/LB*E,L,ES*/$ 0 lucru este util in cazul in care tabela interogata este utilizata intensiv in retea si se doreste deblocarea rapida a ei pentru accesul altor clienti. !n mod obisnuit nu este necesar. A!GALP,!-,!$& 0 A!GALP,!-,!$&  0 da prioritate interogarii curente fata de alte interogari !%SE,$ sau *PD$E aflate in coada de asteptare pentru acea tabela. D!S$!%C$ D!S$!%C $ 0 Permite eliminarea randurilor duplicate din selectie.  // 0 ,ezultatul ,ezultatul selectiei va cuprinde si randuri duplicate. Daca nu se specifica nici D!S$!%C$ D!S$!%C$## nici //# implicit implicit se considera //. e,presie0de0seectie 0 e,presie0de0seectie  0 e>presia de selectie poate cuprinde referinte la coloane sau la functii aplicate asupra acestora. *n caz special il reprezinta caracterul O care semnifica includerea tuturor coloanelor din tabela in rezultat. !%$- V-*$!/E  D*P!/EW nume0fisier nume0fisier 0  0 permite salvarea rezultatului unei interogari sub forma unui fisier te>t. isierul va fi creat pe server (trebuie sa nu e>iste)# implicit in directorul bazei de date. -ptiunea -*$!/E specifica salvarea tuturor randurilor rezultatului formatate pe coloane# pe cand D*P!/E permite salvarea unui singur rand fara formatare. D*P!/E D*P!/E este util pentru a salva campuri de tip BLB BLB (imagini#  (imagini# sune# video). ,- referinte0tabee referinte0tabee 0  0 specifica tabela sau tabelele din care se selecteaza datele. !n cazul in care referinta cuprinde mai multe tabele operatia este una de X-!%. TAE,E conditie0seectie  0 specifica conditia de includere a datelor in selectie. Permite selectia doar a datelor care conditie0seectie 0 intereseaza la un moment dat. !n cazul operatiunii de X-!% aici se vor adauga si constrangerile date de relatiile dintre tabele. Conditia de selectie consta dintr0o e>presie logica simpla sau comple>a care poate cuprinde functiile prezentate in capitolul 7. -,DE, B& Jintreg0p Jintreg0poziti) oziti) F nume0co F formuaK ASC F '%SCD* ...  0 permite ordonarea rezultatului dupa anumite coloane sau formule. Daca se specifica o lista de numere# acestea vor fi interpretate ca numere de ordine a coloanelor specificate in SE/EC$ (incepand (incepand cu 1). -rdonarea se face dupa prima coloana din lista. !n cazul in care doua inregistari au aceiasi valoare pentru coloana respectiva se va lua in considerare a doua coloana din lista (daca este specificata) etc. Parametrii SC SC si DESC specifica ordonarea crescatoare# respectiv descrescatoare a inregistrarilor in rezultat. Rulati secventele:

Activitate 1

mysql> SE SE Banca;  Banca;  *electia tutu)%) de+%nentil%) cu a(isa)ea tutu)%) c%l%anel%) c%l%anel%) mysql> SELECT  D%:M ?e)onent;  *electia tutu)%) de+%nentil%) cu a(isa)ea numel%) si +)enumel%) mysql> SELECT nu!e, )renu!e D%:M ?e)onent;  *electia *electia tutu)%) %)asel%) din din ca)e ca)e sunt sunt de+%netii de+%netii mysql> SELECT ora$ D%:M ?e)onent;  *electia tutu)%) %)asel%) distincte din ca)e sunt de+%netii mysql> SELECT ?ISTI9CT ora$ D%:M ?e)onent;

.2. /tiizarea conditiior de seectie

Conditiile de selectie permit regasirea datelor necesare intr0un anumit conte>t. /a scrierea acestor conditii vor putea fi folosie functiile prezentate in Capitolul 7. De asemenea# la folosirea operatorilor de comparatie se va tine seama de observatiile facute acolo.  ctivitatea urmatoare urmatoare prezinta diverse diverse moduri de scriere a unor conditii de selectie selectie !%SE,$ !%SE,$. Activitate &

Rulati secventele:  *electia de+%nentil%) de+%nentil%) cu numele %+ mysql> SELECT SELECT    D%:M ?e)onent GE%E nu!e@'Jo)'; GE%E  nu!e@'Jo)';  *electia tutu)%) tutu)%) de+%nentil%) de+%nentil%) a ca)%) nume ince+ cu  mysql> SELECT SELECT nrK-uletin,  nrK-uletin, nu!e, )renu!e D%:M D%:M ?e)onent  ?e)onent GE%E Left Left0nu!e,1@'J'; 0nu!e,1@'J';  *electia tutu)%) tutu)%) de+%nentil%) de+%nentil%) ca)e nu au numa) de de tele(%n c%m+letat c%m+letat mysql> SELECT SELECT nrK-uletin,  nrK-uletin, nu!e, )renu!e, telefon D%:M D%:M ?e)onent  ?e)onent GE%E I$9LL I$9LL0telefon; 0telefon;  *electia de+%nentil%) a ca)%) +)enume +)enume este ict%) si sunt nascuti nascuti du+a 1960 1960

13

mysql> SELECT SELECT    D%:M D%:M ?e)onent  ?e)onent GE%E )renu!e@'victor' GE%E  )renu!e@'victor' and datan.@'1685*51*51'; datan.@'1685*51*51';  *electia de+%nentil%) nascuti int)e 1960 si 1970 mysql> SELECT SELECT    D%:M D%:M ?e)onent  ?e)onent GE%E Year Year0datan.@16 0datan.@1685 85 and Year Year0datan@165; 0datan@165;

.9. rdonarea rezutatuui

!n multe situatii este necesara ordonarea rezultatelor instructiunii SE/EC$. SE/EC$. *n e>emplu concludent este reprezentat de lista rezultatelor la un concurs. Daca la concurs s0au prezentat 2555 de candidati si rezultatul este afisat intr0o lista neordonata# probabil ca ar fi necesar ca un candidat sa piarda "umatate de zi pentru a se regasi pe lista. -rdonarea se poate controla prin clauza -,DE, B&. B&. Este important de inteles ca aceasta clauza presupune o operatie suplimentara# mare consumatoare de timp.  ctivitatea urmatoare urmatoare prezinta cateva posibilitati de a ordona rezultatul. Rulati secventele:

Activitate /

 SELECT SELECT    D%:M D%:M ?e)onent  ?e)onent :%?E% BY nu!e; BY nu!e; 
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF