EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Transac SQL Intégrité des données
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 2 Régles Objet qui définit une restriction sur une colonne Assure l’intégrité d’une domaine S ’applique à une colonne ou type de données Permet de définir: Liste ou ensemble de valeur Série de valeurs Image d’édition Condition à remplir pour des valeurs uniques.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 3 Règles Créate rule nom-regle as expression. Create rule regle-etat in (‘CA’,’NY’) Une régle est liée à une marque de réservation commençant Application de la regle à une colonne: sp_bindrule Exec sp_bindrule regle_etat, ‘auteurs.state’ Insert auteurs values(‘123’,’GG’,’GG’,’123’,azer’,’paris’,’NY’,’122’,’0’) Insert auteurs values(‘123’,’phi’,’phi’,’123’,azer’,’paris’,’WA’,’122’,’0’)
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 4 Régles Ainsi on applique cette contrainte à la colonne. Sp_unbindrule ‘authors.state’ annulation. Drop rule state-rule destruction de l’objet. Application d’un règle sur un type, alors toutes les colonnes de ce type sont concernés. A l’insert vérifie les valeurs par défaut puis les règles. Update applique les règles.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 5 Régles Create rule PrixHaut < 10 Exec sp_bindrule PrixHaut, ‘titles.price’ Create rule PrixBas > 5 Exec sp_bindrule PrixBas,’titles.price’
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 6 Sp_helpdb Avoir les infos sur une base Sp_helpdb [nomBase] Use nomBase Select db_name() Sp_help Sp_helptext
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 7 Insertion de données INSERT : ajoute une ou plusieurs lignes à une table existante. Liste de colonne pour la table est facultative, pour ajouter des valeurs null, ne pas indiquer la colonne dans la liste : Insert [into] nom_table [(liste_colonne)] { values (expression, [expression] …) | instruction select
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 8 Exercices Insertion d’un enregistrement dans la table discount et remise Select * into remise from discount insert remise values (‘ma remise’,’1111’, 5, 9, 4) OK (non liée) insert discounts values (‘ma remise’,’1111’, 5, 9, 4) PB Cela ne fonctionne pas, en effet l’identifiant magasin 1000 n’existe pas dans la table Stores. Nous voyons ici l’interêt des clés étrangères, il n’est pas possible de faire une erreur, cad affecter des commandes à un magasin qui n’existe pas. Création du magasin Philippe id=1111 insert stores (stor_id, stor_name) values (1111, ‘philippe’) On précise que certains champs à insérer. Rejouer la commande Insert dans discount OK
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 9 Update UPDATE : modifie tout ou une partie d'une ligne existante : Update table set col = ‘ val’ update nom_table Set nom_colonne = « valeur » where condition pour restreinte les actions.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 10 Delete DELETE : permet de supprimer les lignes d'une table avec ou non une restriction (where), attention la destruction est irréversible Pour supprimer toutes les lignes rapidement, truncate table nomTable
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 11 exercice EXERCICE : update remise set discounttype = ‘ remise maxi de philippe’ where stor_id = 1000 Faire un select de remise, verification Delete remise where stor_id=1000 Faire un select de remise, verification
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 12 Conversion Les opérations sur les chaines comprennent l’opérateur de concaténation de chaine et des fonctions. Pour concaténer signe + ‘london’+’,’+’est’+ ‘england’ La longueur maxi 255 caractères. Voir liste fonction.