Académique Documents
Professionnel Documents
Culture Documents
tables
Version 1.0
Grgory CASANOVA
Sommaire
Introduction ..................................................................................................................................... 3
Pr-requis ........................................................................................................................................ 4
3.1.1
3.1.2
3.2
3.2.2
3.3.1
IDENTITY ........................................................................................................................ 11
3.3.2
3.3.3
UNIQUE.......................................................................................................................... 14
3.3.4
REFERENCE .................................................................................................................... 15
3.3.5
DEFAULT ........................................................................................................................ 16
3.3.6
CHECK ............................................................................................................................ 16
3.4
3.4.1
3.4.2
Ajout ...................................................................................................................................... 19
4.1.1
4.1.2
4.2
Modification .......................................................................................................................... 21
4.2.1
4.2.2
4.3
3.2.1
3.3
Retrait .................................................................................................................................... 22
4.3.1
4.3.2
Conclusion ..................................................................................................................................... 24
1 Introduction
Les donnes ne peuvent pas tre stockes directement dans la base. Cest pourquoi une base de
donnes contient des sous ensembles, qui permettent de donnes une intgrit aux donnes quelle
stocke. Ces sous ensembles sont appels les tables. Les tables sont reconnues dans SQL Server par
leur nom. Ces mme sous ensemble, les tables, contiennent des sous ensembles, qui sont les
colonnes, et qui sont les vritables conteneurs des donnes. Cest grce aux colonnes que nous
allons pourvoir stocker des donnes, et sauvegarder lintgrit de nos donnes, en les rangeant, en
diffrenciant leur types, ou encore en posant directement des contraintes sur ces colonnes. Enfin,
une colonne est caractrise par deux lments : son nom et son typage, chose que nous allons voir
dans la partie qui suivra les pr-requis.
2 Pr-requis
-
3 Les tables
3.1 Les types de donnes
3.1.1
Nvarchar
Int
Bigint
Smallint
Tinyint
Decimal/Numeric
Float
Real
Money
Smallmoney
Date
Datetime
Datetime2
Smalldatetime
Datetimeoffset
time
Hierarchyid
Geometry
Geography
Uniqueidentifier
Binary
Varbinary
Bit
Xml
Table
Sqlvariant
Les types de donnes text, ntext et images existent toujours pour la compatibilit des
anciennes versions, mais il est prfrable dutiliser les types varchar(max) et varbinary(max).
3.1.2
7
Figure 1.1.2.1.1 :
8
Figure 1.1.2.1.1 :
Analysons le code.
CREATE TYPE Nom_Type
La commande CREATE TYPE est bien entendu, la commande qui va nous permettre dannoncer Sql
Server que nous allons crer un nouveau type de donnes. Il est donc ncessaire de renseigner la
suite le nom de ce nouveau type.
FROM Type_existant NULL
FROM annonce que nous allons utiliser un type existant pour dfinir notre propre type. Il est donc
ensuite ncessaire de renseigner le type de donnes existant que nous utiliserons et si oui ou non,
les valeurs NULL sont supportes.
Dotnet France Association CASANOVA Grgory
9
Pour supprimer un type personnalis de donnes, il suffit dutiliser linstruction DROP TYPE.
DROP TYPE NomSchema.Nom_Type
Le mot cl CREATE TABLE va bien entendu nous permettre de crer une table dans la base de
donnes dans laquelle nous nous sommes rendus au pralable. Aprs ce mot cl, il est possible de
spcifier le schma de la table et le nom de la table spar par un point. Nous verrons plus tard, dans
la partie Administration de SQL Server, ce quest un schma de base. Pour le moment, retenez quil
est possible didentifier un objet de la base de donnes par le modle suivant :
NomBaseDeDonnes.NomSchma.NomObjet. Aprs cela, on placera entre parenthses les colonnes
que lon veut crer, caractrises par leur nom et le type de donnes quelles supportent. Il est aussi
ncessaire de spcifier, si la colonne en question supporte ou non la valeur NULL. Lorsque vous aurez
spcifi toutes ces caractristiques, vous pouvez compiler votre code en appuyant sur F5 ou en
cliquant sur la touche dexcution du code. Vous aurez un message de validation de votre requte.
Lors de la cration de la table, il est possible de crer les contraintes dintgrits, conformment
une base de donnes relationnelle qui sont les diffrents types de cls, mais aussi les contraintes
telles que UNIQUE, IDENTITY Nous expliquerons plus en dtail par la suite, ce quest rellement une
contrainte dintgrit. Pour ajouter ces contraintes lors de la cration de la table, il suffit de spcifier
la suite de la colonne voulue, le type de contrainte voulue, ainsi que son nom, et les arguments
ncessaires celle-ci.
10
3.2.2
Avec SSMS
Avec SQL Server management studio, la tache est dautant plus facile, puisque lon utilise
linterface graphique. Dans votre explorateur dobjet, il vous suffit dtendre le nud de votre base
de donnes, deffectuer un click droit dur le nud table et de slectionner Nouvelle table .
11
Une nouvelle fentre apparait alors comme ceci :
Vous aurez alors renseigner les informations ncessaires, savoir le nom de chaque colonne, avec
le type de donnes quelle supportera et si elle supporte les valeurs NULL ou non. Pour sauvegarder
votre table, il vous suffira deffectuer un click droit sur longlet de la fentre o vous vous trouvez et
de slectionner Sauvegarder . Donnez alors un nom votre table, et aprs rafraichissement de
lexplorateur dobjet, vous pourrez voir votre table dans le nud table de votre base de donnes.
12
Remarquez que lorsque lon insre des lignes dans une table comportant une colonne IDENTITY,
nous navons pas besoin de prciser la colonne et la valeur quelle prend en argument, do son
intrt, dautomatiser la saisie des donnes. Vrifions maintenant le rsultat avec un simple SELECT :
On remarque bien que la colonne COLONNE1 cest peuple seule, grce la contrainte IDENTITY. Il
est bon de rappeler que nous navons droit qu une seule contrainte IDENTITY par table.
3.3.2 PRIMARY KEY
Cette contrainte permet de dfinir une cl primaire sur une ou plusieurs colonnes dune table. Il ne
peu y avoir quune seule cl primaire par table, et la ou les colonnes sur lesquelles elle est dfinie
doivent tre de type NOT NULL. Il est important de noter que lorsque nous crons une cl primaire,
un index unique est cr (nous verrons cette notions plus en dtail plus tard dans les chapitres), on
peu donc considrer que les actions disponibles sur les indexs sont aussi disponibles lors de la
cration dune cl primaire. Il y a trois faon dajouter un cl primaire : en la crant pendant la
dfinition de la table mme, en la crant aprs dfinition de la table ou bien par SSMS. Commenons
par la faon la plus simple, par SSMS.
-Avec SSMS, rien de plus simple qutablir une contrainte cl primaire sur une colonne dune
table. Il vous suffit de dployer dans lexplorateur dobjets tous les nuds qui mnent votre table,
comme ceci :
13
Effectuez un click droit sur la table en question et slectionnez cration . Cette nouvelle fentre
apparat cot de votre explorateur dobjet :
14
Pour ajouter la cl primaire, faites un click droit sur la colonne voulue et slectionnez dfinir en
tant que cl primaire . Pensez ensuite sauvegarder les changements de dfinition de table.
Lopration est identique pour supprimer la cl primaire.
-Pendant la dfinition de table, il vous suffit dajouter le code suivant la suite de la colonne
voulue :
CREATE TABLE MATABLE1
(COLONNE1 int CONSTRAINT PK_Nom_Contrainte PRIMARY KEY)
Le mot cl CONSTRAINT indique explicitement que nous allons dfinir une contrainte, la suite de
ce mot cl nous pouvons dfinir le nom unique de la contrainte. Cette dfinition nest pas ncessaire,
simplement, le nom est plus clair si on le dfinit sois mme. Si on ne le prcise pas, celui-ci est gnr
automatiquement, et est compos dune suite de caractres sans sens prcis. Enfin le mot cl
PRIMARY KEY indique que la contrainte est une cl primaire.
-Aprs dfinition de la table, admettons que nous avons cr une table avec le modle suivant :
CREATE TABLE MATABLE1
(COLONNE1 int)
Nous souhaitons alors ajouter une cl primaire sur la colonne COLONNE1. Cette opration est
possible grce linstruction DDL ALTER TABLE comme ceci :
ALTER TABLE MATABLE1
ADD CONSTRAINT PK_PRIMARY
PRIMARY KEY (COLONNE1)
Il est possible dajouter les options CLUSTERED ET NON CLUSTERED, suivant si nous voulons que
lindex de la cl primaire gnr automatiquement soit ordonn ou non.
3.3.3 UNIQUE
La contrainte UNIQUE comme son nom lindique, va nous permettre de prciser sur une colonne, si
les valeurs contenues dans celle-ci ne doivent pas tre dupliques dans plusieurs enregistrements.
De ce fait, il ne sera pas possible avec une contrainte unique davoir deux fois une mme valeur pour
une colonne donne. Enfin, contrairement une table possdant une cl primaire, une table peu
avoir plusieurs colonnes concernes par une contrainte UNIQUE. Lorsque une contrainte de ce type
est dfinit, lintgrit est gre par un index de type UNIQUE cr en simultan. La dfinition dune
contrainte UNIQUE est simple avec du code T-SQL, puisque cest de la mme manire que nous avons
cr notre cl primaire. Les deux faons (pendant ou aprs dfinition de la table) existent bien
entendu :
15
--Pendant :
CREATE TABLE MATABLE1
(COLONNE1 int UNIQUE)
--Aprs :
CREATE TABLE MATABLE1
(COLONNE1 int)
ALTER TABLE MATABLE1
ADD CONSTRAINT Nom_Contrainte UNIQUE
Attention : Il est possible dajouter une valeur NULL dans une colonne concerne par une contrainte
unique et qui accepte les valeurs NULL, cependant, il nest pas conseill de pratiquer ceci.
Rappel : Lors de la cration dun contrainte PRIMARY KEY, la colonne est reconnue comme UNIQUE
et naccepte pas les valeurs NULL.
3.3.4 REFERENCE
La contrainte REFERENCE traduit la liaison qui existe entre une cl primaire et trangre de deux
tables. Il est conseill de crer ce genre de contrainte quaprs la cration de toutes les tables
impliques, sinon, lors de la compilation de votre script, des erreurs peuvent apparaitre. Cette
contrainte na pas de proprit particulire par dfaut, il faut les ajouter sois mme, voyons dans un
premier temps sa syntaxe. Nous prsenterons les deux mthodes (pendant et aprs cration des
tables) par souci dexhaustivit :
--Pendant :
CREATE TABLE MATABLE1
(COLONNE1 int PRIMARY KEY)
CREATE TABLE MATABLE2
(COLONNE1 int CONSTRAINT FOREIGN KEY COLONNE1
REFERENCE MATABLE1 [COLONNE1]
Options)
--Aprs :
ALTER TABLE MATABLE2
ADD CONSTRAINT FOREIGN KEY COLONNE1
REFERENCE MATABLE1 [COLONNE1]
Options)
Comme dit prcdemment, les deux choix sont possibles, seulement, lorsque les tables se multiplient
dans votre script, il est de plus en plus difficile de grer la cration de ces contraintes pendant la
cration mme des tables, puisque la table contenant la cl primaire doit exister avant celle
contenant al cl trangre. Il est dailleurs impossible de choisir cette option lorsquune table
contient une cl primaire et une ou plusieurs cls trangres. Le champ Options dans nos exemples
constitue lendroit mme ou nous pouvons dfinir les proprits de nos rfrences. Attardons nous
sur ces proprits possibles.
NO OPTION : Cest la valeur par dfaut dune contrainte REFERENCE. Elle permet dobtenir le mme
comportement que si nous navions rien prcis.
Dotnet France Association CASANOVA Grgory
16
ON DELETE CASCADE : Prcise que si une ligne contenant la cl primaire rfrence est supprime,
toute les lignes contenant une cl trangre rfrenc sur cette cl primaire seront supprimes, sous
rserve que la cl primaire et la ou les cls trangres possdent la mme valeur denregistrement.
ON UPDATE CASCADE : Permet de demander SQL Server de mettre jour toutes les cls trangres
rfrences sur une cl primaire, lorsque cette cl primaire est mise jour.
SET NULL : Lorsque la cl primaire rfrence dans une table est supprime, les cls trangres de
mme valeur sont mises NULL. Il faut ainsi faire attention bien accepter les valeurs NULL pour la
colonne spcifie.
SET DEFAULT : Lorsque la ligne correspondant la cl primaire rfrence dans la table est supprim,
les valeurs pour la cl trangre sont mise la valeur par dfaut dfinit sur la colonne en question.
3.3.5 DEFAULT
La contrainte DEFAULT est particulirement utile pour viter les valeurs NULL dans une table. Il faut
toutefois garder lesprit quune valeur par dfaut ne sera utilise que dans le cas o lutilisateur
nentre pas de valeur pour une colonne en particulier. Ce type de contrainte peu tre applique pour
toutes les colonnes mis part les colonnes de type timestamp et celles qui possde une contrainte
IDENTITY. Voici la syntaxe :
--Pendant :
CREATE TABLE MATABLE1
(COLONNE1 int DEFAULT Valeur)
--Aprs :
ALTER TABLE MATABLE2
ADD CONSTRAINT DEFAULT Valeur
FOR COLONNE1
Remarque : La dfinition des paramtres est toujours possible pendant ou aprs la cration des
tables concernes.
3.3.6 CHECK
Cette contrainte permet de vrifier, avant insertion ou mise jour des donnes contenues dans la
colonne en question, que les donnes insrer sont bien au format voulu, ou encore quune valeur
entre dans la colonne pour un enregistrement appartiendra un domaine de valeurs particulier.
Regardons maintenant la syntaxe de cette contrainte :
--Pendant :
CREATE TABLE MATABLE1
(COLONNE1 int CHECK (expression_booleenne))
--Aprs :
ALTER TABLE MATABLE2
ADD CONSTRAINT CHECK (expression_booleenne)
17
Il est possible dajouter loption NOT FOR REPLICATION aprs le mot cl CHECK, afin de spcifier
quil faut empcher lapplication de la contrainte dans un cas de rplication.
Avec SSMS
Avec SSMS, il est simple de supprimer une table de votre base de donnes. Il vous suffit de
dployer votre base de donnes dans lexplorateur dobjet, deffectuer un click droit sur la table
choisie et de slectionner Supprimer . Une nouvelle fentre saffiche, il vous suffira de valider
votre choix pour que laction soit faite. (Figure 1.1.3.1)
Figure 1.3.1.1 :
Analyse du code :
USE Test
GO
18
On prcise alors que dans cette table Test, grce linstruction DROP TABLE, nous allons supprimer la
table Client dont le schma est dbo. Aprs avoir excut ce code, on peut remarquer que la table que
nous avons prcise aprs linstruction DROP TABLE nexiste plus.
19
4.1 Ajout
4.1.1
Avec SSMS
Avec SSMS, linterface graphique nous permet encore une fois dajouter des donnes dans
notre table trs simplement. Il suffira juste de se rappeler des contraintes que nous nous somme
imposes lorsque nous avons choisis le type de donnes de chaque colonne. Pour ajouter des
donnes dans chacune des cases dune table de votre base de donnes, il vous suffira douvrir
lExplorateur dobjet dans SSMS, de dployer votre base de donnes afin de rendre visible la table
dans laquelle vous voulez ajouter des donnes, et enfin deffectuer un click droit sur cette mme
table et de slectionner Modifier les 200 premires lignes du haut . Une nouvelle sous fentre
saffiche alors dans SSMS (figure 2.2.1.1), qui va vous permettre dajouter des donnes dans chacune
des colonnes de votre table.
Figure 1.2.1.1
20
4.1.2
Dtaillons ce code.
INSERT INTO dbo.Entrepos
La commande INSERT INTO est la commande dinsertion de donnes dans une table. Il est
ncessaire dajouter la table de destination la suite de cette commande de la faon suivante :
Nom_BDD.Schema_Table.Nom_Table.
(Nom_Entrepos)
Par la suite, il faut prciser les colonnes de destination des valeurs que nous allons entrer. Il est
possible dattribuer la valeur NULL une colonne qui laccepte de deux manires.
La premire serait de ne pas ajouter le nom de la colonne dans la liste des colonnes de la table et de
ne pas ajouter de valeur dans la liste des valeurs.
La seconde serait de laisser le nom de la colonne dans la liste des colonnes mais de prciser que la
valeur est NULL.
VALUES
Le mot cl VALUES permet SSMS didentifier les lignes qui suivront comme tant des valeurs
Il suffit alors ensuite de faire la liste des donnes ajouter dans lenregistrement. Il est important
dajouter que pour des types de donnes caractres, il est ncessaire de mettre les donnes entre
simple guillemets ( ). Les donnes doivent tre, comme prsentes dans le modle, donnes entre
des parenthses. Le mot cl GO la fin du lot.
21
4.2 Modification
4.2.1
Avec SSMS
La modification de donnes avec linterface graphique se fait la base de la mme manire
que lajout de donnes. Simplement, nous sommes confront une contrainte, puisque si nous
avons plus de 200 enregistrements pour cette table, il ne sera pas possible de modifier la totalit de
nos donnes, de plus, on ne pourra modifier les donnes quune par une contrairement quavec la
mthode du code. Pour modifier des donnes dans chacune des cases dune table de votre base de
donnes, il vous suffira douvrir lExplorateur dobjet dans SSMS, de dployer votre base de donnes
afin de rendre visible la table dans laquelle vous voulez modifier des donnes, et enfin deffectuer un
click droit sur cette mme table et de slectionner Modifier les 200 premires lignes du haut . Il
vous est alors possible de modifier nimporte quelle valeur, de nimporte quelle ligne, de nimporte
quelle colonne de votre table, du moment que la nouvelle valeur respectera les contraintes de type
de donnes que vous aurez donn cette colonne, ou encore que vous nayez pas mis une valeur
NULL dans une colonne qui ne les supportent pas.
4.2.2
Analysons-le en dtail.
UPDATE [Entreprise].[dbo].[Client]
UPDATE est la commande de mise jour de donnes de table. Il est ncessaire de spcifier la table
les donnes. Vous pouvez de ce fait, ne choisir de mettre jour que les colonnes que vous voulez.
22
La commande WHERE indiquera les conditions dans lesquelles la mise jour seffectuera. On peut par
exemple, choisir de modifier seulement les clients dont lId est gal 6. Linstruction GO indique
SQL Server que le lot est termin.
4.3 Retrait
4.3.1
Avec SSMS
Tout comme pour lajout et la modification de donnes, on peut supprimer des
enregistrements grce linterface graphique. La mthode est toujours la mme, pour supprimer
des donnes dans une table de votre base de donnes, il vous suffira douvrir lExplorateur dobjet
dans SSMS, de dployer votre base de donnes afin de rendre visible la table dans laquelle vous
voulez modifier des donnes, et enfin deffectuer un click droit sur cette mme table et de
slectionner Modifier les 200 premires lignes du haut . Une nouvelle fentre apparait encore une
fois, et vous pouvez choisir, grce un click droit, de supprimer une ligne de votre table.
4.3.2
Analysons ce code :
DELETE FROM [Entreprise].[dbo].[Client]
Linstruction DELETE FROM indique que nous allons supprimer une ligne ou plusieurs lignes dans la
table indique la suite de cette instruction.
WHERE <Conditions de recherche,,>
GO
La condition WHERE indiquera alors simplement dans quels cas on supprimera les lignes de notre
table. On pourra par exemple supprimer tous les clients donc lId sera suprieur 250. Linstruction
GO indique que laction est termine.
Dans le cas o lon voudrait supprimer toutes les donnes dune table, il existe une commande bien
plus rapide que DELETE FROM. Cette commande est la commande TRUNCATE TABLE.
TRUNCATE TABLE Schema.Nom_table
Avec la commande TRUNCATE TABLE, on indique SQL Server quon va supprimer toutes les
donnes contenues dans une table. On doit positionner en argument le schma et le nom de la table.
Aprs avoir excut ce code, votre table ne contiendra aucune donne. Lavantage de TRUNCATE
23
TABLE est que son excution est bien plus rapide que de supprimer les donnes avec simple DELETE
FROM.
24
5 Conclusion
Dans ce chapitre, nous avons vu essentiellement comment utiliser au mieux les tables, comment
les crer, les supprimer ou bien les mettre jour. Nous avons aussi appris mettre en place des
contraintes sur des sous ensemble de ces tables, nomms des colonnes, afin de garder lintgrit des
donnes contenues dans nos tables et par extension, dans notre base de donnes. Les morceaux de
code que nous avons pu excuter ici font parti dun langage nomm le T-SQL (Transact SQL), que
nous allons dvelopper dans le chapitre suivant.