Vous êtes sur la page 1sur 32

SGBD 1

Langage de Dfinition de Donnes (LDD) CREATE, ALTER, CONSTRAINT, DROP


Cette prsentation aborde les mthodes de la mise en place de la base de donnes, ses tables et les contraintes portant sur les colonnes de ses tables.

Crer une Base de Donnes


Une base de donnes SQL Server est constitue dau moins deux fichiers :
Un fichier de donnes primaire qui possde lextension .mdf, et contient les donnes et les objets tels que les tables, les index,etc. Un fichier journal qui possde lextension .ldf et renferme les journaux des transactions permettant deffectuer une rcupration des transactions de la base de donnes. Pour crer une nouvelle base de donnes, vous devez tre sur la base de donnes Master.

Crer une Base de Donnes


Linstruction CREATE DATABASE permet de crer une nouvelle base de donnes. Syntaxe gnrale : Create database nomBaseDonnees
-- Data file (facultatif) On primary ( name = nomLogique, Filename = 'nomFichier', Size = tailleInitiale, Maxsize = tailleMaximale, Filegrowth = pasIncrementation) -- Log file (facultatif) LOG ON ( Name = nomLogique, Filename = 'nomFichier', Size = tailleInitiale, Maxsize = tailleMaximale] Filegrowth = pasIncrementation]);

Crer une Base de Donnes


Argument On primary Name Rle Signifie dutiliser le fichier de donnes primaire. Dsigne le nom logique du fichier. Par dfaut, cest le nom de la base de donnes suivi de _DATA pour le fichier de donnes principal et _LOG pour le fichier journal. Filename Dsigne le chemin daccs au fichier. Par dfaut, ce fichier est cre dans le sous-dossier Program Files\Microsoft SQL Server\MSSQL\Data\. Size Indique la taille initiale du fichier en KB, MB ou GB. Par dfaut, la taille est de 1MB pour le fichier de donnes primaire et de 512KB pour le fichier journal de transaction. Lunit par dfaut est le MB. Maxsize Filegrowth Indique en KB, MB ou GB la taille maximale que le fichier ne devra pas excder. Indique le pas dincrmentation de la taille du fichier. La valeur peut tre absolue ou en pourcentage (x %) par rapport la taille initiale du fichier. Log on Signifie dutiliser le fichier journal.

Crer une Base de Donnes


Create database VolAvion --Data file On primary (Name = VolAvion_Data, Filename = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\ VolAvion.mdf', Size = 10MB, Maxsize = 50MB, Filegrowth = 10%) --Log file Log on (Name = VolAvion_Log, Filename = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\ VolAvion.ldf', Size = 1MB, Maxsize = 5MB, Filegrowth = 10%);

Crer une Base de Donnes


Une autre syntaxe simplifie consiste ne dfinir que le nom de la base de donnes. Use master Go Create database VolAvion; Vous pouvez tout moment renommer une base de donnes utilisateur. Alter database AncienNomBD Modify name = NouveauNomBD ; Exemple: Alter database VolAvion Modify name = VolAvion2013 ;

Crer une Base de Donnes


Supprimer une Base de Donnes Vous pouvez supprimer une base de donnes dfinie par l'utilisateur ds qu'elle n'est plus ncessaire ou qu'elle est transfre vers une autre base de donnes ou un autre serveur. Drop database nomBaseDonnees ; Exemple: Drop database VolAvion;

Dtacher et attacher une base de donnes


Dtacher une base de donnes signifie la libration de ses fichiers, pour les copier ou les dplacer. Lopration inverse de dtachement dune base de donnes est lattachement ; cest--dire de lier ses fichiers SQL Server (et donc de rendre la base nouveau accessible).

Syntaxe de dtachement dune BD : sp_detach_db nomBaseDeDonnees ;


Exemple : dtacher la base de donnes VolAvion : sp_detach_db VolAvion ;

Dtacher et attacher une base de donnes


Syntaxe dattachement dune BD : sp_attach_db nomBaseDeDonnees , nomFichier1, nomFichier2, Exemple : attacher la base de donnes VolAvion. sp_attach_db VolAvion, 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\VolAvion.mdf', 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\VolAvion.ldf Remarque : SQL Server propose ces oprations en mode graphique depuis SSMS. Pour dtacher une base de donnes, cliquez droit sur celle-ci, et choisissez Tches / Dtacher pour attacher une base de donnes, cliquez droit sur le dossier Bases de donnes, et choisissez Joindre. Il vous suffit alors de pointer vers le fichier .mdf de votre base de donnes pour rcuprer la liste et lemplacement des fichiers.

Cration dune table


La cration de tables se fait laide du couple de mots-cls CREATE TABLE. Create table nomTable ( nomColonne1 typeDonnes1, nomColonne2 typeDonnes2, ); Remarque : Avant de crer une nouvelle table, vous devez tre sur votre base de donnes utilisateur. 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 254.

Cration dune table


Exemple : Cration de la table Avion dans la base de donnes VolAvion : CREATE TABLE Avion ( Av# smallint, marque varchar(10), typeAvion varchar(10), capacite smallint, localisation varchar(25), dateMiseEnService datetime);

Les Contraintes dintgrit


Une contrainte dintgrit est une condition permettant dassurer des contrles sur les donnes saisies dans la base de donnes.
Il existe trois catgories dintgrit de donnes rsumes ci-aprs : Contraintes dentit : PRIMARY KEY et UNIQUE Contrainte de domaine : CHECK, DEFAULT, NULL/NOT NULL Contrainte dintgrit rfrentielle : FOREIGN KEY

Remarque : Le langage T-SQL dfinit des contraintes et le SGBD empche tout moment la violation de celles-ci. Le mot cl CONSTRAINT permet lutilisateur de choisir lidentifiant dune contrainte ce qui permet lors dune mise jour, de localiser rapidement la contrainte objet de la violation.

Contrainte de cl primaire
La contrainte de cl primaire (primary key) permet de dfinir une ou plusieurs colonnes comme la cl primaire dune table.
Dans le cas o la cl primaire est forme dune seule colonne, vous pouvez la dfinir en mme temps que la colonne :

CREATE TABLE nomTable ( nomColonne typeDonnes constraint nomContrainte Primary key,);


Exemple : Create table Avion ( Avi# smallint constraint pk_Avion Primary key,); Par convention, le nom dune contrainte de cl primaire est prfix de pk_ et suffix du nom de la table courante

Contrainte de cl primaire
Vous pouvez laisser la dfinition de la cl primaire sur une colonne aprs la cration de cette dernire, et dailleurs cest la syntaxe recommande : Create table nomTable ( nomColonne1 typeDonnes1, nomColonne2 typeDonnes2,, Constraint nomContrainte Primary key (nomColonne1));
Exemple: Create table Avion (Av# smallint, marqueAvion varchar(10), , Constraint pk_Avion Primary key (Av#));

Contrainte de cl primaire
Dans le cas o la cl primaire est forme de plusieurs colonnes. Vous ne pouvez pas la dfinir en mme temps que la cration des colonnes concernes. Par contre, vous pouvez, comme dans le cas de cl portant sur une seule colonne, la dfinir aprs la dfinition de ses colonnes. Exemple : Dans la table AffecteVol, la cl primaire est forme de deux champs passager et Vol. Create table AffecteVol (passager int,vol smallint, , Constraint pk_AffecteVol Primary key (passager, Vol));

Contrainte dunicit (unique)


Une contrainte dunicit interdit une colonne (ou combinaison de colonnes) de possder des doublons. La contrainte dunicit convient une cl candidate. Cependant une colonne dfinit en tant que unique ne correspond pas forcment un identificateur et peut donc avoir des valeurs NULL.

Dans le cas o la contrainte dunicit porte sur une seule colonne, vous pouvez utiliser la syntaxe suivante : Create table nomTable ( nomColonne1 type1 constraint nomContrainte unique ,);
Par convention, le nom dune contrainte dunicit est prfix de un_ et suffix du nom de la colonne concerne par la contrainte (exemple un_nomPilote).

Contrainte dunicit (unique)


Exemple : Vous pouvez ajouter une contrainte dunicit la colonne nomPilote pour tre sur de ne pas avoir des doublons : Create table Pilote (numPilote smallint, nomPilote varchar(50) constraint un_nompilote unique, ); Ou bien de lajouter de faire cette dclaration la fin de la cration : Create table Pilote (numPilote smallint,nomPilote varchar(50), , Constraint un_nomPilote unique (nomPilote));

Contrainte dunicit (unique)


Lorsque la contrainte dunicit porte sur plusieurs colonnes, vous utiliserez la syntaxe suivante : Create table nomTable (nomColonne1 typeDonnes1 , nomColonne2 typeDonnes2 , , Constraint nomContrainte unique (nomColonne1, nomColonne2)); Exemple : Interdire au couple (villeDepart, villeArrivee) de possder des donnes redondantes Create table Vol (numVol smallint,villeDepart varchar(30), villeArrivee varchar(30),, Constraint un_ville unique (villeDepart, villeArrivee));

Contrainte didentit (IDENTITY)


La contrainte didentit applique sur un champ indique que les valeurs de ce dernier sont auto incrments. Dans dautres SGBDR, cette proprit est souvent nomme incrmentation automatique (autonumber ou autoincrement). Syntaxe : Create table nomTable ( nomColonne typeDonnes constraint nomCont identity(valInitial,PasIncrm), );
La contrainte didentit possde deux valeurs : la valeur initiale et le pas dincrmentation.

Contrainte didentit (IDENTITY)


Remarque : Vous pouvez employer la proprit identity avec les types numriques exacts : bigint, int, smallint, tinyint, decimal et numeric. Si vous employez les types de donnes decimal ou numeric avec la proprit identity, vous devez les dfinir avec zro dcimale. Exemple : Create table pilote ( pil# smallint constraint id_numPilote identity(1,1), );

Contrainte de valeurs par dfaut (DEFAULT)


Vous pouvez attribuer une (ou plusieurs) colonne(s) des valeurs par dfaut. Syntaxe : Create table nomTable ( nomColonne typeDonnes constrainte nomContrainte default Condition, ); Remarque : Par convention, le nom dune contrainte de validation est prfix de df_ et suffix du nom de la colonne concerne par la contrainte (exemple df_marqueAvion). Exemple : Supposons que la ville de dpart (villeDepart) de tous les vols est Paris. Il est prfrable alors dindiquer Paris comme valeur par dfaut de la colonne villeDepart : Create table Vol (, villeDepart varchar(30) constraint df_villeDepart default 'Paris');

Contrainte de valeurs par dfaut (DEFAULT)


Vous pouvez ainsi ajouter la contrainte de valeur par dfaut posteriori comme ceci :

Create table Vol ( villeDepart varchar(30),, constraint df_villeDepart default 'Paris' for villeDepart);

Contrainte de validation (CHECK)


La contrainte de validation impose que les valeurs dune colonne prennent des valeurs dans un ensemble dfini par une condition. Syntaxe : vous pouvez dfinir la contrainte de validation sur une colonne au moment de la cration de celle-ci. Create table nomTable ( nomCol typeCol constraint nomContrainte check (nomCol Condition),); Remarque : Par convention, le nom dune contrainte de validation est prfix de ck_ et suffix du nom de la colonne concerne par la contrainte (exemple ck_codePostal). Exemple : Create table Pilote ( numPilote smallint, codePos int constraint ck_codePos check (codePos LIKE '[0-9][0-9][0-9][0-9][09]'));

Contrainte de validation (CHECK)


Vous pouvez ainsi mettre la contrainte aprs la dfinition de la colonne porteuse de contrainte : Create table nomTable ( nomColonne1 typeDonnes1, nomColonne2 typeDonnes2,, constraint nomContrainte check (nomColonne2 Condition)); Exemple N1 : Create table Pilote ( numPilote smallint, codePos int,, constraint ck_codePos check (codePos LIKE '[0-9][0-9][0-9][0-9][0-9]'));

Contrainte de validation (CHECK)

Exemple N2 : Ou bien encore, on peut utiliser plusieurs colonnes :


Alter table Vol Add constraint ck_heureDepArr check (heureArrivee > heureDepart);

Contrainte NULL/NOT NULL


Une colonne qui nest pas renseigne, et donc vide, est dite contenir la valeur NULL. Cette valeur nest pas zro, cest une absence de valeur. Vous pouvez imposer une colonne dtre toujours renseigne grce la contrainte NOT NULL. La contrainte NULL applique sur une colonne signifie que les enregistrements de celle-ci peuvent ne pas tre renseigns. Syntaxe : create table nomTable ( nomColonne typeDonnes constraint nomContrainte] {null|not null}); Exemple : Le champ nomPilote de la table pilote doit toujours tre renseign. create table Pilote ( numPilote smallint, nomPilote varchar(50) constraint nl_nomPilote not null,);

Contrainte de cl trangre
Vous employez des contraintes de cl trangre pour mettre en uvre lintgrit rfrentielle.
Une cl trangre (Foreign key) garantit que les valeurs qui peuvent tre entres dans une colonne particulire existent dans une table spcifie. Les utilisateurs ne peuvent entrer de valeurs dans cette colonne qui nexistent pas dans la table spcifie. Par convention, le nom dune contrainte de cl trangre est prfix de fk_ et suffix des noms de la table source, de la cl et de la table cible (exemple fk_Vol_avion_Av#).

Contrainte de cl trangre
Syntaxe N1 : Si la contrainte de cl trangre est compose dune seule colonne, vous pouvez la dfinir en mme temps que la colonne porteuse de la contrainte. Create table nomTable ( , nomColonne2 typeDonnes2 constraint nomContrainte foreign key References nomTableReferencee (nomcolonneReferencee)); Exemple : Lexemple suivant dfinit une contrainte de cl trangre sur la colonne avion (de la table Vol) en faisant rfrence la colonne numAvion (de la table Avion). Create table Vol ( numVol smallint,, avion int Constraint fk_Vol_avion_Av# Foreign key References Avion(av#));

Contrainte de cl trangre
Vous pouvez crer les contraintes de cl trangre aprs la dfinition de la colonne : Create table nomTable ( nomColonne1 type1, nomColonne2 type2, , Constraint nomContrainte Foreign key (nomColonnePorteuse) Refernces nomTableReferencee (colonneReferencee)); Exemple : Create table Vol (avion int, numVol smallint,, Constraint fk_Vol_avion_Av# Foreign key (avion) References Avion(av#));

Contrainte de cl trangre
Si la contrainte de cl trangre est compose de plusieurs colonnes, vous devez la dfinir aprs la dfinition de celles-ci : Create table nomTable ( nomColonne1 type1, nomColonne2 type2, , Constraint nomContrainte Foreign key (nomColonnePorteuse) Refernces nomTableReferencee (colonneReferencee)); Exemple : Create table Vol (avion int,marque varchar(10), numVol smallint,, Constraint fk_Vol_avion_Av# Foreign key (avion,marque) References Avion(av#,marque));

Contrainte de cl trangre
Les options de la cl trangre Loption ON DELETE CASCADE indique que la suppression dune ligne de nomTableReferencee va entraner automatiquement la suppression des lignes qui la rfrencent dans la table. Si cette option nest pas indique, il est impossible de supprimer des lignes de nomTableReferencee qui sont rfrences par des lignes de la table. la place de ON DELETE CASCADE, vous pouvez donner loption ON DELETE SET NULL. Dans ce cas, la cl trangre sera mise NULL si la ligne quelle rfrence dans nomTableReferencee est supprime.

Contrainte de cl trangre
Les options de la cl trangre La norme T-SQL offre 04 autres options : ON DELETE SET DEFAULT met une valeur par dfaut dans la cl trangre quand la cl primaire rfrence est supprime.

ON UPDATE CASCADE modifie la cl trangre si on modifie la cl primaire.


ON UPDATE SET NULL met NULL dans la cl trangre quand la cl primaire rfrence est modifie. ON UPDATE SET DEFAULT met une valeur par dfaut dans la cl trangre quand la cl primaire rfrence est modifie.

Vous aimerez peut-être aussi