Sunteți pe pagina 1din 4

Baza de date Zoologie

Tabela Animale
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| nume | varchar(20) | DA | | NULL | |
| stapan | varchar(20) | DA | | NULL | |
| specii | varchar(20) | DA | | NULL | |
| sex | char(1) | DA | | NULL | |
| data_nastere| data | DA | | NULL | |
| data_deces | data | DA | | NULL | |
+---------+-------------+------+-----+---------+-------+

Incarcarea tabelei
+----------+--------+---------+------+------------+------------+
| nume | stapan | specii | sex |data_nastere| data_deces |
+----------+--------+---------+------+------------+------------+
| Foxy | Mihai | pisica | f | 2011-02-04 | NULL |
| Felix | Ana | pisica | m | 2010-03-17 | NULL |
| Bella | Paul | caine | f | 2008-05-13 | NULL |
| Dingo | Marius | caine | m | 2012-08-27 | NULL |
| Nero | Diana | caine | m | 2003-08-31 | 2014-07-29 |
| Coco | George | papagal | f | 2014-09-11 | NULL |
| Puiu | George | papagal | m | 2013-12-09 | NULL |
| Slim | Marius | sarpe | m | 2012-04-29 | NULL |
| Puffball | Diana | hamster | f | 2014-03-30 | NULL |
+----------+--------+---------+------+------------+------------+

Instructiunea SELECT
Instructiunea SELECT se foloseste pentru a extrage informatii dintr-un tabel. Forma generala a instructiunii este:
SELECT ce coloane selectam
FROM din ce tabel
WHERE in ce conditii;

Ce coloane selectam iti indica ceea ce vrei sa vizualizezi. Acest lucru poate fi o lista de coloane, sau * pentru a
indica toate coloanele.

Din ce tabel se refera la tabelul din care doresti sa extragi date.

Clauza WHERE este optionala. In cazul in care apare, specifica una sau mai multe conditii pe care trebuie sa le
intruneasca inregistrarile pentru a fi extrase.
Cea mai simpla forma de SELECT extrage toate informatiile dintr-un tabel:

1. SELECT * FROM `animale` WHERE `nume` LIKE '%Nero%';

2. Rectifica doar inregistrarea eronata cu o instructiune UPDATE:

UPDATE `animale` SET `data_nastere` = '2003-08-31' WHERE `nume` = 'Nero';

UPDATE va schimba numai inregistrarea in cauza si nu necesita reincarcarea tabelului.

1
3. Daca doresti sa stii ce animale s-au nascut in decursul anului 2014 sau dupa, testeaza coloana
data_nastere:

SELECT * FROM animale WHERE data_nastere >= '2014-1-1';


SELECT * FROM `animale` WHERE `data_nastere` < '2014-1-1';

4. Poti combina conditiile, de exemplu, pentru a localiza cainii-femela:

SELECT * FROM animale WHERE specii = 'caine' AND sex = 'f';

SELECT * FROM `animale` WHERE specii = 'caine' AND sex = 'f';


SELECT * FROM `animale` WHERE `specii`='caine' and `sex`='m';

5. Utilizarea operatorului OR:

SELECT * FROM animale WHERE specie = 'sarpe' OR specie = 'papagal';

Verificati diferenta dintre comenzile:

SELECT * FROM `animale` WHERE `specii`='pisica' and (`sex`='m' or `sex`='f');


Rezultat

SELECT * FROM `animale` WHERE `specii`='pisica' and `sex`='m' or `sex`='f';


Rezultat:

6. AND si OR

AND si OR pot fi utilizati in orice ordine, cu toate ca AND are de obicei o mai mare prioritate decat OR. Daca folosesti
ambii operatori, este indicat sa folosesti paranteze pentru a enunta in mod explicit modul in care trebuie grupate
conditiile:

SELECT * FROM animale WHERE (specii = 'pisica' AND sex = 'm') OR (specii = 'caine' AND sex = 'f');

2
7. Daca nu doresti sa vizualizezi randuri intregi din tabelul tau, este suficient sa numesti coloanele care te
intereseaza, separandu-le prin virgula. De exemplu, daca doresti sa stii cand s-au nascut animalele tale, selecteaza
coloanele nume, specii si data_nastere:

SELECT nume, specii, data_nastere FROM animale;

8. Dorim sa extragem stapanii animalelor. De remarcat ca interogarea nu face altceva decat sa extraga
coloana stapan din fiecare inregistrare, si astfel unii dintre ei pot aparea de mai multe ori. Pentru a minimiza numarul
de iesiri, extragem fiecare iesire desemnand o inregistrare unica, adaugand cuvantul-cheie DISTINCT:

SELECT DISTINCT stapan FROM animale;


+--------+
| owner |
+--------+
| Benny |
| Diane |
| Gwen |
| Harold |
+--------+

9. Poti folosi o clauza WHERE pentru a combina selectia de rand cu selectia de coloana. De exemplu, pentru a obtine
datele de nastere doar pentru caini si pisici, foloseste aceasta interogare:

SELECT nume, specii, data_nastere FROM animale WHERE specii = 'caine' OR specii =
'pisica';

10. Pentru a sorta un rezultat, foloseste clauza ORDER BY. Iata aici niste date de nastere ale animalelor, sortate
dupa data:

SELECT nume, data_nastere FROM animale ORDER BY data_nastere;

11. In cadrul coloanelor de tip character, sortarea - ca orice alte operatii de comparare - se efectueaza in mod normal
in maniera case-insensitive. Acest lucru inseamna ca ordinea este nedefinita in cazul coloanelor identice, cu exceptia
tipului de caracter cu care sunt scrise. Poti forta o sortare case-sensitive pentru o coloana, folosind BINARY,
astfel: ORDER BY BINARY nume_coloana. Ordinea in urma sortarii automate va fi crescatoare, cele mai mici valori
aparand primele. Pentru a sorta in ordine inversa (descrescator), adauga cuvantul-cheie DESC langa numele coloanei
dupa care sortezi:

SELECT nume, data_nastere FROM animale ORDER BY data_nastere DESC;

SELECT nume, data_nastere FROM animale ORDER BY nume DESC;


SELECT nume, data_nastere FROM animale ORDER BY nume ASC;

12. Poti efectua sortari dupa mai multe coloane, si poti sorta diferite coloane dupa criterii variate. De exemplu, pentru
a sorta dupa tipul de animal in ordine crescatoare, iar apoi dupa data nasterii, in cadrul fiecarui tip de animal - in
ordine descrescatoare (cel mai tanar animal sa fie primul), foloseste urmatoarea interogare:

SELECT nume, specii, data_nastere FROM animale ORDER BY specii, data_nastere DESC;

13. Pentru a stabili cati ani are fiecare dintre animalele de casa, calculeaza diferenta dintre anul datei curente si cel al
datei de nastere, iar apoi mai scade unul in cazul in care data curenta se situeaza mai devreme in calendar decat data
nasterii. Urmatoarea interogare arata, pentru fiecare animal de casa, data de nastere, data curenta, si varsta in ani.

3
SELECT nume, data_nastere, CURDATE(),(YEAR(CURDATE())-YEAR(data_nastere))-
(RIGHT(CURDATE(),5)<RIGHT(data_nastere,5)) AS varsta FROM animale;

+----------+------------+------------+------+
| nume |data_nastere| CURDATE() |varsta |
+----------+------------+------------+--------+
| Fluffy | 1993-02-04 | 2003-08-19 | 10 |
| Claws | 1994-03-17 | 2003-08-19 | 9 |

Analizati comparativ cu interogarea urmatoare.


SELECT nume, data_nastere, CURDATE(),(YEAR(CURDATE())-YEAR(data_nastere)) AS varsta FROM
animale;

14. Aici, YEAR() extrage partea cuprinzand anul unei date si RIGHT() extrage cele 5 caractere care se afla imediat la
dreapta, reprezentand partea MM-DD (an calendaristic) a datei. Partea expresiei care compara valorile MM-DD va
ajunge, prin evaluare, la 1 sau 0, ceea ce va ajusta diferenta dintre ani cu un an in cazul in care CURDATE() se
situeaza mai devreme in cadrul anului fata de birth. Intreaga expresie este oarecum incomoda, asa ca se foloseste un
alias (age) pentru a asocia coloanei de iesiri o eticheta mai sugestiva.

Interogarea functioneaza, insa rezultatul ar putea fi urmarit mult mai usor daca randurile ar fi prezentate intr-o
anumita ordine. Acest lucru poate fi obtinut adaugand o clauza ORDER BY name pentru a sorta iesirile dupa nume:

SELECT nume, data_nastere, CURDATE(),(YEAR(CURDATE())-YEAR(data_nastere))-


(RIGHT(CURDATE(),5)<RIGHT(data_nastere,5)) AS varsta FROM animale ORDER BY nume;

15. In vederea sortarii iesirilor dupa varsta mai degraba decat dupa nume este suficient sa folosesti o clauza ORDER
BY diferita:

SELECT nume, data_nastere, CURDATE(),(YEAR(CURDATE())-YEAR(data_nastere))


- (RIGHT(CURDATE(),5)<RIGHT(data_nastere,5))AS varsta FROM animale ORDER BY varsta;

16.Modificarea campului data_deces pentru Nero:


UPDATE `animale` SET `data_deces`='2014-07-29' WHERE `nume`='Nero';

17. Adaugarea campului cod_animal in tabela animale, la inceputul tabelei:


ALTER TABLE `animale` ADD `cod_animal` INT NOT NULL FIRST;

18. Stergerea campului cod_animal


ALTER TABLE `animale` DROP `cod_animal`;

S-ar putea să vă placă și