SQL - Server 7.0
Transcription
SQL - Server 7.0
SQL - Server 7.0 Le Langage SQL Transact-Sql Michel Tuffery Notion de Base SQL 7 Logique Physique Nom Base Nom logique Fichier ‘ primaire ’ .mdf Nom logique Fichier ‘ secondaire ’ .mdf Nom logique Fichier ‘ journal ’ .ldf Michel Tuffery (SQL7) 2 Création d ’une Base de Données USE master GO à partir de la base ‘ master ’ et héritage de la base ‘ model ’ CREATE DATABASE bd1 ON ( NAME = bd1_dat, FILENAME = 'c:\mssql7\data\bd1.mdf', SIZE = 4, MAXSIZE = 10, FILEGROWTH = 1 ) GO nom logique du fichier augmentation à chaque espace supplémentaire Fichier journal ‘ bd1_log ’/ ’bd1.ldf ’ de 1MO par défaut (model) Michel Tuffery (SQL7) 3 Création d ’une Base de Données CREATE DATABASE bd2 ON ( NAME = bd2_dat, FILENAME = 'c:\mssql7\data\bd2dat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = ’bd2_log', FILENAME = 'c:\mssql7\data\bd2log.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO Michel Tuffery (SQL7) fichier journal explicite 4 Création d ’une Base de Données CREATE DATABASE bd3 ON PRIMARY ( NAME = bd3dat1, FILENAME = 'c:\mssql7\data\bd3dat1.mdf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = bd3dat2, FILENAME = 'c:\mssql7\data\bd3dat2.ndf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = bd3dat3, FILENAME = 'c:\mssql7\data\bd3dat3.ndf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20) LOG ON ( NAME = bd3log1, FILENAME = 'c:\mssql7\data\bd3log1.ldf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = bd3log2, FILENAME = 'c:\mssql7\data\bd3log2.ldf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20) GO Michel Tuffery (SQL7) 5 Modification d ’une BD ALTER DATABASE bd1 ADD FILE (NAME = bd1dat2, FILENAME = 'c:\mssql7\data\bd1dat2.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 10% ) GO ALTER DATABASE bd1 MODIFY FILE (NAME = bd1dat2, SIZE = 20MB) GO ALTER DATABASE bd1 ADD LOG FILE ( NAME = bd1log2, FILENAME = 'c:\mssql7\data\bd1log2.ldf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB), ( NAME = bd1log3, FILENAME = 'c:\mssql7\data\bd1log3.ldf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) GO Michel Tuffery (SQL7) 6 Suppression d ’une base • • • • sp_helpdb pour connaître les bases drop database nom-base Faire une sauvegarde de ‘ master ’ après Le propriétaire est compétent avec le ‘ sysadmin ’ • sp_spaceused : informations physiques Michel Tuffery (SQL7) 7 Les types de données Integer bit Nombre entier dont la valeur est 1 ou 0. int Nombre entier dont la valeur est comprise entre -231 (-2 147 483 648) et 231 - 1 (2 147 483 647). smallint Nombre entier dont la valeur est comprise entre -215 (-32 768) et 215 - 1 (32 767). tinyint Nombre entier dont la valeur est comprise entre 0 et 255. decimal et numeric decimal Données numériques fixes de précision et d'échelle comprises entre -1038 -1 et 1038 -1. numeric Synonyme de decimal. Michel Tuffery (SQL7) 8 Les types de données money et smallmoney money Valeurs de données monétaires comprises entre -263 (-922 337 203 685 477,580 8) et 263 - 1 (+922 337 203 685 477,580 7), avec une précision d'un dix-millième d'unité monétaire. smallmoney Valeurs de données monétaires comprises entre - 214 748,3648 et +214 748,3647, avec une précision d'un dix-millième d'unité monétaire. Données numériques approchées float Données numériques de précision en virgule flottante comprises entre -1.79E + 308 et 1.79E + 308. real Données numériques de précision en virgule flottante comprises entre -3.40E + 38 et 3.40E + 38. Michel Tuffery (SQL7) 9 Les types de données datetime et smalldatetime datetime Données de date et d'heure comprises entre le 1er janvier 1753 et le 31 décembre 9999, avec une précision de trois centièmes de seconde ou de 3,33 millisecondes. smalldatetime Données de date et d'heure comprise entre le 1er janvier 1900 et le 6 juin 2079, avec une précision d'une minute. Données numériques cursor Référence à un curseur. timestamp Nombre unique pour l'ensemble de la base de données. uniqueidentifier Identificateur global unique (GUID). Michel Tuffery (SQL7) 10 Les types de données Chaînes de caractères char Données non Unicode de longueur fixe d'un maximum de 8 000 caractères. varchar Données non Unicode de longueur variable d'un maximum de 8 000 caractères. text Données non Unicode de longueur variable ne pouvant pas dépasser 231 - 1 (2 147 483 647) caractères. Chaînes de caractères Unicode nchar Données Unicode de longueur fixe ne pouvant pas dépasser 4 000 caractères. nvarchar Données Unicode de longueur variable ne pouvant pas dépasser 4 000 caractères. sysname, synonyme de nvarchar(128), est un type de données défini par l'utilisateur fourni par le système et utilisé pour faire référence aux objets de base de données. ntext Données Unicode de longueur variable ne pouvant pas dépasser 230 - 1 (1 073 741 823) caractères. Michel Tuffery (SQL7) 11 Les types de données Chaînes binaires binary Données binaires de longueur fixe ne pouvant pas dépasser 8 000 octets. varbinary Données binaires de longueur variable ne pouvant pas dépasser 8 000 octets. image Données binaires de longueur variable ne pouvant pas dépasser 231 - 1 (2 147 483 647) octets. Michel Tuffery (SQL7) 12 Création d ’une table if exists (select table_name from information_schema.tables where table_name='employe') drop table employe GO if exists (select table_name from information_schema.tables where table_name= ’service') drop table service GO create table service (nservice tinyint, nom_service varchar(20), constraint pk_service primary key(nservice) ) GO Michel Tuffery (SQL7) 13 Création d ’une table create table employe (nume int identity(1,1), nome varchar(20), date_emb datetime default getdate(), salaire decimal(8,2), commission as (salaire*10)/100, nservice tinyint constraint nn_nser not null, constraint ck_salaire check (salaire > 5000), constraint fk_emp_ser foreign key(nservice) references service(nservice) ) GO Michel Tuffery (SQL7) 14 Modification de la structure d ’une table alter table employe add adresse varchar(50) GO Pas de modification alter table employe nocheck constraint fk_emp_ser GO attention alter table employe drop column adresse GO alter table employe check constraint fk_emp_ser GO alter table employe add constraint fk_emp_ser foreign key(nservice) references service(nservice) GO alter table employe drop constraint fk_emp_ser GO Michel Tuffery (SQL7) 15 Types Utilisateurs sp_addtype v50,'varchar(50)','NULL' select * from systypes create table …... (……. adresse v50, ……… ) sp_droptype v50 Michel Tuffery (SQL7) 16 Renseignements sur les Objets sp_help nom_objet Consultation du dictionnaire des données et affichage des renseignements complets Michel Tuffery (SQL7) 17 Langage de Manipulation des Données INSERT [INTO] {nom_table|nom_vue} [(liste cols)] VALUES {liste_valeurs|SELECT expression} DELETE [FROM] {nom_table|nom_vue} [WHERE clause] UPDATE {nom_table|nom_vue} SET col= {valeur|expression|SELECT expression|liste_cols [FROM {nom_table|nom_vue} [WHERE expression]] Michel Tuffery (SQL7) 18 Langage d ’Interrogation des Données Monotable SELECT {liste_cols|*|expression} FROM nom_table [WHERE expression1] [GROUP BY col1,…] [HAVING expression2] [ORDER BY col1 [ASC|DESC],…] Opérateurs : NOT, BETWEEN, LIKE,+,… Fonctions de groupage : AVG, COUNT, MAX, MIN, SUM Michel Tuffery (SQL7) 19 Langage d ’Interrogation des Données Multitable Opérateur ensembliste : UNION SELECT liste_cols FROM nom_table [WHERE expression] UNION SELECT liste-cols FROM nom_table [WHERE expression] Opérateurs ensemblistes : MINUS et INTERSECT N ’existent pas avec SQL7 : utiliser [NOT] EXISTS Michel Tuffery (SQL7) 20 Langage d ’Interrogation des Données Multitable Jointure en Forme Procédurale Déconnectée select nome,salaire from employe where nservice in (select nservice from service where upper(nom_service) like upper('%info%')) Opérateurs : in, not in, =, >, <, >=, <= , != Michel Tuffery (SQL7) 21 Langage d ’Interrogation des Données Multitable Jointure en Forme Procédurale Synchronisée select nome,salaire from employe e where exists (select * from service s where upper(nom_service) like upper('%info%') and e.nservice=s.nservice) Michel Tuffery (SQL7) 22 Langage d ’Interrogation des Données Multitable Jointure en Forme Procédurale Relationnelle select e.nome,e.salaire from employe e, service s where upper(nom_service) like upper('%info%') and e.nservice=s.nservice Michel Tuffery (SQL7) 23 Langage de Contrôle des Données : les Vues USE bdm IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'emp_info') DROP VIEW emp_info GO CREATE VIEW emp_info (ne,nom,sal,nser) AS SELECT nume, nome, salaire, nservice FROM employe WHERE nservice IN (SELECT nservice FROM service WHERE nom_service LIKE '%info%') AND salaire > 10000 WITH CHECK OPTION GO Michel Tuffery (SQL7) 24 Langage de Contrôle des Données : les Triggers SI Evènement ALORS Action FIN SI Update, Delete et Insert Transact SQL 2 tables logiques ‘ inserted ’ et ‘ deleted ’ de même structure que la table sur laquelle est posée le trigger permettent de retrouver les valeurs Michel Tuffery (SQL7) 25 Langage de Contrôle des Données : les Triggers IF EXISTS (SELECT name FROM sysobjects WHERE name='trigger33' AND type='TR') DROP TRIGGER trigger33 GO CREATE TRIGGER trigger33 Trigger de ON m.travailler FOR INSERT AS DECLARE @nb_jj int, @n_cher varchar (11) BEGIN SELECT @nb_jj = i.nb_jour_sem, @n_cher = i.n_chercheur FROM inserted i,travailler t where i.n_chercheur=t.n_chercheur and i.n_projet=t.n_projet UPDATE chercheur SET nb_jours=nb_jours+ @nb_jj ,nb_projets=nb_projets+1 WHERE n_chercheur= @n_cher END GO Michel Tuffery (SQL7) MAJ 26 Langage de Contrôle des Données : les Triggers CREATE TRIGGER trigger22 ON m.travailler FOR INSERT Trigger de contrainte AS DECLARE @nb_jj int, @n_cher varchar (11), @nb_tot int BEGIN SELECT @nb_jj = i.nb_jour_sem FROM inserted i,travailler t where i.n_chercheur=t.n_chercheur and i.n_projet=t.n_projet IF @nb_jj > 3 BEGIN RAISERROR ('Un chercheur ne peut travailler plus de 3 jours par semaine dans un projet',16,1) ROLLBACK TRANSACTION END Michel Tuffery (SQL7) 27 Langage de Contrôle des Données : les Triggers SELECT @n_cher = i.n_chercheur FROM inserted i,travailler t where i.n_chercheur=t.n_chercheur and i.n_projet=t.n_projet SELECT @nb_tot = SUM(nb_jour_sem) FROM travailler WHERE n_chercheur = @n_cher IF (@nb_tot + @nb_jj)>5 BEGIN RAISERROR ('Un chercheur ne peut travailler plus de 5 jours par semaine en tout',16,1) ROLLBACK TRANSACTION END END GO Michel Tuffery (SQL7) 28 Les Procédures Stockées Création de la Procédure IF EXISTS (SELECT name FROM sysobjects WHERE name='p1' AND type ='P') DROP PROCEDURE p1 GO CREATE PROCEDURE p1 @typeobjet VARCHAR(10) AS SELECT name,type FROM sysobjects WHERE type=@typeobjet GO Appel de la Procédure p1 TR Michel Tuffery (SQL7) 29 Les Procédures Stockées IF EXISTS (SELECT name FROM sysobjects WHERE name='ajout_projet' AND type ='P') DROP PROCEDURE ajout_projet GO create proc ajout_projet @n_projet_p varchar(8), @nom_projet_p varchar(20), @n_equipe_p varchar(8), @n_cher_resp_p varchar(11), @specialite_p varchar(10) as begin declare @n_chercheur_l varchar(11) declare @erreur int declare c1 cursor for select n_chercheur from chercheur where specialite=@specialite_p and n_equipe=@n_equipe_p BEGIN TRANSACTION Michel Tuffery (SQL7) 30 Les Procédures Stockées insert into projet values(@n_projet_p,@nom_projet_p,@n_equipe_p,@n_cher_resp_p) set @erreur=@@error if @erreur<>0 begin /*print 'Erreur numéro : '+STR(@erreur)*/ raiserror('Erreur numéro : %d',16,1,@erreur) deallocate c1 ROLLBACK TRANSACTION return (@erreur) end open c1 fetch c1 into @n_chercheur_l while @@fetch_status >= 0 begin insert into travailler values(@n_projet_p,@n_chercheur_l,null) fetch c1 into @n_chercheur_l end close c1 deallocate c1 COMMIT TRANSACTION end GO Michel Tuffery (SQL7) 31 Procédures stockées intéressantes • • • • • • • • • • • • sp_spaceused sp_spaceused table sp_lock sp_statistics table sp_tables sp_tempdbspace sp_columns table sp_databases sp_datatype_info sp_enumdsn sp_help_revdatabase sp_help_revdatabase bd taille occupée par la bd taille occupée par la table liste des verrous posés informations physiques sur les index tables accessibles par l ’utilisateur taille réservée et occupée de tempdb structure de la table tailles des bd tous les types disponibles liste des Data Source Name ODBC scripts de création des bases script de création de la base bd Michel Tuffery (SQL7) 32 Procédures stockées intéressantes • • • • • • • • • • • • • sp_helpcontraint table sp_helpdb sp_helpdevice sp_helpdistribution sp_helpextendedproc sp_helpgroup sp_helpindex table sp_helpjoins t1,t2 sp_helplog sp_helplogins sp_helpremotelogin sp_helpsql sp_helpuser contraintes de la table informations sur les bases informations et correspondances unités / fichiers informations sur la distribution correspondance procédure externe / dll informations sur les groupes informations sur les index de la table colonnes de jointures entre t1 et t2 ou est le journal informations sur les accès informations sur les accès distants ( approuvée) aides sur certaines rubriques informations sur le user Michel Tuffery (SQL7) 33
Documents pareils
SQL - Server
Les Procédures Stockées IF EXISTS (SELECT name FROM sysobjects WHERE name='ajout_projet' AND type ='P') DROP PROCEDURE ajout_projet GO create proc ajout_projet @n_projet_p varchar(8), @nom_projet_...
Plus en détailProcedure de truncate des logs
begin declare @db varchar(100), @sql varchar(1000), @dbid int, @hidb int, @LogPourcent real, @dbname varchar(100), @Message varchar(100) create table #DBLIST ( [fileId] [smallint] NULL, [name] sysn...
Plus en détail