You are on page 1of 26

SQL SERVER BY REDA BT 29 octobre 2017

LES COMMANDES DE SQL SERVER

Crations des bases de donnes


create database [Nom de Base De Donne]
OR
create database Gestion_Festival
on primary(
name=Gestion_Festival,
namefile='C:\Program Files\Microsoft SQL
Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Gest
ion_Festivaldat.mdf',
size=300MB,
MaxSize=500MB,
filegrowth=5%)
log on(
name=Gestion_Festival,
namefile='C:\Program Files\Microsoft SQL
Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Gest
ion_Festivallog.ldf',
size=300MB,
MaxSize=500MB,
filegrowth=5%)

Suppression des bases de donnes


drop database [Nom de Base De Donne]

REDA BT 1
SQL SERVER BY REDA BT 29 octobre 2017

Utilisation des bases de donnes


use [Nom de Base De Donne]

Renommer une base de donne


sp_renamedb 'Nom de Base De
Donne','Base De Donne'

Dtacher une base de donne (pas


en cours executer)
sp_detach_db 'Base De Donne'

Attacher une base de donne (pas en


cours executer)
sp_attach_db @dbname = 'Base De
Donne',
@filename1 = 'C:\Program
Files\Microsoft SQL
Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\B
ase_De_Donne dat.mdf',
@filename2 = 'C:\Program
Files\Microsoft SQL
Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\B
ase_De_Donne log.ldf'

REDA BT 2
SQL SERVER BY REDA BT 29 octobre 2017

Cration dune table


create table [Nom De Table ](
Num char(3) ,
Nom varchar(20),
Age int,
datenaissance date,
Note float,
photo image)

Pourquoi jutilise char, varchar, int,


date, float, image
char pour 1 ou plusieur caractre
varchar pour une chaine de caractre
int pour les nombre entier
date pour la date
et on utilise aussi datetime pour la date avec le
lheure,minute,seconde
float pour les combres rel
image pour enregistrer les images
Ajouter un champ dans la table
alter table [Nom De Table ]
add telephone varchar(10)
Type des champs (obligatoire)
int, char, real, float, time,
datetime, numeric, money,
varchar, text, longtext,
longbinary, bit, image
REDA BT 3
SQL SERVER BY REDA BT 29 octobre 2017

Proprits des champs (Facultatifs) :


not null , null, unique, primary
key, check(condition),
default,foreign key

Cl Primaire / Cl Secondaire
1. Crer une table avec un seul
Cl primaire
create table Etudiant(
Num int identity(1,1),
Nom varchar(20),
primary key(Num))

2. Crer une table avec 2 Cls


primaire
create table Stagiaire(
Num int,
CIN char(7),
Nom varchar(20),
age int,
constraint cle primary key(Num,CIN))

REDA BT 4
SQL SERVER BY REDA BT 29 octobre 2017

3.Crer une table avec un cl


etrangre
create table Class(
num int,
nom varchar(20),
numS int foreign key references
Stagiaire(Num))

or
create table Class(
num int,
nom varchar(20),
numS int ,
constraint CE1 foreign key(numS)
references Stagiaire(numS))
4. Crer une contrainte
alter table Stagiaire
add constraint [Nom Constraint] check(Nom
like '[A-Z][A-Z][A-Z][A-Z]')

5.Supprimer une contrainte


alter table Stagiaire
drop [Nom Constraint]

6. Crer un cl primaire avec une contrainte

alter table Stagiaire


REDA BT 5
SQL SERVER BY REDA BT 29 octobre 2017

add constraint [Nom Constraint]


primary key (Num)

1-Modifier la structure de la table


1) Ajouter un champ
alter table Stagiaire
add Adresse varchar(50)
2) Supprimer un champ
alter table Stagiaire
drop Adresse

3) Modifier un champ

alter table Stagiaire


alter column Adresse char(50)

4) Activer une contrainte

alter table Stagiaire check


constraint [Nom Constraint]

5) Dsactiver une contrainte

alter table Stagiaire nocheck


constraint [Nom Constraint]

REDA BT 6
SQL SERVER BY REDA BT 29 octobre 2017

Cration des vues


A. Crer une vue
create view [Nom de
Vue](Num,CIN,Nom,Age,Adresse)
as
select * from stagiaire
where (age>18)
B. Suppression dune vue
drop view [Nom de Vue]
Cration des index

i. Crer un index sur 2 champ

create index index1


on stagiaire (Num,CIN)

ii. Crer un index en forant unicit sur un champ :

create unique clustered index index2


on stagiaire (CIN)

iii. Supprimer un index

drop index index2

Renommer des Objets


a. Renommer un objet (vue,table,trigger,contrainte..)

REDA BT 7
SQL SERVER BY REDA BT 29 octobre 2017

sp_rename 'Stagiaire','Stagiaire
Etudant'

b. Renommer un colonne dune table


sp_rename 'Etudiant.Nom','Nom_E'

c. Renommer un index

sp_rename 'index1','Index01','Index'

d. Renommer un type utilisateur

sp_rename'telephone','phone','userdatatype'

REDA BT 8
SQL SERVER BY REDA BT 29 octobre 2017

Enregistrement dans les tables

Un. Insrer des enregistrements

insert into Etudiant values (1,'REDA')


Or

insert into Etudiant(Num,Nom_E) values


(2,'Khaouula')

insert into Etudiant values (3,Youssra)


insert into Etudiant(Num,Nom_E) values
(4,Jihan)
insert into Etudiant values (5,Chaimae)

Deux. Insrer des enregistrements a partir dune


autre table

insert into [Stagiaire Etudant](Num,Nom)


select Num,Nom_E from Etudiant
where Nom_E like 'R%'

Trois. Mise jour des


enregistrements :
update Etudiant
set Num=6,Nom_E='REDA'
where Num = 5

REDA BT 9
SQL SERVER BY REDA BT 29 octobre 2017

and

update [Nom De Table ]


set Note=20 where Num=5

and

update [Nom De Table ]


set Note=Note+(Note*0.25)
where (Note<10)

Quatre. Supprimer Des Enregistrements

delete from [Nom De Table ]


where Nom='Amine'

REDA BT 10
SQL SERVER BY REDA BT 29 octobre 2017

Les Requtes (SELECT) :

La forme gnrale de Select

Select
From
Where
Group by
Having
Order by

select * from [Nom De Table ]

//////////////////////
select * from [Nom De Table ]

where Age>18

//////////////////////

select * from [Nom De Table ]

where Age>18

group by Nom

//////////////////////

select * from [Nom De Table ]

where Age>18
order by datenaissance asc

REDA BT 11
SQL SERVER BY REDA BT 29 octobre 2017

Les fonctions dagrgation


(densemble) :
1er. SUM() Somme

select SUM(Age) as'La somme des ages des


stagiaires ' from [Nom De Table ]

2e. AVG() Moyenne

select avg(Age) as'Moyenne des ages des


stagiaires ' from [Nom De Table ]

3e. Max() Maximum

select max(Age) as'Max age des stagiaires


' from [Nom De Table ]

4e. Min() Minimum

select min(Age) as'Max age des


stagiaires ' from [Nom De Table ]

5e. Count() Nombre

REDA BT 12
SQL SERVER BY REDA BT 29 octobre 2017

select count(*) as'Le nombre des


enregistrements' from [Nom De Table ]

6e. La clause like

select * from [Nom De Table ]


where (Nom like 'REDA')

7e. La clause Between

select * from [Nom De Table ]


where (Note between 10 and 20)

OR

select * from [Nom De Table ]


where (Note not between 10 and 20)

8e. La clause in / not in

select * from [Nom De Table ]


where (Note in ('10','20'))

or

select * from [Nom De Table ]


REDA BT 13
SQL SERVER BY REDA BT 29 octobre 2017

where (Note not in ('10','20'))

9e. La clause distinct


select distinct datenaissance from [Nom De Table ]
where (Note in ('10','20'))

10e. Jointure
Premier. La Mthode Ensembliste :

select * from [Stagiaire Etudant]


where Num in (select Num from [Nom De
Table ] where Nom like 'REDA')
Deuxime. La mthode ancienne :

select * from [Stagiaire Etudant],[Nom De


Table ]
where ([Stagiaire Etudant].Num=[Nom De
Table ].Num) and ([Nom De Table ].Nom
='REDA')
Troisime. La mthode actuelle
select [Stagiaire Etudant].* from
[Stagiaire Etudant]
inner join [Nom De Table ] on [Nom De
Table ].Num=[Stagiaire Etudant].Num
where [Nom De Table ].Nom like 'REDA'

Quatrime. Auto jointure


Afficher les noms des stagiaires ayant la mme note

REDA BT 14
SQL SERVER BY REDA BT 29 octobre 2017

select * from [Nom De Table ]


inner join [Nom De Table ] as Stagiaire on
[Nom De Table ].Note=Stagiaire.Note
where [Nom De Table ].Num<>Stagiaire.Num

REDA BT 15
SQL SERVER BY REDA BT 29 octobre 2017

Les Fonctions de SQL SERVER


01. Fonctions Date & Heure :

Ajouter un nombre une partie de la date :


dateadd(day,5,datenaissance)

Soustrait la date de fin de celle de dpart :


DATEDIFF(year,datenaissance,getdate())
Retourner une chaine de caractere dune partie de
la date :
datename(DAY/month,year,datenaissance)
Retourner une partie dune date
datepart(DAY/month,year,datenaissance)
02. Fonctions Chaines

Concatner 2 chaines de caractre

concat('REDA','Bouta')

Extraire une partie du chaine :

SUBSTRING(Nom,1,3)

REDA BT 16
SQL SERVER BY REDA BT 29 octobre 2017

Remplacer une valeur dans une chaine par une


autre valeur :
replace(Nom,'bouta','bouta reda')

Convertir une chane en majuscule


upper(Nom)

Convertir une chaine en minuscule


upper(Nom)
Retourner la longueur de la chaine de caractres :
LEN(Nom)/ Length(Nom)
Retourner la valeur ASCII dun jeu de caractres
indiqu :
ASCII(Nom)
03. Fonction Mathmatique

Retourner la valeur absolue dune expression :


ABS(-956)
Retourner la puissance de lexpression (Xx)
POWER(2,3)
Retourner la racine carre de lexpression
sqrt(81)

REDA BT 17
SQL SERVER BY REDA BT 29 octobre 2017

Procdures Stocks & Triggers :


Procdures Stockes :

Crer une procdure Stocke :


create proc PS1
as
select * from [Nom De Table ]
where (Note>10)
exec PS1
Crer une procdure Stocke avec des
Variables :

create proc SP2 @date


date,@date1 date

as

select * from [Nom De Table ]


where (datenaissance between
@date and @date1)

declare @date
declare @date1
set @date='01/01/1997'
set @date1='16/04/1997'

execute SP2 @date,@date1

REDA BT 18
SQL SERVER BY REDA BT 29 octobre 2017

Modifier une procdure Stocke :

alter proc PS1


as
select * from [Nom De Table ]

Supprimer une procdure Stocke :


drop proc PS1
Triggers

Dclencheur qui affiche un message lors de


linsertion dun enregistrement
create trigger tr1
on commandes after insert
as
print 'Commande inserer'
Dclencheur qui mettre jour un champ sur une
table aprs Insertion :

create trigger tr2


on commandes after Insert
as
update Articles set N_Com = N_Com
+Com_Qt

REDA BT 19
SQL SERVER BY REDA BT 29 octobre 2017

from articles A,Inserted I


where A.N_Art=I.N_Com

Dclencheur qui mettre jour un champ sur une


table aprs Suppression
create trigger tr3
on commandes after delete
as
update articles set Nb_Com=Nb_Com-
Com_Qt
from Articles A,Deleted D
where A.N_Art=D.N_Com
Dclencheur qui mettre jour un champ sur une
table aprs une mise jour :
create trigger tr4
on commandes after update
as
update articles set
Nb_Com=Nb_Com+I.Com_qt-D.Com_qt
from Articles A, Deleted D,
Inserted I
where (A.N_Art=I.N_Com) and
(A.N_Art=D.N_Com)

Dclencheur qui empche la modification du


champ Type de la table Articles :

create trigger tr5


on articles after update
as
if(update(type)=true)
REDA BT 20
SQL SERVER BY REDA BT 29 octobre 2017

begin
raiserror('Le type ne peut pas tre
modifi',0,1)
rollback transaction
end

Dclencheur INSTEAD OF (Au lieu de ) :


create trigger tr6
on commandes instead of insert
as
insert Historique_Com select * from
inserted

Modifier un trigger

alter trigger tr1


on commandes after insert
as
print 'Une Commande est insre sur
la table Commandes'

Supprimer un trigger

drop trigger tr1


Suspendre provisoirement un dclencheur (Sans le
Supprimer)
alter table Articles
disable trigger tr2
REDA BT 21
SQL SERVER BY REDA BT 29 octobre 2017

Les transactions
Cest un group des instructions, sil y a une
instruction ne dmarre pas tout la transaction ne
dmarre pas, et le contraire correct.

Dlimiter une transaction, Ajouter

begin tran
.......
.......
.......
.......
commit tran

Pour Dlimiter un bloc dinstruction

begin tran
begin
.....
.....
.....
end
commit tran

Pour Executer un lot par lot :


Go

REDA BT 22
SQL SERVER BY REDA BT 29 octobre 2017

REDA BT 23
SQL SERVER BY REDA BT 29 octobre 2017

Autorisations SQL SERVER :


Autorisation sur les objets :
Autoriser la slection sur une table (Etudiant) :
grant Select on Etudiant to Reda

Empcher les autres instructions 2 utilisateurs

deny insert,update,delete on
Etudiant to Reda,Jihan

Autoriser la modification mais seulement sur le


champ (Nom) :
grant update(Nom) on Etudiant to Reda

Autorisation sur les instructions :


Autoriser la cration des tables et des vues :
grant create table, create view to Reda

Empcher la cration des bases de donnes


deny create database to Reda
Supprimer Les autorisations et les empchements :
revoke create database, create view,create
table to Reda

REDA BT 24
SQL SERVER BY REDA BT 29 octobre 2017

Autoriser toutes les instructions :

grant all to Reda

Les instructions Sont :

Create DATABASE, Create TABLE, Create


VIEW, Create PROCEDURE, Create RULE,
Create DEFAULT, Create FUNCTION,
BACKUP DATABASE, BACKUP LOG

REDA BT 25
SQL SERVER BY REDA BT 29 octobre 2017

COMPTES ET RLES :
Crer une connexion SQL de toute pice :
sp_addlogin 'Nom de Connexion ', 'Mot De
Passe', 'Nom Base De Donne'
Crer une connexion hrite de Windows :
sp_grantlogin 'Domaine\Compte_Utile'
sp_defaultdb 'Domaine\Compte_Utile','Nom
de Base De Donne'

Supprimer une connexion


sp_droplogin 'Nom de Connexion'

Empcher un Utilisateur Windows daccder au serveur :


sp_denylogin 'Domaine\Compte_Utile'

REDA BT 26

You might also like