1. Instructiunea SELECT
- Instructiunea principala pentru selectarea informatiei
- Poate extrage informatia din citeva tabele, si chiar din citeva BD
- Rezultatul se introduce intr-o tabela (result set)
- Cea mai simpla forma a SELECT este compusa din lista coloanelor si FORM
SELECT [ALL | DISTINCT] column_list
FROM {table1 [tab_alias]},...
table1 -> numele tabelei
tab_alias -> pseudonumele
column_list -> se indica :
- (*) -> indica toate tabelele enumerate in FROM
- indicarea concreta a numelui coloanei
- specificator de forma column_name [AS] column_heading -> schimba numele coloanei sau expresiei
- expresie
- functie agregata sau de sistem
- SELECT poate extrage coloane separat(proiectie) cit si rinduri(alegere); se poate de combinat ambele
- EX1.:
USE sample;
SELECT dept_no, dept_name, location
FROM departament;
- EX2.:
SELECT select_list
[INTO new_table]
FROM table
[WHERE search_condition]
[GROUP BY group_by_expresion]
[HAVING search_condition]
[ORDER BY order_expresion [ASC | DESC]];
2. WHERE
- Cind din tabel trebuie doar analizate anumite coloane
- Returneaza true daca coloana indeplineste conditiile sau false
EX1.:
USE sample;
SELECT dept_name, dept_no
FROM departament
WHERE location = 'Dallas';
- Se pot folosi toti operatorii
EX.2:
USE sample;
SELECT emp_name, emp_fname
FROM employee
WHERE emp_no >= 15000;
3. Operatorii logici
- WHERE poate fi simpla sau compusa
- Compunerea se face cu ajutorul opratorilor logici AND, OR, NOT
EX1.:
USE sample;
SELECT DISTINCT project_no, emp_no //(DISTINCT(se foloseste doar o data inaintea coloanelor) se foloseste pentru a nu se dubla informatia)
FROM works_on
WHERE project_no = 'p1';
OR projetc_no = 'p2';
- WHERE poate avea unmar nelimitat de operatori logici
- Prioritati op. Logici
1. NOT sau <>
2. AND
3. OR
EX2.:
USE sample;
SELECT emp_no, emp_fname, emp_lname
FROM employee
WHERE (emp_no = 25348 AND emp_lname = 'Smith')
OR (emp_fname = 'Matthew' AND dept_no = 'd1')
EX3.:
USE sample;
SELECT emp_no, emp_lname
FROM employee
WHERE NOT dept_no = 'd2';
4. Operatorii IN , BETWEEN si LIKE
- IN permite de indicat una sau mai multe expresii, dupa care trebuie de urmat cautarea in interogare
- Rezultatul este boolean
- Pentru IN se indica valori concrete
EX1.:
USE sample;
SELECT emp_no, emp_fname, emp_lname
FROM employee
WHERE emp_no IN (29346, 28559, 25348);
- Se poate de folosit si cu NOT
EX2.:
USE sample;
SELECT emp_no, emp_fname, emp_lname, dept_no
FROM employee
WHERE emp_no NOT IN (10102, 9031);
- Pentru BETWEEN se indica diapazonul de valori
EX3.:
USE sample;
SELECT project_name, budget
FROM project
WHERE budget BETWEEN 95000 AND 120000;
- Se poate de folosit cu NOT
EX4.:
USE sample;
SELECT project_name, budget
FROM project
WHERE budget NOT BETWEEN 100000 AND 150000;
- Operatorul LIKE se foloseste pentru comparare , adica se compara valorile unei coloane cu alta indicata
- Reintoarce tip boolean
- Se foloseste cu % - sir de simboluri arbitrar de orice lungime; si _ - un oricare simbol
EX5.:
USE sample;
SELECT emp_fname, emp_lname, emp_no
FROM employee
WHERE emp_fname LIKE '_a%';
4. Valoarea NULL
- NULL - valoare necunoscuta
- Pentru a selecta rindurile care contin NULL se foloseste operatorul IS NULL cu forma column IS [NOT] NULL
EX5.:
USE sample;
SELECT emp_no, project_no
FROM works_on
WHERE project_no = 'p2'
AND job IS NULL;
5. Expresia CASE
- Modifica reprezentarea datelor
- Este CASE: simpla (cauta toate expresiile din WHEN care sunt comune cu expr1, apoi se executa THEN)
CASE expr1
{WHEN epr2 THEN result1}...
[ELSE result_n]
END
si de cautare
CASE
{WHEN condition1 THEN result1}...
[ELSE result_n]
END
EX.
USE sample;
SELECT project_name,
CASE
WHEN budget > 0 AND budget < 100000 THEN 1
WHEN budget > 100000 AND budget < 200000 THEN 2
WHEN budget > 200000 AND budget < 300000 THEN 3
ELSE 4
END budget_weight
FROM project;