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;