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

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étail

Procedure de truncate des logs

Procedure 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

Le Langage SQL Introduction

Le Langage SQL Introduction Les ordres SQL de manipulation

Plus en détail