Beruflich Dokumente
Kultur Dokumente
Base de donnes
Rim Chaabane rchaabane@ai.univ-paris8.fr
- Sance 7 -
Interdit
T CLIENT
_XyZ_
Ibm.com
SELECT
CLI#
Microsoft/SQLserver
Remarque : une bonne habitude consiste donner un nom pertinent aux objets des
bases de donnes.
Commentaires
Les commentaires en mysql secrivent { la manire C :
/* mon commentaire
sur
plusieurs lignes */
Mais un commentaire sur une seule lignes est introduit par : ou #. Mais pour
viter toute confusion du caractre avec des oprations mathmatiques avec
le -, prfrez le # pour vos commentaires sur une seule ligne.
L3-Informatique Paris 8
Base de donnes
Rim Chaabane rchaabane@ai.univ-paris8.fr
- Sance 7 -
1. CREATE TABLE
La syntaxe de cration de table est la suivante :
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] {tbl_name |
db.name.tbl_name }
<col_name> <type> [NOT NULL | NULL] [DEFAULT <value>] [<contrainte
de colonne>]
[, {<col_name> <type> [DEFAULT <value>] [<contrainte de colonne>] |
<contrainte_de_table>}
[, ...]]
)
[SELECT] ;
2.1.
Contraintes de domaine
L3-Informatique Paris 8
Base de donnes
Rim Chaabane rchaabane@ai.univ-paris8.fr
- Sance 7 -
La contrainte de non nullit impose que la valeur dun attribut soit renseigne (la valeur
du champ ne peut tre NULL). Prenons pour exemple, la colonne intitule de la table
cours. Il est cohrent dimposer que lintitul soit toujours renseign.
Ainsi la commande de cration de la table devient :
CREATE TABLE cours (
Intitule VARCHAR NOT NULL,
NbEtudiants INTEGER) ;
La contrainte de vrification est une contrainte qui permet de spcifier que la valeur
dune colonne particulire doit satisfaire une expression boolenne.
Attention : si lexpression boolenne compare deux valeurs de colonnes, et que ces
dernires contiennent la valeur NULL, elles ne seront pas considres comme gales.
Par exemple le nombre dtudiants ne peut tre que suprieur { zro. La commande de
cration de table devient donc :
CREATE TABLE cours (
Intitule VARCHAR NOT NULL,
NbEtudiants INTEGER CHECK(NbEtudiants > 0 OR NbEtudiants IS
NULL) ;
La contrainte dunicit permet de prciser les attributs cls dune table. Elle permet de
garantir que deux lignes de cette table ne peuvent en aucun cas recevoir les mmes
valeurs pour ces attributs.
Aussi, comme deux valeurs NULL ne sont pas considres par le SGBD-R comme gales,
nous pouvons avoir (aves la seule contrainte UNIQUE) deux valeurs de cl NULL. Or,
une cl primaire ne peut tre nulle. De ce fait, il est ncessaire daccompagner la
contrainte UNIQUE par la contrainte de non nullit lorsquil sagit de cls primaires :
UNIQUE NOT NULL.
La contrainte de cl primaire PRIMARY KEY permet justement dexprimer ces deux
contraintes (UNIQUE NOT NULL).
L3-Informatique Paris 8
Base de donnes
Rim Chaabane rchaabane@ai.univ-paris8.fr
- Sance 7 -
Introduisons par exemple un attribut sigle (ex : INF1010, INF2705, LOG2410, MTH1006,
PHS1101, ) et qui est une cl pour la table cours. On aurait alors comme commande
de cration de table :
CREATE TABLE cours (
sigle CHAR(7) UNIQUE NOT NULL,
Intitule VARCHAR NOT NULL,
NbEtudiants INTEGER CHECK(NbEtudiants > 0 OR NbEtudiants IS
NULL) ;
Qui est identique celle-ci :
CREATE TABLE cours (
sigle CHAR(7) PRIMARY KEY,
Intitule VARCHAR NOT NULL,
NbEtudiants INTEGER CHECK(NbEtudiants > 0 OR NbEtudiants IS
NULL) ;
la suppression est interdite dans la table matre (personne) et dans la table courante
(ici cours) o la contrainte dintgrit est dfinie comme suit :
CREATE TABLE cours (
Id_enseignant INTEGER
REFERENCES personne (id_personne) RESTRICT,
sigle CHAR(7) PRIMARY KEY,
Intitule VARCHAR NOT NULL,
NbEtudiants INTEGER CHECK(NbEtudiants > 0 OR NbEtudiants
IS NULL) ;
L3-Informatique Paris 8
Base de donnes
Rim Chaabane rchaabane@ai.univ-paris8.fr
- Sance 7 -
la suppression se fait dans la table maitre (ici personne) ainsi que dans la table
courante (cours) dans laquelle la contrainte dintgrit est comme suit :
CREATE TABLE cours (
Id_enseignant INTEGER
REFERENCES personne (id_personne) ON DELETE CASCADE,
sigle CHAR(7) PRIMARY KEY,
Intitule VARCHAR NOT NULL,
NbEtudiants INTEGER CHECK(NbEtudiants > 0 OR NbEtudiants
IS NULL) ;
La suppression se fait dans la table maitre (personne) mais dans la table courante
(cours), la valeur NULL est affecte dans la colonne id_enseignant pour toutes les
lignes qui vrifient lidentifiant supprim dans la table maitre.
CREATE TABLE cours (
Id_enseignant INTEGER
REFERENCES personne(id_personne) ON DELETE SET NULL,
sigle CHAR(7) PRIMARY KEY,
Intitule VARCHAR NOT NULL,
NbEtudiants INTEGER CHECK(NbEtudiants > 0 OR NbEtudiants
IS NULL) ;
2.2.
Les contraintes de tables portent sur plusieurs colonnes de la table. Ces contraintes ont
la syntaxe suivante :
[ CONSTRAINT <nom_contrainte>
{ PRIMARY KEY (<nom_col>[, <nom_col>]) |
FOREIGN KEY <nom_col>[, <nom_col>])
REFERENCES <nom_tablel> [ (<nom_col>) ]
[ ON DELETE {CASCADE |SET NULL} ]
CHECK (<condition>)
}
L3-Informatique Paris 8
Base de donnes
Rim Chaabane rchaabane@ai.univ-paris8.fr
- Sance 7 -
CONSTRAINT
Cette partie optionnelle permet de donner un nom une contrainte de table. Si la
contrainte est viole, le nom de la contraint est prsent dans les messages
derreur.
PRIMARY KEY
Cette contrainte permet de spcifier une cl primaire compose de plusieurs
attributs.
CHECK (<condition>)
Cette contrainte permet dexprimer une condition qui doit exister entre plusieurs
attributs de la ligne.
2. SELECT
2.1.
La syntaxe
Nous voyons plus en dtail la syntaxe de la commande SELECT dans cette section :
SELECT [ALL | DISTINCT] { * | <expression>[, ] }
FROM <liste des tables>
[WHERE <condition>]
[ORDER BY <expression> [ASC|DESC] [,]]
-
L3-Informatique Paris 8
Base de donnes
Rim Chaabane rchaabane@ai.univ-paris8.fr
- Sance 7 -
<Liste des tables> : Indique lensemble des tables (spares par des ,) sur
lesquelles opre la requte.
L3-Informatique Paris 8
Base de donnes
Rim Chaabane rchaabane@ai.univ-paris8.fr
- Sance 7 -
_ remplace un caractre
% remplace une squence de longueur quelconque
Ex :
SELECT * FROM companies_aeriennes WHERE pays LIKE
F%;
SELECT * FROM passagers WHERE nom LIKE A%d% AND
prenom LIKE J__% AND adresse LIKE __Rue M%;
ORDER BY <expression>: cette clause permet de trier les lignes du
rsultat.
Ex :
SELECT id_personne, nom, prenom FROM personne ORDER
BY nom DESC, prenom DESC;
Les personnes sont affiches par ordre dcroissant de leur nom et de leur
prnom.
2.2.
Traduction des oprateurs de projection, slection, produit
cartsien et qui-jointure de lalgbre relationnelle
L3-Informatique Paris 8
Base de donnes
Rim Chaabane rchaabane@ai.univ-paris8.fr
- Sance 7 -
Slection : (prdicat)(relation)
SELECT * FROM relation WHERE condition;
(compteur <100000) (Voiture)
SELECT * FROM Voiture WHERE (compteur <100000);
L3-Informatique Paris 8
Base de donnes
Rim Chaabane rchaabane@ai.univ-paris8.fr
- Sance 7 -
10