Transac SQL Régles Règles Régles Régles Sp_helpdb Insertion de
Transcription
Transac SQL Régles Règles Régles Régles Sp_helpdb Insertion de
Régles Intégrité des données – – – – 1 Régles • Create rule state-rule as @state in (‘ca’,’co’,’wa’) • Create rule numeroDisque-rang as @disque between 0 and 60 Liste ou ensemble de valeur Série de valeurs Image d’édition Condition à remplir pour des valeurs uniques. CPI-SQLServer : transac sql • Une régle est liée à une marque de réservation commençant par @. • Application : sp_bindrule ‘numeroDisque-rang’ , ‘discounts.discount’ 2 CPI-SQLServer : transac sql 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. CPI-SQLServer : transac sql • Créate rule nom-regle as expression. • 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: Transac SQL CPI-SQLServer : transac sql Règles 4 Sp_helpdb • Create rule PrixHaut as @price < 10 • Exec sp_bindrule PrixHaut, ‘titles.price’ • Create rule PrixBas as @price > 5 • Exec sp_bindrule PrixBas ,’titles.price’ CPI-SQLServer : transac sql 3 • • • • • • 5 Avoir les infos sur une base Sp_helpdb [nomBase] Use nomBase Select db_name() Sp_help Sp_helptext CPI-SQLServer : transac sql 6 Insertion de données Update Delete • 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 • Exercice : insert publishers values ("9934" , "germinal" , "Dunkerque", "NO", "FR") • 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. • EXERCICE : update discounts set discounttype = " remise maxi de philippe" where stor_id = 1000 • update titles set price = price * 0.9 where pubdate < "JAN 1, 1993" • DELETE : permet de supprimer les lignes d' une table avec ou non une restriction (where), attention la destruction est irréversible • delete publishers where state = « ZZ" • Pour supprimer toutes les lignes rapidement, truncate table nomTable CPI-SQLServer : transac sql CPI-SQLServer : transac sql CPI-SQLServer : transac sql 7 8 9 1 Exercices Insertion d’un enregistrement dans la table discount insert discounts values ("ma remise",1000, 5, 9, 6.4) 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=1000 insert stores (stor_id , stor_name) values (1000, "philippe") On précise que certains champs à insérer. Rejouer la commande Insert erreur insert discounts values ("ma remise",1000,5,9,6.4) CPI-SQLServer : transac 10 sql Exercices Conversion Suppression : Delete from nom_table where condition EXERCICE insert discounts values ("ma remise",6380,5,9,6.4) insert discounts values ("ma remise",6380,5,9,6.4) insert discounts values ("ma remise",6380,5,9,6.4) select * from discounts delete from discounts where stor_id = 6380 select * from discounts CPI-SQLServer : transac sql • 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. 11 CPI-SQLServer : transac sql 12 2