SQL (Structured Query Language)

1 - Introduction...

Le langage SQL - pour Structured Query Language - signifie langage d'interrogation structuré. Il se décompose en plusieurs sous-ensembles.

- DDL (Data Definition Language): Il permet de gérer les structures des objets (créer, modifier et supprimer des objets; Autoriser ou interdire l'accès aux données; Activer, désactiver l'audit; Commenter le dictionnaire de données). Les instructions du DDL sont: CREATE, ALTER, DROP, AUDIT, NOAUDIT, ANALYZE, RENAME, TRUNCATE.

- DML (Data Manipulation Language): Il permet la gestion des objets existants (Ajout, suppression, modification des lignes; Visualisation du contenu des tables; Verrouillage des tables). Les instructions du DML sont: INSERT, UPDATE, DELETE, SELECT, EXPLAIN TABLE, LOCK TABLE.

- DCL (Data Control Language): Il regroupe les ordres utilisés pour gérer la sécurité des accès aux données. Les instructions du DCL sont: GRANT, REVOKE.

- TCL (Transaction Control Language): Il gère les modifications faites par le DML (Caractéristiques des transactions; Validation, annulation des modififations). Les instructions du TCL sont: COMMIT, SAVEPOINT, ROLLBACK, SET TRANSACTION.

- SCL (Session Control Language): Il permet la gestion d'une session utilisateur (Modification des caractéristiques de session; Activation, désactivation des privilèges utilisateurs). Les instructions du session sont: ALTER SESSION, SET ROLE.




2 - Les contraintes d'intégrité sous ORACLE.

 

1- Clé primaire (PRIMARY KEY - PK):

Les mots clés PRIMARY KEY (PK) déclarent la clé primaire d'une table. La déclaration de la clé primaire peut être séparée:

CREATE TABLE DEPT (
Deptno NUMBER(3) PRIMARY KEY,
Dnom VARCHAR2(15),
Adr VARCHAR2(15));


Une autre façon de créer une clé primaire avec un ALTER TABLE. Voici l'exemple:

CREATE TABLE DEPT (
Deptno NUMBER(3),
Dnom VARCHAR2(15),
Adr VARCHAR2(15) );

ALTER TABLE DEPT ADD CONSTRAINT Deptno_PK PRIMARY KEY (Deptno);

2- Clé unique (UK) :

Comme la clé primaire, une clé unique impose la contrainte d'unicité de chaque ligne dans une table: On ne peut pas avoir deux lignes de la table ayant les valeurs identiques sur les attributs composants de la clé primaire (ou unique), même si les deux lignes sont identiques. Les différences entre la clé primaire et une clé unique consistent en deux points:
- Une table peut avoir une seule clé primaire, mais peut avoir plusieurs clés uniques, et
- Une ligne de données peut avoir des valeurs NULL sur les attributs composants d'une clé unique, tandis que ceci est interdit pour la clé primaire.
On peut modifer dans la table DEPT pour ajouter une clé unique composée de deux attributs Dnom et Adr:
ALTER TABLE DEPT ADD CONSTRAINT dnom_uk UNIQUE(Dnom, Adr);

3- Clé étrangère (Foreign Key - FK): On a le schéma relationnel suivant (deux tables):

EMP(EmpNo, Enom, Job, Sal, Bonus, DeptNo)
DEPT(DeptNo, Dnom, Adresse)

L'attribut DeptNo joue le rôle d'une clé étrangere dans le schéma de relation EMP.Dans notre exemple, la table DEPT est appelée table mère (maître, ou référencée), et la table EMP est appelée table fille (esclave, ou dépendante).
DeptNo NUMBER(3) CONSTRAINT deptno_fk REFERENCES DEPT(DeptNo) ou avec une autre façon:

ALTER TABLE EMP ADD CONSTRAINT deptno_fk FOREIGN KEY(DeptNo) REFERENCES Dept(DeptNo). Pour plus de détails, veuillez vous référer sur la documentation.

4- Contrainte NOT NULL (exemple: Enom CONSTRAINT Enom_NN NOT NULL). Le nom ne doit pas avoir une valeur nulle.

5- Contrainte Check (exemple: CHECK SAL > 1000). Le salaire doit être > 1000$.

6- Contrainte DEFAULT (exemple: DATE_SYS DEFAULT SYSDATE).

Si vous voulez voir tout le détail concernant les contraintes, exécuter cette requête sous SQL*Plus

select t.table_name "Tab"
,decode(t.constraint_type,'P','Primary','R','Foreign','U','Alternate','Unknown')
"Key"
,t.constraint_name "Cons"
,c.column_name "Col"
,c.position "Pos"
from user_constraints t, user_cons_columns c
where t.constraint_type in ('P','R','U')
and t.table_name = c.table_name
and t.constraint_name = c.constraint_name
order by t.table_name, t.constraint_type, c.position;

Pour plus de détails sur le langage SQL, cliquer ici pour consulter une documentation (source Serge Tahé, université d'Angers, 1991).

3 - Cas pratique de SQL...

 

Création d'une table avec les contraintes d'intégrité:

Utilisation d'ALTER TABLE pour les contraintes:

Insertion dans une table avec une validation à la fin (COMMIT):

Création d'un utilisateur (user) avec les privilèges systèmes

Sélection des lignes (usage de la commande select)

 


4 - SQL*PLUS

 

L'accès et l'utilisation d'une BD Oracle peut se faire à l'aide de différents outils. L'outil principal pour l'utilisation du SQL est l'interface utilisateur SQL*Plus. Il se décline sous trois formes différentes:

- sqlplus.exe est un outil en ligne de commande

- sqlplusw.exe est un outil graphique que l'on peut utiliser depuis un poste Windows.

- isqlplus est une application en mode web qui permet de travailler avec une interface HTML de type sqlplus afin de faire des requêtes sur la base de données Oracle.

Il y a d'autres outils qu'on pourrait utiliser l'interface de SQL*PLus. Dans ce cas, cliquer ici pour plus de détails.


5 - Commandes SQL*PLus...

Pour avoir plus de détails concernant toutes les commandes de SQL*Plus, veuillez vous référer sur la documentation officielle d'Oracle en cliquant ici.

6 - Testez vos connaissances avec SQL Oracle 10g...

Le contenu de cette page nécessite une version plus récente d’Adobe Flash Player.

Obtenir le lecteur Adobe Flash