Vous êtes sur la page 1sur 54

Langage SQL

Par M.Youssfi

BASE DE DONNES, SGBD


Base de donnes :
Une base de donnes est un fichier qui permet de stocker des donnes structures relatives un sujet. Les donnes dune base de donnes peuvent tre organises selon diffrents modles (Relationnel, Hirarchique, ) Dans la pratique, le modle relationnel est le plus exploit vue ses performances pour les bases de donnes volumineuses. Une base de donnes relationnelle est une base de donnes qui stocke les donnes dans des tables qui sont lies par des relations.

M.YOUSSFI : med@youssfi.net

BASE DE DONNES, SGBD


SGBD: Un Systme de Gestion de Base de Donnes est un programme qui permet de grer les donnes dune base de donnes Grer une base de donnes inclut les oprations suivantes :
Insrer de nouvelles donnes Mettre jour (Modifier) les donnes Chercher les donnes Supprimer les donnes Scuriser les donnes
M.YOUSSFI : med@youssfi.net

Un SGBDR (SGBD relationnel), est un SGBD qui permet de grer les donnes dune base de donnes relationnelle. Exemple de SGBDR:
Acces : utilis pour grer des petites bases de donnes ORACLE : Trs performant pour les grandes bases de donnes, coute trs cher SQL Server : Outil de Microsoft, Concurrent de Oracle, coute cher MYSQL : Performant, Gratuit.

BASE DE DONNES, SGBD


BD Relationnelle Fichier qui permet de stocker les donnes Structures relatives un sujet. Les donnes Sont stockes des tables lies par des relations
M.YOUSSFI : med@youssfi.net

SGBDR
SQL

Programme qui permet de grer les donnes dune base de donnes relationnelle (insrer, modifier, supprimer et slectionner) Langage de requtes qui permet dinterroger un SGBDR Programme qui dfinit les interfaces graphiques Homme Machine et qui permet lutilisateur final de grer les donnes de la base de donnes

Application

SQL
SQL (Structured Query Language), est un langage qui permet dintrroger les SGBDR. Pour quune application, dveloppe avec nimporte quel langage, puisse accder une base de donnes relationnelle, elle doit envoyer des requtes SQL au SGBDR. SQL est un langage de requtes, avec lequel, on peut : Crer une nouvelle base de donnes Insrer, Modifier et supprimer les donnes dune base de donnes relationnelle. Slectionner les donnes dune base de donnes avec diffrents critres. Scuriser et contrler laccs aux bases de donnes

M.YOUSSFI : med@youssfi.net

SQL
SQL est un langage de dfinition de donnes (DDL Data Definition Language), pour crer et modifier la structure dune base de donnes relationnelle. SQL est un langage de manipulation de donnes ( DML, Data Manipulation Language), pour manipuler les donnes de la base de donnes. SQL est un langage de contrle de donnes (DCL, Data Control Language), pour les grer laccs une base de donnes.

Langage de manipulation de donnes MDL


Commande SELECT :
Permet de slectionner un ensemble denregistrements partir de plusieurs tables de la base de donnes. Syntaxe :

SELECT
Syntaxe :
SELECT [ALL] | [DISTINCT] <liste des noms de colonnes> | * FROM <Liste des tables> [WHERE <condition logique>] Il existe d'autres options pour la commande SELECT:
GROUP BY HAVING ORDER BY

SELECT
L'option ALL est, par opposition l'option DISTINCT, l'option par dfaut. Elle permet de slectionner l'ensemble des lignes satisfaisant la condition logique L'option DISTINCT permet de ne conserver que des lignes distinctes, en liminant les doublons La liste des noms de colonnes indique la liste des colonnes choisies, spares par des virgules. Lorsque l'on dsire slectionner l'ensemble des colonnes d'une table il n'est pas ncessaire de saisir la liste de ses colonnes, l'option * permet de raliser cette tche La liste des tables indique l'ensemble des tables (spares par des virgules) sur lesquelles on opre La condition logique permet d'exprimer des qualifications complexes l'aide d'oprateurs logiques et de comparateurs arithmtiques

Exemple 1 :
Soit la table voiture suivante :
Marque Renault Renault Renault Peugeot Peugeot Ford Modele 18 Kangoo Kangoo 106 309 Escort Serie RL RL RL KID chorus Match Numero 4698 SJ 45 4568 HD 16 6576 VE 38 7845 ZS 83 7647 ABY 82 8562 EV 23 Marque Renault Renault Renault Peugeot Peugeot Ford Modele 18 Kangoo Kangoo 106 309 Escort Serie RL RL RL KID chorus Match Numero 4698 SJ 45 4568 HD 16 6576 VE 38 7845 ZS 83 7647 ABY 82 8562 EV 23

Table voiture

Select * from voiture

Cet exemple slectionne tous les champs et tous les enregistrement de la table voiture.

Exemple 2 :
Soit la table voiture suivante :
Marque Renault Renault Renault Peugeot Peugeot Ford Modele 18 Kangoo Kangoo 106 309 Escort Serie RL RL RL KID chorus Match Numero 4698 SJ 45 4568 HD 16 6576 VE 38 7845 ZS 83 7647 ABY 82 8562 EV 23 Modele 18 Kangoo Kangoo 106 309 Escort Serie RL RL RL KID chorus Match Modele 18 Kangoo 106 309 Escort Serie RL RL KID chorus Match

Table voiture Select Modele, Serie From voiture Select DISTINCT Modele, Serie From voiture

Expression de restriction
Oprateurs logique:
AND OR NOT

Comparateurs de chane:
IN BETWEEN LIKE

Oprateurs arithmtiques:
+ , -, *, /, %, &, ^

Comparateurs arithmtiques:
= != > < >= <= <> !> !<

Exemple 3:
Table OCCAZION
Marque Renault Renault Renault Peugeot Peugeot Ford Modele 18 Kangoo Kangoo 106 309 Escort Serie RL RL RL KID chorus Match Numero 4698 SJ 45 4568 HD 16 6576 VE 38 7845 ZS 83 7647 ABY 82 8562 EV 23 Compteur 123450 56000 12000 75600 189500 Marque Renault Compteur 56000 12000 75600 Marque Renault Renault Peugeot Modele Kangoo Kangoo 106 Serie RL RL KID Numero 4568 HD 16 6576 VE 38 7845 ZS 83 Compteur 56000 12000 75600

SELECT * FROM OCCAZION WHERE (Compteur < 100000) SELECT Marque , Compteur FROM OCCAZION WHERE (Compteur < 100000) SELECT * FROM OCCAZION WHERE (Compteur < 100000) AND ( Compteur > 30000)
Marque Renault Peugeot Modele Kangoo 106

Renault Peugeot

Serie RL KID

Numero 4568 HD 16 7845 ZS 83

Compteur 56000 75600

SELECT
Restriction sur une comparaison de chanes: Le prdicat LIKE permet de faire des comparaisons sur des chanes grce des caractres, appels caractres jokers: Le caractre % permet de remplacer une squence de caractres (ventuellement nulle) La caractre _ permet de remplacer un caractre. Les caractres [-] permettent de dfinir un intervalle de caractres (par exemple [J-M]) La slection des voitures dont la marque a un E en deuxime position se fait par l'instruction: SELECT * FROM OCCAZION WHERE Marque LIKE "_E%"
Marque Renault Renault Renault Peugeot Peugeot Modele 18 Kangoo Kangoo 106 309 Serie RL RL RL KID chorus Numero 4698 SJ 45 4568 HD 16 6576 VE 38 7845 ZS 83 7647 ABY 82 Compteur 123450 56000 12000 75600 189500

SELECT
Restriction sur un ensemble :
Les prdicats BETWEEN et IN permettent de vrifier respectivement qu'une valeur se trouve dans un intervalle ou qu'une valeur appartient une liste de valeurs: La slection de toutes les voitures d'occasion ayant un kilomtrage infrieur ou gal 100 000 Km, mais suprieur ou gal 30000Km, peut se faire par l'instruction: SELECT * FROM OCCAZION WHERE Compteur BETWEEN 100000 AND 30000 La slection des voitures d'occasion dont la marque est Peugeot ou Ford se fait grce l'instruction: SELECT * FROM OCCAZ WHERE Marque IN ("Peugeot", "Ford")
Marque Renault Peugeot Modele Kangoo 106 Serie RL KID Numero 4568 HD 16 7845 ZS 83 Compteur 56000 75600 Marque Peugeot Peugeot Ford Modele 106 309 Escort Serie KID chorus Match Numero 7845 ZS 83 7647 ABY 82 8562 EV 23

Compteur 75600 189500

SELECT
Restriction sur les valeurs manquantes:
Lorsqu'un champ n'est pas renseign, le SGBD lui attribue une valeur spciale que l'on note NULL. La recherche de cette valeur ne peut pas se faire l'aide des oprateurs standards, il faut utiliser les prdicats IS NULL ou bien IS NOT NULL. La slection de toutes les voitures d'occasion dont le kilomtrage n'est pas renseign se fait par l'instruction: SELECT * FROM OCCAZION WHERE Compteur IS NULL

Marque Ford

Modele Escort

Serie Match

Numero 8562 EV 23

Compteur

SELECT
Tri des rsultats:
Il est possible en SQL d'organiser les rsultats grce la clause ORDER BY. La clause ORDER BY est suivie des mots cls ASC ou DESC, qui prcisent respectivement si le tri se fait de manire croissante (par dfaut) ou dcroissante. Le classement se fait sur des nombres ou des chaines de caractres. Prenons l'exemple de la table voiture : SELECT * FROM VOITURE ORDER BY Marque ASC, Compteur DESC
Marque Renault Renault Renault Peugeot Peugeot Ford Modele 18 Kangoo Kangoo 106 309 Escort Serie RL RL RL KID chorus Match Numero 4698 SJ 45 4568 HD 16 6576 VE 38 7845 ZS 83 7647 ABY 82 8562 EV 23 Compteur 123450 56000 12000 75600 189500 Marque Ford Peugeot Peugeot Renault Renault Renault Modele Escort 309 106 18 Kangoo Kangoo Serie Match chorus KID RL RL RL Numero 8562 EV 23 7647 ABY 82 7845 ZS 83 4698 SJ 45 4568 HD 16 6576 VE 38 189500 75600 123450 56000 12000 Compteur

SELECT
Regroupement des rsultats :
Il peut tre intressant de regrouper des rsultats afin de faire des oprations par groupe (oprations statistiques par exemple). Cette opration se ralise l'aide de la clause GROUP BY, suivie du nom de chaque colonne sur laquelle on veut effectuer des regroupements. Les principales fonctions pouvant tre effectues par groupe sont:
AVG: Calcule la moyenne d'une colonne (ou de chaque regroupement si elle est couple la clause GROUP BY ) COUNT: Calcule le nombre de lignes d'une table (ou de chaque regroupement ...) MAX: Calcule la valeur maximale d'une colonne (ou de chaque regroupement ...) MIN: Calcule la valeur minimale colonne (ou de chaque regroupement ...) SUM: Effectue la somme des valeurs d'une colonne (ou de chaque regroupement ...)

SELECT
Regroupements : Exemples :
L'affichage des moyennes des compteurs par marque se fait par l'instruction: SELECT Marque, AVG(Compteur) AS Moyenne FROM VOITURE GROUP BY Marque
Table Voiture :
Marque Renault Renault Renault Peugeot Peugeot Ford Modele 18 Kangoo Kangoo 106 309 Escort Serie RL RL RL KID chorus Match Numero 4698 SJ 45 4568 HD 16 6576 VE 38 7845 ZS 83 7647 ABY 82 8562 EV 23 Compteur 123450 56000 12000 75600 189500 Marque Renault Peugeot Ford Moyenne 63816.6 132550

SELECT
Expression des jointures:
Une jointure est un produit cartsien de deux tables. On appelle quijointure une jointure dont la qualification est une galit entre deux colonnes. En SQL, l'expression d'une jointure se fait en:
Prcisant le nom des colonnes des tables sur lesquelles on fait la jointure, En dsignant les colonnes des diffrentes tables en crivant le nom de la table, suivie d'un point puis du nom de la colonne. La clause WHERE permet de prciser la qualification de la jointure.

SELECT
Jointures entre les tables : Exemples
Soit les deux tables suivantes: Table Occaz
Marque Renault Renault Renault Peugeot Peugeot Ford Fiat Audi Modele 18 Kangoo Kangoo 106 309 Escort Punto A4 Serie RL RL RL KID chorus Match GTI Quattro Numero 4698 SJ 45 4568 HD 16 6576 VE 38 7845 ZS 83 7647 ABY 82 8562 EV 23 8941 UD 61 7846 AZS 75 21350 Compteur 123450 56000 12000 75600 189500

Table Societe
Nom Renault Fiat Peugeot Volkswagen Ford Pays France Italie France Allemagne Etats-Unis Marque Renault Renault Renault Peugeot Peugeot Ford Fiat Modele 18 Kangoo Kangoo 106 309 Escort Punto Pays France France France France France Etats-Unis Italie

L'affichage des pays d'origine des voitures par marque/modle se fait par l'instruction: Select Occaz.marque,Occaz.Modele, Societe.pays from Occaz, societe Where (Occaz.marque=Societe.nom)

SELECT
Jointures : (Suite)
Il est possible de donner des alias aux noms des tables pour diminuer la taille des requtes. SELECT O.Marque, O.Modele, S.Pays FROM OCCAZ O,SOCIETE S WHERE O.Marque = S.Nom

SELECT : Sous-requtes
Effectuer une sous-requte consiste effectuer une requte l'intrieur d'une autre, ou en d'autres termes d'utiliser une requte afin d'en raliser une autre (on entend parfois le terme de requtes en cascade). Une sous-requte doit tre place la suite d'une clause WHERE ou HAVING, et doit remplacer une constante ou un groupe de constantes qui permettraient en temps normal d'exprimer la qualification. lorsque la sous-requte remplace une constante utilise avec des oprateurs classiques, elle doit obligatoirement renvoyer une seule rponse (une table d'une ligne et une colonne). Par exemple:
SELECT ---- FROM ----WHERE ---- < (SELECT ---- FROM ----)

Lorsque la sous-requte remplace une constante utilise dans une expression mettant en jeu les oprateurs IN, EXISTS, ALL ou ANY, elle doit obligatoirement renvoyer une seule ligne.
SELECT ---- FROM ----WHERE ---- IN (SELECT ---- FROM ----)

SELECT : Sous-requtes
Exemple : On considre la table OCCAZ
Marque Renault Renault Renault Peugeot Peugeot Fiat Audi Modele 18 Kangoo Kangoo 106 309 Punto A4 Serie RL RL RL KID chorus GTI Quattro Numero 4698 SJ 45 4568 HD 16 6576 VE 38 7845 ZS 83 7647 ABY 82 8941 UD 61 7846 AZS 75 Compteur 123450 56000 12000 75600 189500 80232 21350 Marque Renault Renault Peugeot Audi Modele Kangoo Kangoo 106 A4 Serie RL RL KID Quattro Numero 4568 HD 16 6576 VE 38 7845 ZS 83 7846 AZS 75 Compteur 56000 12000 75600 21350

La slection des voitures dont le compteur est infrieur la moyenne se fait par l'instruction: SELECT * FROM OCCAZ WHERE Compteur < (SELECT AVG(Compteur) FROM OCCAZ)

SELECT : Oprations ensemblistes


Les oprations ensemblistes en SQL, sont celles dfinies dans l'algbre relationnelle. Elles sont ralises grce aux oprateurs:
UNION INTERSECT (ne fait pas partie de la norme SQL et n'est donc pas implment dans tous les SGBD) EXCEPT (ne fait pas partie de la norme SQL et n'est donc pas implment dans tous les SGBD)

Ces oprateurs s'utilisent entre deux clauses SELECT.

SELECT : UNION
Cet oprateur permet d'effectuer une UNION des tuples slectionns par deux clauses SELECT. SELECT ---- FROM ---- WHERE -----UNION SELECT ---- FROM ---- WHERE -----Par dfaut les doublons sont automatiquement limins. Pour conserver les doublons, il est possible d'utiliser une clause UNION ALL.

SELECT : INTERSECT
Cet oprateur permet d'effectuer une INTERSECTION des tuples slectionns par deux clauses SELECT
SELECT ---- FROM ---- WHERE -----INTERSECT SELECT ---- FROM ---- WHERE ------

L'oprateur INTERSECT n'tant pas implment dans tous les SGBD, il est possible de le remplacer par des commandes usuelles:
SELECT a, b FROM table1 WHERE EXISTS (SELECT c, d FROM table2 WHERE a=c AND b=d )

SELECT : EXCEPT
Cet oprateur permet d'effectuer une DIFFERENCE entre les tuples slectionns par deux clauses SELECT, c'est--dire slectionner les tuples de la premire table n'appartenant pas la seconde. SELECT a, b FROM table1 WHERE -----EXCEPT SELECT c, d FROM table2 WHERE -----L'oprateur EXCEPT n'tant pas implment dans tous les SGBD, il est possible de le remplacer par des commandes usuelles: SELECT a, b FROM table1 WHERE NOT EXISTS (SELECT c, d FROM table2 WHERE a=c AND b=d )

Modification de donnes
Avec SQL, on peut modifier les donnes dune table. Les oprations de modification quon peut faire sont:
Insertion de nouveaux enregistrements : Insert Mise jour des enregistrements : Update Suppression des enregistrements: Delete

Insertion de donnes
L'insertion de nouvelles donnes dans une table se fait grce l'ordre INSERT, qui permet d'insrer de nouvelles lignes dans la table. Syntaxe : Pour insrer un seul enregistrement dont les valeurs sont connues: Insert into nomTable(colonne1,colonne2,) values (valeur1, valeur2,) Si une une colonne de la table nest pas indique, et si cette colonne nest pas de type numroAuto, elle prend la valeur null Si une colonne est de type texte, sa valeur respective est comprise entre cotes

Insertion de donnes
Pour insrer des enregistrements provenant dautres tables: Insert into nomTable(colonne1,colonne2,) Select colonne1,colonne2 , from nomTable2 Where Condition
Avec la clause SELECT: plusieurs lignes peuvent tre insres, elle contiennent comme valeurs, l'ensemble des valeurs dcoulant de la slection. Les donnes sont affectes aux colonnes dans l'ordre dans lequel les colonnes ont t dclares dans la clause INTO Lorsque l'on remplace un nom de colonne suivant la clause SELECT par une constante, sa valeur est affecte par dfaut la colonne corresponsante . Il n'est pas possible de slectionner des tuples dans la table dans laquelle on insre des lignes

Insertion de donnes
Exemples :
Insert into Societe(nom, pays) values(Ford, Etats-Unis)
Nom Renault Fiat Peugeot Volkswagen Ford Pays France Italie France Allemagne Etats-Unis

Mise jour des enregistrements


La modification de donnes (aussi appele mise jour) consiste modifier des des lignes dans une table grce l'ordre UPDATE. La modification effectuer est prcise aprs la clause SET. Il s'agit d'une affectation d'une valeur une colonne grce l'oprateur = suivi d'une expression algbrique, d'une constante ou du rsultat provenant d'une clause SELECT. La clause WHERE permet de prciser les tuples sur lesquels la mise jour aura lieu Syntaxte: UPDATE Nom_de_la_table SET Colonne1 = Val_Ou_Expr1, Colonne2 = Val_Ou_Expr2 WHERE Condotion Exemple : UPDATE Societe SET pays=France WHERE nom=Ford Pour modifier la valeur de la colonne pays par France pour toutes les lignes qui ont nom=ford

Suppression des enregistrements


La suppression de donnes dans une table se fait grce l'ordre DELETE. Suivi de la clause FROM, prcisant la table sur laquelle la suppression s'effectue, Puis d'une clause WHERE qui dcrit la qualification, c'est--dire l'ensemble des lignes qui seront supprimes. Syntaxte: DELETE FROM Nom_de_la_table WHERE qualification L'ordre DELETE est utiliser avec prcaution car l'opration de suppression est irrversible. Il faudra donc s'assurer dans un premier temps que les lignes slectionnes sont bien les lignes que l'on dsire supprimer! Exemple :
DELETE FROM Societe WHERE pays=France Pour supprimer tous les enregistrements pour lesquels pays est France

Langage DDL
SQL est aussi un langage de dfinition de donnes Il permet deffectuer les taches suivantes: Cration de tables Expression des contraintes dintgrits Cration des index Modification des tables Cration des vues Cration de procdures stockes

Cration des tables


Le cration de tables se fait l'aide du couple de mots-cls CREATE TABLE. La syntaxe de dfinition simplifie d'une table est la suivante: CREATE TABLE Nom_de_la_table (colonne1 Type1, colonne2 Type2, .); Le nom donn la table doit gnralement (sur la plupart des SGBD) commencer par une lettre, et le nombre de colonnes maximum par table est de 254. L'option NOT NULL, place immdiatement aprs le type de donne permet de prciser au systme que la saisie de ce champ est obligatoire. Types de donnes:
Type de donne Type alphanumrique Type alphanumrique Type numrique Type numrique Type numrique Type numrique Type horaire Type horaire Type horaire Syntaxe CHAR(n) VARCHAR(n) NUMBER(n,[d]) SMALLINT INTEGER FLOAT DATE TIME TIMESTAMP Description Chane de caractres de longueur fixe n (n<16383) Chane de caractres de n caractres maximum (n<16383) Nombre de n chiffres [optionnellement d aprs la virgule] Entier sign de 16 bits (-32768 32757) Entier sign de 32 bits (-2E31 2E31-1) Nombre virgule flottante Date sous la forme 16/07/99 Heure sous la forme 12:54:24.85 Date et Heure

Insertion la cration de tables


Il est possible de crer une table en insrant directement des lignes lors de la cration. Les lignes insrer peuvent tre alors rcupres d'une table existante grce au prdicat AS SELECT. La syntaxe d'une telle expression est la suivante: CREATE TABLE Nom_de_la_table ( Nom_de_colonne1 Type_de_donne, Nom_de_colonne2 Type_de_donne, ...) AS SELECT Nom_du_champ1, Nom_du_champ2, ... FROM Nom_de_la_table2 WHERE Prdicat ;

Expression des contraintes dintgrit


Une contrainte d'intgrit est une clause permettant de contraindre la modification de tables, faite par l'intermdiaire de requtes d'utilisateurs, afin que les donnes saisies dans la base soient conformes aux donnes attendues. Ces contraintes doivent tre exprimes ds la cration de la table grce aux mots cls suivants: CONSTRAINT DEFAULT NOT NULL UNIQUE CHECK

Expression des contraintes dintgrit


Dfinir une valeur par dfaut :
Le langage SQL permet de dfinir une valeur par dfaut lorsqu'un champ de la base n'est pas renseign grce la clause DEFAULT. Cela permet notamment de faciliter la cration de tables, ainsi que de garantir qu'un champ ne sera pas vide. La clause DEFAULT doit tre suivie par la valeur affecter. Cette valeur peut tre un des types suivants: constante numrique constante alphanumrique (chane de caractres) le mot cl USER (nom de l'utilisateur) le mot cl NULL le mot cl CURRENT_DATE (date de saisie) le mot cl CURRENT_TIME (heure de saisie) le mot cl CURRENT_TIMESTAMP (date et heure de saisie)

Expression des contraintes dintgrit


Forcer la saisie d'un champ :
Le mot cl NOT NULL permet de spcifier qu'un champ doit tre saisi, c'est--dire que le SGBD refusera d'insrer des tuples dont un champ comportant la clause NOT NULL n'est pas renseign.

Emettre une condition sur un champ :


Il est possible de faire un test sur un champ grce la clause CHECK() comportant une condition logique portant sur une valeur entre les parenthses. Si la valeur saisie est diffrente de NULL, le SGBD va effectuer un test grce la condition logique. Celui-ci peut venutellement tre une condition avec des ordres SELECT...

Expression des contraintes dintgrit


Tester lunicit :
La clause UNIQUE permet de vrifier que la valeur saisie pour un champ n'existe pas dj dans la table. Cela permet de garantir que toutes les valeurs d'une colonne d'une table seront diffrentes.

Nommer les contraintes :


Il est possible de donner un nom une contrainte grce au mot cl CONSTRAINT suivi du nom que l'on donne la contrainte, de telle manire ce que le nom donn s'affiche en cas de non respect de l'intgrit, C'est--dire lorsque la clause que l'on a spcifie n'est pas valide. Si la clause CONSTRAINT n'est pas spcifie, un nom sera donn arbitrairement par le SGBD. Toutefois, le nom donn par le SGBD risque fortement de ne pas tre comprhensible, et ne sera vraisemblablement pas compris lorsqu'il y aura une erreur d'intgrit. La stipulation de cette clause est donc fortement conseille.

Expression des contraintes dintgrit


Exemple : Voici un exemple permettant de voir la syntaxe d'une instruction de cration de table avec contraintes: CREATE TABLE clients( Nom char(30) NOT NULL, Prenom char(30) NOT NULL, Age integer, check (age < 100), Email char(50) NOT NULL, check (Email LIKE "%@%") );

Expression des contraintes dintgrit


Dfinition des cls primaires:
Grce SQL, il est possible de dfinir des cls, c'est--dire spcifier la (ou les) colonne(s) dont la connaissance permet de dsigner prcisment un et un seul tuple (une ligne). L'ensemble des colonnes faisant partie de la table en cours permettant de dsigner de faon unique un tuple est appel cl primaire et se dfinit grce la clause PRIMARY KEY suivie de la liste de colonnes, spares par des virgules, entre parenthses. Ces colonnes ne peuvent alors plus prendre la valeur NULL et doivent tre telles que deux lignes ne puissent avoir simultanment la mme combinaison de valeurs pour ces colonnes. PRIMARY KEY (colonne1, colonne2, ...)

Expression des contraintes dintgrit


Dfinition des cls primaires:
Lorsqu'une liste de colonnes de la table en cours de dfinition permet de dfinir la cl primaire d'une table trangre, on parle alors de cl trangre, On utilise la clause FOREIGN KEY suivie de la liste de colonnes de la table en cours de dfinition, spares par des virgules, entre parenthses, puis de la clause REFERENCES suivie du nom de la table trangre et de la liste de ses colonnes correspondantes, spares par des virgules, entre parenthses. FOREIGN KEY (colonne1, colonne2, ...) REFERENCES Nom_de_la_table_etrangere(colonne1,colonne2,...)

Les vues
Une vue est une table virtuelle, c'est--dire dont les donnes ne sont pas stockes dans une table de la base de donnes, et dans laquelle il est possible de rassembler des informations provenant de plusieurs tables. On parle de "vue" car il s'agit simplement d'une reprsentation des donnes dans le but d'une exploitation visuelle. Les donnes prsentes dans une vue sont dfinies grce une clause SELECT La cration d'une vue se fait grce la clause CREATE VIEW suivie : du nom que l'on donne la vue, puis du nom des colonnes dont on dsire agrmenter cette vue (il faut autant de redfinitions de colonne qu'il y en aura en sortie), puis enfin d'une clause AS prcdant la slection. La syntaxe d'une vue ressemble donc ceci:

Les vues
Syntaxte:
CREATE VIEW Nom_de_la_Vue (colonnes) AS SELECT ... Voici ce que cela pourrait donner: CREATE VIEW nom_Vue(colonneA,colonneB,colonneC,colonneD) AS SELECT colonne1,colonne2,colonneI,colonneII FROM Nom_table1 Alias1,Nom_tableII AliasII WHERE Alias1.colonne1 = AliasII.colonneI Les vues ainsi cres peuvent tre l'objet de nouvelles requtes en prcisant le nom de la vue au lieu d'un nom de table dans un ordre SELECT... Intrts des vues : La vue reprsente de cette faon une sorte d'intermdiaire entre la base de donnes et l'utilisateur. Cel a de nombreuses consquences: une slection des donnes afficher une restriction d'accs la table pour l'utilisateur, c'est--dire une scurit des donnes accrue un regroupement d'informations au sein d'une entit

Expression des contraintes dintgrit


Cration des index:
Un index est un objet complmentaire (mais non indispensable) la base de donnes permettant d'indexer certaines colonnes dans le but d'amliorer l'accs aux donnes par le SGBDR Au mme titre qu'un index dans un livre ne vous est pas indispensable mais vous permet souvent d'conomiser du temps lorsque vous recherchez une partie spcifique de ce dernier. Toutefois la cration d'index utilise de l'espace mmoire dans la base de donnes, Et, tant donn qu'il est mis jour chaque modification de la table laquelle il est rattach, peut alourdir le temps de traitement du SGBDR lors de la saisie de donnes. Par consquent il faut que la cration d'index soit justifie et que les colonnes sur lesquelles il porte soient judicieusement choisies (de telle faon minimiser les doublons). De cette faon certains SGBDR crent automatiquement un index lorsqu'une cl primaire est dfinie.

Expression des contraintes dintgrit

Cration des index:


La cration d'index en SQL se fait grce la clause INDEX prcde de la clause CREATE. Elle permet de dfinir un index dsign par son nom, portant sur certains champs d'une table. La syntaxe est la suivante: CREATE [UNIQUE] INDEX Nom_de_l_index ON Nom_de_la_table(Nom_de_champ [ASC/DESC], ...) L'option UNIQUE permet de dfinir la prsence ou non de doublons pour les valeurs de la colonne Les options ASC/DESC permettent de dfinir un ordre de classement des valeurs prsentes dans la colonne

Modification de tables
Cration des index:
Il est possible de supprimer une table grce la clause DROP, il existe aussi des commandes moins extrmes permettant L'ajout de colonnes La modification de colonnes La suppression de colonnes Enfin, il est possible d'ajouter des commentaires une table grce la clause COMMENT.

Modification des tables


La suppression d'lments :
La clause DROP permet d'liminer des vues, des index et mme des tables. Cette clause est toutefois utiliser avec parcimonie dans la mesure o elle est irrversible. La suppression d'une vue se fait avec la syntaxe suivante: DROP VIEW Nom_de_la_vue La suppression d'un index se fait avec la syntaxe suivante: DROP INDEX Nom_de_l_index La suppression d'une table se fait avec la syntaxe suivante: DROP TABLE Nom_de_la_table

Modification des tables


La suppression de donnes uniquement:
La clause DROP lorsqu'elle est utilise sur une table limine les donnes ainsi que la structure de la table. Il est possible de supprimer uniquement les donnes en conservant la structure de la table grce la clause TRUNCATE. La suppression des donnes d'une table se fait avec la syntaxe suivante: TRUNCATE TABLE Nom_de_la_table

Renommer une table:


Il peut parfois tre intressant de renommer une table, c'est la clause RENAME qui permet cette opration. La syntaxe de cette clause est: RENAME TABLE Ancien_Nom TO Nouveau_Nom

Modification des tables


La suppression de colonnes:
La clause ALTER permet la modification des colonnes d'un table. Associe avec la clause DROP COLUMN, elle permet de supprimer des colonnes. La syntaxe est la suivante: ALTER TABLE Nom_de_la_table DROP COLUMN Nom_de_la_colonne Il faut noter que la suppression de colonnes n'est possible que dans le cas o: La colonne ne fait pas partie d'une vue La colonne ne fait pas partie d'un index La colonne n'est pas l'objet d'une contrainte d'intgrit

Modification des tables


Ajout de colonnes:
Associe avec la clause ADD, la clause ALTER permet l'ajout de colonnes une table. La syntaxe est la suivante: ALTER TABLE Nom_de_la_table ADD Nom_de_la_colonne Type_de_donnees ;

Modification de colonnes:
Associe avec la clause MODIFY, la clause ALTER permet la modification du type de donnes d'une colonne. La syntaxe est la suivante:
ALTER TABLE Nom_de_la_table MODIFY Nom_de_la_colonne Type_de_donnees

Sous Access 2000, la syntaxe est la suivante :


ALTER TABLE Nom_de_la_table ALTER COLUMN Nom_de_la_colonne Type_de_donnees

Modification des tables


Ajout de Commentaires:
Grce la clause COMMENT, il est possible de documenter ses tables en leur ajoutant des commentaires, c'est--dire une description soit de la table elle-mme COMMENT Nom_de_la_table IS 'Commentaires'; soit de certaines colonnes en particulier COMMENT Nom_de_la_table.Nom_de_la_colonne IS 'Commentaires'; soit d'une vue COMMENT Nom_de_la_vue IS 'Commentaires';