Le langage de définition de données B.T.S. S.I.O – SI3 –
Plan du cours 1. Création de tables et contraintes 2. Modification de la définition d’une table 3. Exercices
I. Création des tables et contraintes
Les différents types de données en SQL Type Taille (Octets) Signification Int4Valeur Entière SmallInt2Valeur Entière TinyInt1Valeur Entière float4/8Valeur Décimale Char (longueur) Fixe (max 255) Chaîne de caractères VarChar (longueur) Var (max 255) Chaîne de caractères Text Var (max ) Chaîne de caractères Image Var (max ) Chaîne binaire Type Taille (Octets) Signification Bit1Valeur Binaire Binary Fixe (max 255) Chaîne binaire Varbinary Var (max 255) Chaîne binaire Money8Valeur en $ DateTime 2 4 octets Nb Jours depuis 1/1/ Heure
Création de tables CREATE TABLE nom-table ( nom_colonne1 type_colonne [DEFAULT valeur] [contrainte_colonne], nom_colonne2 type_colonne [DEFAULT valeur] [contrainte_colonne], ……………………………. [contrainte-table] ); CREATE TABLE nom-table ( nom_colonne1 type_colonne [DEFAULT valeur] [contrainte_colonne], nom_colonne2 type_colonne [DEFAULT valeur] [contrainte_colonne], ……………………………. [contrainte-table] );
Contraintes de colonnes Les contraintes de colonnes peuvent être : CONTRAINTESSIGNIFICATION NOT NULLSaisie obligatoire UNIQUEDoublons interdits PRIMARY KEYClé primaire CHECK (expression ) Contrainte de vérification sur une colonne REFERENCES table_reference (colonne_reference ) Clé étrangère
Contraintes de tables Ce sont les mêmes que les contraintes de colonnes mais elles sont regroupées en fin de commande. La syntaxe des contraintes est la suivante : CONSTRAINT nom_contrainte { UNIQUE ( nom_colonne [,... ] ) | PRIMARY KEY ( nom_colonne [,... ] ) | CHECK ( expression ) | FOREIGN KEY ( nom_colonne [,... ] ) REFERENCES table_reference (colonne_reference) }
Ecrire la commande de création de la table PAYS (Le nom du pays représente la clé primaire) Exemple 1
Exemple 2 Soient les relations suivantes : DISTRIBUTEURS (numDist, nomDist) numDist : Clé primaire FILMS (codeFilm, titreFilm, dateProd, genre, duree, numDist) codeFilm, titreFilm : clé primaire numDist : clé étrangère en référence à numDist de DISTRIBUTEURS Travail à faire : Ecrire la syntaxe SQL permettant de créer les tables DISTRIBUTEURS et FILMS sachant que : Les champs codeFilm, duree et numDist sont de type INTEGER Les champs titre, genre et nomDist sont de type VARCHAR Dans la table DISTRIBUTEURS, les numéros de distributeurs doivent être supérieurs à 100 et les noms ne doivent pas être vides Travail à faire : Ecrire la syntaxe SQL permettant de créer les tables DISTRIBUTEURS et FILMS sachant que : Les champs codeFilm, duree et numDist sont de type INTEGER Les champs titre, genre et nomDist sont de type VARCHAR Dans la table DISTRIBUTEURS, les numéros de distributeurs doivent être supérieurs à 100 et les noms ne doivent pas être vides
Correction exemples 1 et 2
CREATE TABLE nom-table AS SELECT … ; Création de tables : Création d’une table à partir des résultats d’une requête Requête SQL de sélection dont le résultat représentera la structure de la nouvelle table
Exemple 3 Création d’une table à partir d’une autre table existante Ecrire la commande de création de la table Pays_Pop7 contenant les noms, capitales, populations des pays ayant un nombre d’habitant supérieur à 7 millions d’habitants.
Exemple 4 Créer une table films_recents contenant les entrées récentes de la table films (films dont la date de production est supérieure au 01 janvier 2011)
2. Modification de la définition d’une table
Modification de la définition d’une table Commande ALTER TABLE nom_table suivi de : pour ajouter une colonne ou une contrainte, MOT CLÉ : ADD COLUMN nom_colonne type_colonne ; OU ADD CONSTRAINT nom_contrainte pour changer le nom de la table ou d’une colonne existante mot clé : RENAME EXEMPLE : ALTER TABLE distributeurs RENAME TO fournisseurs; ALTER TABLE distributeurs RENAME COLUMN adresse TO ville;
3. Exercices
Exercices 1. Ajout de la colonne Continent dans la table Pays de type CHAR (10) 2. Modifier le type de la colonne Continent dans la table Pays en type VARCHAR (20) 3. Ajout d’une contrainte de vérification sur la table : Pas de nombre négatif pour la colonne population 4. Supprimer la contrainte NOT NULL de la colonne nomDist de la DISTRIBUTEURS :
Des questions