Vous êtes sur la page 1sur 21

Base de donnes relationnelles 1

Chapitre 6: Langage SQL

Langage SQL
Le SQL est langage de communication standard avec le SGBDR. Les commandes du langage SQL(Structured Query Langage) peuvent tre tapes directement au clavier par l'utilisateur ou peuvent tre incluses dans un programme crit dans un langage de troisime gnration (Java, Langage C, Fortran, Cobol, Ada,...) grce un pr-compilateur ou une librairie d'accs au SGBD.

Langage SQL
Les types numriques:

Nombres entiers :

SMALLINT (sur 2 octets, de -32.768 32.767). INTEGER (sur 4 octets, de -2.147.483.648 2.147.483.647).

Nombres dcimaux:

DECIMAL(p, d ) correspond des nombres dcimaux qui ont p chiffres significatifs et d chiffres aprs la virgule. NUMERIC a la mme syntaxe.

Numriques virgule flottante:

REAL (au moins 7 chiffres significatifs). FLOAT (au moins 15 chiffres

significatifs).

Langage SQL
Les types numriques doracle:
Oracle n'a qu'un seul type numrique NUMBER. Lors de la dfinition d'une colonne de type numrique, on peut prciser le nombre maximum de chiffres et de dcimales qu'une valeur de cette colonne pourra contenir : NUMBER NUMBER(taille_maxi ) NUMBER(taille_maxi, dcimales)

Langage SQL
Types chane de caractres Il existe deux types pour les colonnes qui contiennent des chanes de caractres : CHAR(longueur ) : avec longueur < 256 VARCHAR(longueur ) : avec 0< longueur < 2001

Types chane de caractres dOracle Le type VARCHAR s'appelle VARCHAR2 dans Oracle (la taille maximum est de 2000 caractres).

Langage SQL
Types temporels Les types temporels de SQL sont :

DATE rserve 2 chiffres pour le mois et le jour et 4 pour l'anne ; TIME pour les heures, minutes et secondes (les secondes peuvent comporter un certain TIMESTAMP permet d'indiquer un moment prcis par une date avec heures, minutes

nombre de dcimales) ;

et secondes (6 chiffres aprs la virgule ; c'est--dire en microsecondes) ; INTERVAL permet d'indiquer un intervalle de temps. Types temporels dOracle

Oracle offre le type DATE comme en SQL-2 mais pour Oracle une donne de type DATE inclut un temps en heures, minutes et secondes. Une constante de type date est une chane de caractres entre apostrophes.

Langage SQL
Types binaires Ce type permet d'enregistrer des donnes telles que les images et les sons, de trs grande taille et avec divers formats. SQL fournit les types BIT et BIT VARYING (longueur constante ou non). Les diffrents SGBD fournissent un type pour ces donnes mais les noms varient: LONG RAW pour Oracle La valeur NULL Une colonne qui n'est pas renseigne, et donc vide, est dite contenir la valeur NULL. Cette valeur n'est pas zro, c'est une absence de valeur.

Langage SQL

Langage SQL
Cration de tables:
Une partie du langage SQL est ddie la mise en place et la maintenance du schma relationnel des bases de donnes.

Syntaxe:
La commande CREATE TABLE dans laquelle sont prciss pour chaque colonne de la table: son intitul, son type de donne et une ou plusieurs contraints.

Langage SQL
Cration dune table

Syntaxe: CREATE TABLE nom_table( colonne1 type1, colonne2 type2 NOT NULL, Colonne2 type3 DEFAULT [valeur par dfaut], .........)

Langage SQL

On peut ajouter aprs la description d'une colonne l'option NOT NULL qui

interdira que cette colonne contienne la valeur NULL. On peut aussi ajouter des contraintes d'intgrit portant sur une ou plusieurs colonnes de la table. On peut donner une valeur par dfaut par loption DEFAULT pour une

colonne si la colonne n'est pas renseigne.

Langage SQL
Cration dune table Soit le schma relationnel suivant: Client(CodeCl, NomCl, AdrCl, Tel, Ville) Cration :

create table Client( CodeCl varchar(12), NomCl varchar(12), AdrCl varchar(20), Tel varchar(16), Ville varchar(12));

Langage SQL
Une table qui existe dj peut tre modifie par linstruction ALTER TABLE accompagne dune clause ADD ou MODIFY. Une table qui nest rfrence par aucune cl trangre peut tre supprimer a laide de linstruction DROP TABLE. Linstruction suivante permet a un utilisateur doracle de retrouver toutes ses tables: SELECT * FROM user_tables; Pour connaitre la liste des colonnes dune table, lutilisateur dispose de linstruction: DESCRIBE nom_table;

Langage SQL
Contraintes d'intgrit:
Dans la dfinition d'une table, on peut indiquer des contraintes d'intgrit portant sur une ou plusieurs colonnes. Les contraintes possibles sont : PRIMARY KEY, UNIQUE, FOREIGN KEY...REFERENCES, CHECK Toute dfinition de table doit comporter au moins une contrainte de type PRIMARY KEY. Syntaxe: CONSTRAINT nom-contrainte dfinition-contrainte.

Langage SQL
Contraintes d'intgrit:
Soit le schma relationnel suivant: Commande(NBC, DateC, CodeCl)

Cration: create table Commande( NBC varchar(12) primary key, --contrainte Cl primaire de la table DateC date, CodeCl varchar(12) constraint cstfkClient references Client(CodeCl));

Langage SQL
Contraintes d'intgrit:
FOREIGN KEY (colonne1, colonne2,...) REFERENCES table-ref [(col1, col2,...)] [ON DELETE CASCADE] Cette contrainte indique que la concatnation de colonne1, colonne2,... est une cl trangre qui fait rfrence la concatnation des colonnes col1, col2,... de la table table-ref.

Langage SQL
Contrainte CHECK CHECK(condition) La contrainte check donne une condition que les colonnes de chaque ligne devront vrifier.

create table Client( CodeCl varchar(12) primary key, NomCl varchar(12), AdrCl varchar(20), Tel varchar(16), Ville varchar(12) CONSTRAINT CSTVILLE CHECK (Ville IN (Marrakech,Casablanca)));

Langage SQL
Ajouter, supprimer ou renommer une contrainte Des contraintes d'intgrit peuvent tre ajoutes ou

supprimes par la commande ALTER TABLE. On peut aussi modifier l'tat de contraintes par MODIFY CONSTRAINT.

Syntaxe: ALTER TABLE Client DROP CONSTRAINT CSTVILLE ADD CONSTRAINT .. RENAME CONSTRAINT CSTVILLE TO CSTVILLECL MODIFY CONSTRAINT CSTVILLE

Langage SQL
Insertion des donnes: Pour crer une ou plusieurs ligne(s) dans une seule table, SQL offre linstruction INSERT INTO VALUES:

Plusieurs prcautions doivent tre prises lors dune instruction INSERT INTO: Les valeurs qui sont donnes via VALUES doivent tre dans le mme ordre que les colonnes qui sont prcises dans le INTO. Et avec un type de donnes compatible a celui qui a t dclar dans la table. Toutes les colonnes qui ne sont pas prcises, reoivent la valeur par dfaut ou NULL

Langage SQL
Insertion des donnes: Pour que la colonne reoit un entier incrment automatiquement, il suffit de crer, avant le premire insertion, une squence pour cette table et utiliser cette squence (avec NEXTVAL)dans linstruction INSERT INTO: