SQL Server Le langage de description des données
Transcription
SQL Server Le langage de description des données
SQL Server Le langage de description des données 1. Instruction pour la gestion d'une base de données Création Suppression Connexion create database nomBase drop database nomBase use nomBase 2. Création d'une table create table commande( id int identity, dateCommande datetime not null, idClient int not null, constraint pk_commande primary key(id), constraint fk_commande_client foreign key (idClient ) references client (id)); create table detailCommande ( idCommande int not null, idProduit int not null, quantite int not null default 1, constraint pk_detail primary key (idCommande, idProduit), constraint c_detail_quantite check (quantite between 1 and 10), constraint fk_detail_commande foreign key (idCommande) references commande(id) on delete cascade, constraint fk_detail_produit foreign key (idproduit) references produit (id) on update cascade ); null default primary key unique foreign key references check type identity Version 1.1 Autorise ou refuse la valeur null dans la colonne Fixe la valeur prise par défaut par la colonne. Définition de la clé primaire. Définition d'un index assurant l'unicité des valeurs. On peut définir plusieurs contraintes UNIQUE et le champ peut accepter la valeur null Contrôle la cohérence des valeurs de la clé étrangère par rapport aux valeurs de la clé primaire correspondante dans la table de référence. La table référencée doit contenir une contrainte primary key ou unique sur les colonnes correspondantes. L'option on Delete précise l'opération qui va être automatiquement réalisée lors de la suppression d'une ou plusieurs occurrences dans la table de référence L'option on update précise l'opération qui va être automatiquement réalisée lors de la modification d'une ou plusieurs occurrences dans la table de référence Assure l'intégrité de domaine en limitant les valeurs acceptées par une colonne. int, decimal(6,2), dateTime, date, char(15) varchar(30), … voir la liste compléte dans le document SQL Server – les types de données Définit un champ auto-incrémenté (numérotation séquentielle automatique) Date Auteur 19/07/2015 Guy Verghote 1/4 SQL Server Le langage de description des données La dernière ligne d'une commande create table peut contenir une virgule. on peut définir au niveau de la colonne les contraintes primary key, reference, check si elle ne porte que sur la colonne. create table commande( id int identity primary key , dateCommande datetime not null default getdate(), idClient int not null references client (id)) Cette notation n'est pas conseillée car les contraintes seront nommées par le système qui leur attribue un nom aléatoire. Remarques La contrainte default peut être nommée : dateCommande datetime not null constraint d_commande_dateCommande default getdate(), La contrainte default peut utiliser une fonction comme valeur par défaut On peut désactiver les contraintes d'intégrité ce qui permet de restaurer la base sans respecter l'ordre logique de création des enregistrements. exec sp_msforeachtable 'alter table ? nocheck constraint all' exec sp_msforeachtable 'alter table ? check constraint all' Si on précise la clause default lors de la modification d'une colonne, la clause n'est pas prise en compte. Si une colonne dispose d'une contrainte not null sans valeur par défaut, l'ajout d'un enregistrement sans valeur pour la colonne sera refusé, Version 1.1 Date Auteur 19/07/2015 Guy Verghote 2/4 SQL Server Le langage de description des données 3. Modification d'une table Ajouter une contrainte alter table nomTable [with noCheck] add [constraint nomContrainte] expression de la contrainte Ajouter un index create [unique] index on nomTable (nomColonne, …) Supprimer un index drop index nomTable.nomIndex; Supprimer une contrainte (primary, référence, check default) alter table nomTable drop nomContrainte, …; Réinitialiser le compteur dbcc CHECKIDENT('nomTable', RESEED, 0) Modifier une colonne alter table nomTable alter column nomColonne type [contrainte] Supprimer la contrainte not null alter table nomTable alter column nomColonne type null Ajouter la contrainte default alter table nomTable [with noCheck] add [constraint nomContrainte] default valeur for nomColonne Insérer une nouvelle colonne à la alter table nomTable add nomColonne type [not] null fin Supprimer une colonne alter table nomTable drop column nomColonne [, …] Une colonne ajoutée est toujours placée à la fin de la table. Si on veut la déplacer il faut utiliser l'explorateur d'objet de SQL Server Management Studio. Remarques Si on ne donne pas de nom à une contrainte, le système lui donne un nom qui commence par le type de la contrainte, la table et se termine par un identifiant aléatoire Version 1.1 Date Auteur 19/07/2015 Guy Verghote 3/4 SQL Server Le langage de description des données 4. Autres commandes Lister les bases de données sp_helpdb Lister les tables et les vues de la sp_help base Information sur une table sp_help nomtable Lister les contraintes sur une table sp_helpconstraint nomtable Tester l'existence d'une base de if db_id('nomBase') is not null données Tester l'existence d'une table if object_id('nomTable','U') is not null Tester l'existence d'une vue if object_id('nomVue','V') is not null Tester l'existence d'une procédure if object_id('nomProcedure','P') is not null Tester l'existence d'une fonction if object_id('nomFonction','FN') is not null Utiliser le format standard aaaa-mm- set dateformat ymd jj Création d'une table à partir des Select liste des colonnes into nomtable données d'une autre table from table1 …… Définir un champ auto-incrémenté Ajouter le mot clé identity derrière le type du champ Récupérer sa dernière valeur SELECT scope_identity() ou Select @@identity Permettre de renseigner un champ set identity_insert table on auto-incrémenté insert into table (id, lib) values (1,'exemple') set identity_insert table off Autre code pour l'existence d'un objet C = Contrainte CHECK D = DEFAULT (contrainte ou autonome) F = Contrainte FOREIGN KEY Remarques PK = Contrainte PRIMARY KEY TR = Déclencheur SQL UQ = Contrainte UNIQUE TR = Déclencheur DML SQL UQ = Contrainte UNIQUE Version 1.1 Date Auteur 19/07/2015 Guy Verghote 4/4