Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Limbajul SQL

sql



+ Font mai mare | - Font mai mic



Limbajul SQL

SQL, acronimul pentru Structured Query Language, este limbajul standard pentru comunicarea cu bazele de date. Comenzile SQL sunt folosite pentru a interactiona cu baza de date (de exemplu sa adauge, sa modifice sau sa stearga datele).



Alte sisteme de baze de date care folosesc SQL sunt Microsoft SQL Server, Access, Oracle, Sybase, etc.

Odata autentificat, putem comunica cu serverul MySQL folosind comenzi SQL. Trimiterea de comenzi SQL catre serverul de baze de date se mai numeste si interogare.

Comezile SQL (cu exceptia QUIT si USE) trebuie incheiate cu caracterul punct si virgula (;) pentru a semnala serverului ca am terminat de scris propozitia si ca poate trece la procesarea cererii.

Exista cazuri cand o interogare poate fi foarte lunga, si atunci ar trebui sa o "rupem" in cateva bucati mai mici pe mai multe randuri. MySQL ar da eroare daca ar observa ca propozitia nu este incheiata, de aceea trebuie sa terminam interogarea cu punct si virgula.

Comanda SHOW

Aceasta comanda verifica daca exista vreo baza de date pe server. In cazul in care este deja selectata o baza de date, putem verifica daca aceasta are deja declarate tabele:

SHOW DATABASES;

Pe sistemul meu, aceasta comanda va produce urmatorul rezultat:

mysql> SHOW DATABASES;

->

| Database |

| mysql |

| test |

2 rows in set (0.00 sec)

In urma interogarii, ne putem da seama ca exista doua baze de date pe server, la care eu am acces: "mysql" si "test"

Pentru a verifica ce tabele exista in baza de date test, executam comanda:

mysql> use test;

Database changed

mysql> show tables;

Rezultatul intors va fi:

| Tables_in_test |

| stefan |

1 row in set (0.00 sec)

Interogarea ne confirma faptul ca tabela "test" contine tabela "stefan"

Comanda show poate fi folosita analog pentru a afla ce coloane contine un tabel, sau cate inregistrari exista in tabela respectiva.

Comanda USE

Comanda USE ne ajuta sa comunicam serverului, ce baza de date dorim sa folosim in continuare. La executarea comenzii:

use test;

Serverul va schimba baza de date curenta, selectand ca baza de date de lucru "test". Observam ca putem sa scriem comenzile SQL si cu minuscule, dar acest lucru nu este recomandat. Daca dorim sa folosim aplicatia noastra pe alta baza de date decat una MySQL, este posibil sa primim un mesaj de eroare.

Comenzile CREATE si DROP

Comanda CREATE este folosita pentru crearea unei baze de date, sau a unei tabele, in timp ce comanda DROP, penru "aruncarea" (stergere) unei baze de date sau tabele. Iata cum putem crea o baza de date noua "librarie", care sa contina o tabela "tabel_test":

CREATE DATABASE librarie;

USE librarie;

CREATE TABLE tabel_test (camp_test TEXT);

Rezultatul interogarilor de mai sus, este acela ca serverul MySQL va crea o baza de date librarie pe care o va selecta drept baza de date de lucru curenta.Mai departe, va fi creata tabela "tabel_test", care va contine un singur camp, de tip TEXT: "camp_test".

Desi MySQL are suport pentru diacritice si setul de caractere (8859-2) este de preferat sa nu folosim diacritice in numele tabeleleor sau campurilor.

De asemenea nu pot fi folosite cuvintele rezervate (nume de functii, tipuri de caractere din MySQL, comenzi SQL, etc.)

Putem foloi nume de tabele care contin spatii dar in practica trebuie sa incadram numele intre back-tiks (`) - semnul back-tick poate fi gasit pe tasta aflata imediat sub Esc:

CREATE DATABASE `libraria mea`;

Pentru a sterge un tabel, o baza de date, un index sau o coloana dintr-un tabel, folosim comanda DROP astfel:

DROP TABLE tabel_test;

DROP DATABASE librarie;

Este de mentionat ca la executarea comenzii DROP DATABASE, intreaga baza de date va fi stearsa, incluzand tabelele si inregistrarile continute de ea. Serverul MySQL nu emite nici un mesaj de atentionare la stergerea datelor!

Comanda INSERT

Pentru inserarea de inregistrari intr-o tabela, folosim comanda INSERT. In mod obisnuit, comanda se foloseste astfel:

INSERT INTO tabel_test (camp1, camp2) VALUES (val1, val2)

Trebuie avut grija ca numarul de campuri in care incercam sa inseram, sa corespunda cu numarul de valori inserate, altfel vom primi un mesaj de eroare:"MySQL ERROR: Column count doesn't match value count at row 1".

Daca in tabela exista un camp de tip sir de caractere, valoarea pe care dorim s-o inseram in acest camp, trebuie sa fie incadrata intre apostroafe:

INSERT INTO tabel_test (camp1, camp2) VALUES (val1, 'text')

Astfel evitam confuziile si MySQL ar fi generat un alt mesaj de eroare in care ar fi comunicat ca nu recunoaste valoarea introdusa ca fiind un string.

Sintaxa lui INSERT poate fi simplificata, in cazul in care luam in calcul toate campurile tabelului. In acest caz, putem omite specificarea campurilor, fiind necesara doar enumerarea valorilor ce trebuie introduse:

INSERT INTO tabel_test VALUES (val1, 'text');

Trebuie tinut cont ca in cazul inserarii simplificate, trebuie introdusa cate o valoare pentru fiecare camp din tabela, altfel vom primi un mesaj de eroare.

Comanda SELECT

SELECT poate fi considerata pe drept cuvant cea mai importanta comanda SQL, fiind si cea mai folosita. Utilizarea ei permite selectarea de date dintr-o tabela (sau mai multe) si afisarea lor. Sintaxa este foarte simpla:

SELECT * FROM tabel_test;

Comanda de mai sus va afisa toate datele din tabela noastra, organizate pe coloane si randuri. Putem sa ordonam crescator rezultatul interogarii:

SELECT * FROM tabel_test ORDER BY camp1;

Sau descrescator:

SELECT * FROM tabel_test ORDER BY camp1 DESC;

Bineinteles, in aplicatiile de zi-cu-zi nu avem nevoie de toate datele. Putem selecta doar o coloana astfel:

SELECT camp1 FROM tabel_test;

Sau mai multe coloane:

SELECT camp1, camp1 FROM tabel_test;

Acest lucru ne permite sa folosim numai datele de care avem nevoie, celelalte ne fiind selectate. Utilitatea este ca memoria nu va fi incarcata inutil. In cazul tabelelor cu mii de inregistrari, timpul de executie al comenzii este semnificativ mai mic.

Presupunand ca avem o tabela cu carti, daca dorim selectarea numai a anumitor volume, putem folosi operatorul condtional WHERE

SELECT nume_volum FROM tabel_carti WHERE autor='Mihai Eminescu';

Aceasta comanda va afisa toate cartile care il au ca autor pe Mihai Eminescu, dar daca autorul a fost scris gresit, rezultatul va fi nul.

Pentru a selecta toate cartile al caror autor contine prenumele "Mihai" trebuie sa folosim operatorul LIKE impreuna cu wildcard-ul %:

SELECT nume_volum FROM tabel_carti WHERE autor LIKE 'Mihai%';

O astfel de interogare o sa ne aduca toate volumele al caror autor incepe cu "mihai". Mai mult ca sigur ca o sa primim in rezultatul nostru si volumele scrise de Mihail Sadoveanu (pentru ca si numele acestuia incepe tot cu mihai).

Daca vrem sa alegem din tabela cartile care nu sunt scrise de Mihai Eminescu, folosim operatorul de negare NOT sau !

SELECT nume_volum FROM tabel_carti WHERE autor!='Mihai Eminescu';

Sau pentru selectia asociativa:

SELECT nume_volum FROM tabel_carti WHERE autor NOT LIKE 'Mihai%'

Presupunand ca dorim limitarea numarului de rezultate, vom folosi operatorul LIMIT astfel:

SELECT nume_volum FROM tabel_carti LIMIT 10;

Interogarea de mai sus are drept rezultat selectarea doar a primelor 10 inregistrari din tabela.

Daca dorim sa selectam 10 inregistrari incepand cu al 123-lea rand, vom folosi interogarea:

SELECT nume_volum FROM tabel_carti LIMIT 123,10;

Comanda DELETE

Delete se foloseste pentru stergerea inregistrarilor dintr-un tabel. Sintaxa este urmatoarea:

DELETE FROM tabela WHERE conditii;

Aceasta comanda va sterge toate inregistrarile din tabela, care indeplinesc conditiile respective. Asa cum putem afisa doar inregistrarile care corespund profilului dorit, la fel putem sa conditionm si stergerea lor in functie de criteriile specificate:

DELETE FROM tabel_carti WHERE autor='Mihai Eminescu';

va sterge toate volumele din tabela care il au ca autor pe Mihai Eminescu

DELETE FROM tabel_carti WHERE autor LIKE 'Mihai%';

va sterge toate volumele din tabela care au un autor al carui nume incepe cu Mihai

La fel ca si la SELECT, se pot folosi mai multe conditii pentru stergere:

DELETE FROM tabel_carti WHERE autor='Mihai' AND titlu='poezii';

Comanda va sterge toate volumele numite 'poezii', al caror autor se numeste 'Mihai'

Comanda UPDATE

Atunci cand este nevoie de o modificare a continutului unei inregistrari, nu este nevoie sa o stergem si apoi sa o adaugam din nou. Putem folosi comanda UPDATE, care are urmatoarea sintaxa:

UPDATE tabela SET coloana1="noua valoare a coloanei 1",

coloana2=" noua valoare a coloanei 2"

WHERE conditii;

UPDATE modifica valorile unuia sau mai multor campuri, in functie de conditii. Conditiile pot fi extinse la fel ca la sintaxa SELECT sau DELETE.

Indecsi

Indexul este o valoare unica a unui camp, folosita pentru identificarea unui element distinct (un rand) al unui tabel.

Presupunand ca am avea de intretinut un server de e-mail, fiecarea dresa de mail a unui utilizator trebuie sa fie diferita. Daca am avea doi utilizatori cu aceeasi adresa, serverul nu ar sti cui sa-i trimita posta electronica. Setarea unui camp al unei tabele ca fiind index se face folosind comanda ALTER, de modificare a structurii tabelei:

ALTER TABLE email ADD adresa VARCHAR NOT NULL, ADD INDEX (email);

Comanda de mai sus specifica adaugarea campului "email" ca index. Acesta nu poate fi nul si va fi de tip VARCHAR.

De obicei sunt folositi indecsi intregi, cu auto-incrementare (serverul stie sa seteze automat valoarea campului, in momentul in care se face un nou INSERT)



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1245
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved