Академический Документы
Профессиональный Документы
Культура Документы
Rappel sur le langage SQL Complment sur le langage SQL Programmation PL/SQL
lments de base du langage Les curseurs Procdures et fonctions Les exceptions Les dclencheurs
Hmida HMIDA
SQL
4
Langage dinterrogation de la base (SELECT) Langage de Contrle de laccs aux Donnes (LCD)
GRANT, REVOKE
LDD(1)
6
LDD(2)
Types de colonnes :
Char(n) : chane de longueur n fixe (remplir avec des blancs). Varchar2(n) : chane longueur variable de taille maximale n. Number(nc,d) : nombre entier ou rl avec nc chiffres dont d chiffres dcimaux. Aussi : integer, decimal, real.
Exemples : number, number(6,2), number(5), number(*,2)
Vocabulaire :
Cration de table
CREATE TABLE<nom_table>( <colonne1> <type1> [not null] [unique] [<contrainte de colonne>], ......... <colonne n> <typen> [not null] [unique] [<contrainte de colonne>], [<contrainte(s) de table>] );
Date : date et heure. Long : varchar jusqu 2 GO BLOB : Binary Large Object ; donnes binaires (128TO)
LDD(3)
8
LDD(4)
Cration de table et SELECT
Enregistrer le rsultat dune requte dans une nouvelle table
CREATE TABLE nomTable AS SELECT . CREATE TABLE postes AS SELECT disntinct(poste) FROM EMP
Cration de table
Exemples
Exemple1 CREATE TABLE article ( ref VARCHAR(10) constraint pk_article primary key, nom VARCHAR(30) NOT NULL, prix DECIMAL(9,2), datemaj DATE) Exemple 2 CREATE TABLE article ( ref VARCHAR(10) constraint pk_article primary key, nom VARCHAR(30) NOT NULL, prix DECIMAL(9,2), datemaj DATE DEFAULT CURRE NT_DATE)
LDD(5)
10
LDD(6)
Contraintes dintgrit
Cl trangre
Niveau table
FOREIGN KEY (colonne1, colonne2,...) REFERENCES tableref[(col1, col2,...)] [ON DELETE CASCADE]
Contraintes dintgrit
Cl primaire
Unicit Autre
CHECK (condition)
LDD(7)
12
LDD(8)
Manipulation des contraintes
ALTER TABLE EMP DROP CONSTRAINT NOM_UNIQUE ADD CONSTRAINT SAL_MIN CHECK(SAL + NVL(COMM,0) > 1000) RENAME CONSTRAINT NOM1 TO NOM2 MODIFY CONSTRAINT SAL_MIN DISABLE
11
Exemple
CREATE TABLE EMP ( MATR INTEGER CONSTRAINT KEMP PRIMARY KEY, NOME VARCHAR (10) CONSTRAINT NOM_UNIQUE UNIQUE CONSTRAINT MAJ CHECK (NOME = UPPER(NOME)), ......... DEPT INTEGER CONSTRAINT R_ DEPT REFERENCES DEP(DEPT) CONSTRAINT NDEPT CHECK (DEPT IN (10, 20, 30, 35, 40)))
LMD(1)
14
LMD(2)
Session et transaction
Savepoint nomPoint Commit Rollback [to nomPoint]
13
Insertion
INSERT INTO table (col1,..., coln) VALUES (val1,...,valn) INSERT INTO table (col1,..., coln) SELECT ...
Modification
UPDATE table SET col1 = exp1, col2 = exp2, ... WHERE prdicat UPDATE table SET (col1, col2,...) = (SELECT .. .) WHERE prdicat
Suppression
Requtes dinterrogation(1)
16
Requtes dinterrogation(1)
Base donnes des exemples DEP(dept, nomD, lieu) EMP(matr, nomE, prenom, poste, dateEmb, sup, sal, comm, #dept) PROJET(codep, nomp, budget) PARTICIPATION(#codep, #matr, fonction)
15
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
Requtes dinterrogation(2)
18
Requtes dinterrogation(3)
Clause SELECT
Les pseudo-colonnes :
Rownum, rowid, sysdate, user, userid Exemple :
select rownum, nome from emp where sal > 2000 and rownum < 5 retrourne les 4 premiers employs avec un salaire > 2000 : numro + nome
17
Clause SELECT
SELECT [DISTINCT] * Ou SELECT [DISTINCT] exp1 [[AS] nom1], exp2 [[AS] nom2], ..... Exemples
SELECT * FROM DEP tous les dpartements SELECT DISTINCT POSTE FROM EMP les diffrents postes des eemploys SELECT EMP.NOME, SAL + NVL(COMM,0) AS "Salaire global" FROM EMP les nom des employs et leurs salaires globaux calculs
Requtes dinterrogation(4)
20
Requtes dinterrogation(5)
Clause WHERE
WHERE prdicat Prdicat : expression logique simple ou composs par les oprateurs logiques OR, AND, NOT Prdicat utilise les oprateurs de comparaison
exp1 = exp2, exp1 != exp2 exp1 < exp2, exp1 > exp2 exp1 <= exp2, exp1 >= exp2 exp1 BETWEEN exp2 AND exp3 exp1 LIKE exp2 (utilisant les jokers _ et %) exp1 IN (exp2, exp3,...) exp IS NUL L exp IS NOT NULL
19
Clause FROM
select nome, sal, sal/total*100 from emp, (select dept, sum(sal) as total from emp group by dept) TOTALDEPT where emp.dept = TOTALDEPT.dept
Requtes dinterrogation(6)
22
Requtes dinterrogation(7)
Clause HAVING
HAVING prdicat Comme WHERE mais sur les groupes dfinis par GROUP BY
Exemple
SELECT DEPT, COUNT(*) FROM EMP WHERE POSTE = 'SECRETAIRE ' GROUP BY DEPT HAVING COUNT(*) > 1 Les codes des dpartements avec le nombre de secretaires qui est >1
21
Clause GROUP BY
AVG moyenne SUM somme MIN plus petite des valeurs MAX plus grande des valeurs VARIANCE variance STDDEV cart type (dviation standard) COUNT(*) nombre de lignes COUNT(col) nombre de valeurs non nulles de la colonne COUNT(DISTINCT col) nombre de valeurs non nul les diffrentes
Requtes dinterrogation(8)
24
Jointures(1)
Jointure interne (inner join)
Sous-ensemble du produit cartsien de 2 tables Exemple :
SELECT NOME , NOMD FROM EMP JOIN DEP ON EMP.DEPT = DEP.DEPT Avec la clause where SELECT NOM E, NOMD FROM EMP, DEP WHERE EMP. DEPT = DEP.DEPT Condition de jointure
qui-jointure : = Non qui : <,<=,>,>=,between, in
23
Clause ORDER BY
ORDER BY exp1 [DESC], exp2 [DESC], ... Tri par dfaut croissant
Jointures(2)
26
Jointures(2)
Jointure dune table avec elle-mme
Utilisation des synonymes
25
Afficher les lignes dont la valeur de la colonne de jointure est NULL La jointure interne prcdente naffiche pas les dpartement sans employs Solution :
SELECT NOME , NOMD FROM EMP RIGHT OUTER JOIN DEP ON EMP.DEPT = DEP.DEPT
SELECT EMP. NOME EMPLOYE, SUPE.NOME SUPERIEUR FROM EMP, EMP SUPE WHERE EMP.SUP = SUPE.MATR
RIGHT : pour afficher toutes les lignes de la table droite (DEP) par lajout de lignes virtuelles gauche LEFT OUTER JOIN, FULL OUTER JOIN