Toutes les commandes SQL server que vous aves besoin dans l'exam de Fin de Formation



/************************/

/* Adil el hajiz */
/************************/

/*Creation de la base de donnée Simple*/

CREATE DATABASE TEST on default=1
GO
USE TEST1
/*Pour supprimer une base de donnée :*/
use master
DROP DATABASE TEST

/*CRÉER UNE BASE DE DONNÉE Avancée( paramétrer les différents fichiers):*/
CREATE DATABASE TEST
ON PRIMARY
( NAME = TEST_dat,
FILENAME = 'C:\program files\Microsoft SQL Server\mssql\data\TEST_dat.mdf',
SIZE = 10,
MAXSIZE = 50, FILEGROWTH = 5 %) LOG ON
( NAME = TEST_log,
FILENAME = 'C:\program files\Microsoft SQL Server\mssql\data\TEST_log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )

/*Pour utiliser une base de donnée :*/

USE TEST

/*MODIFIER LA STRUCTURE D’UNE BD :*/

--Pour ajouter un fichier supplémentaire :

ALTER DATABASE TEST
ADD FILE
(
NAME =TEST_dat2,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\TEST_dat2.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)

--Supprimer un fichier de BD :

ALTER DATABASE TEST
REMOVE FILE TEST_dat2

--Pour modifier l’un des fichiers d’une BD (Modification du Journal par exemple) :

ALTER DATABASE TEST
MODIFY file (Name=TEST_log, MAXSIZE = 80MB)
-- Pour renommer une BD:
Sp_renamedb 'TEST','BASE_2'

/*Creation des tables*/

/*CREATION DE LA TABLE PERE*/
CREATE TABLE PERE
(codep int,
nomp varchar,
age int,
constraint pk_PERE primary key (codep));

/*CREATION DE LA TABLE FILS*/
CREATE TABLE FILS
(codef int,
nomf varchar,
sexe varchar,
agef int,
codep int,
constraint pk_FILS primary key (codef),
constraint fk_FILS foreign key (codep)references PERE (codep));

/*Pour ajouter un type utilisateur :*/
Sp_addtype telephone, 'varchar(24)', 'NOT NULL'
--Pour supprimer une table :
DROP TABLE FILS;

--/*CLÉ PRIMAIRE / SECONDAIRE :*/---------------------
--Pour Créer une table avec un clé primaire (un seul champ) :

CREATE TABLE Personnes (n° int identity(1,1), nom char(12) default 'BTH',
CONSTRAINT CP primary key (n°)) ;

--Pour Créer une table un clé primaire (2 champs ou plus) :

CREATE TABLE Profession (n° integer, code char(8), prof varchar,
CONSTRAINT CP2 primary key (n°, code)) ;
-- Pour créer une table avec un clé étrangère :

CREATE TABLE Bus (n° integer, code char(8), prof varchar,
CONSTRAINT CE1 foreign key (n°) REFERENCES Etudiant (n°);

--Pour supprimer une contrainte (clé primaire, clé étrangère, condition, not null, unique) :

ALTER TABLE Bus
DROP CONSTRAINT CE1 ;

--Pour Ajouter un clé étrangère (Modification) :

ALTER TABLE Bus
ADD CONSTRAINT CE1 foreign key (n°) REFERENCES Etudiant (n°);
--Pour Créer une table avec une condition sur un champ :
CREATE TABLE Salles
(n° integer, désignation char(15),
CONSTRAINT C1 check (designation like 'Salle%')
)

--MODIFIER LA STRUCTURE DE TABLE :
--« Ajout column »
ALTER TABLE Etudiant
ADD adresse char(30), age integer ;
--« Suppression column»
ALTER TABLE Etudiant
DROP nom, note ;
--Modification column
ALTER TABLE Etudiant
MODIFY nom char(15) ;

--ACTIVER / DÉSACTIVER UNE CONTRAINTE :
--Pour désactiver une contrainte :

ALTER TABLE BUS NOCHECK CONSTRAINT C1

--Pour réactiver une contrainte :

ALTER TABLE BUS CHECK CONSTRAINT C1
CRÉATION DES VUES :

--Pour créer une Vue à partir d’une table :

CREATE VIEW Etudiant_Admis ( n°, nom, date_naiss, note) AS
SELECT(n°, nom, date_naiss, note)
FROM Etudiant
WHERE note>10 ;

--Pour supprimer une vue :

DROP VIEW Etudiant_Admis ;

--CRÉATION DES INDEX :
--Pour créer un index sur 2 champs d’une table :
CREATE INDEX Index1
ON Etudiant (n°, nom);

--Pour créer un index en forçant l’unicité sur un champ :

CREATE UNIQUE CLUSTERED INDEX Index2
ON Bus (société);

--Pour supprimer un index :

DROP INDEX Index2
--RENOMMER DES OBJETS :

--Pour renommer un objet (table, vue, procédure stocké, trigger, contrainte, règles …)

Sp_rename ‘Etudiant’, 'Stagiaires', ‘Object’ --Pour renommer une colonne d’une table :
Sp_rename 'Etudiant.nom', 'Nom_E', 'COLUMN' --Pour renommer un index :
Sp_rename 'Index1', 'Index01', 'INDEX'

--Pour renommer un type utilisateur :

Sp_rename 'telephone', 'phone', 'USERDATATYPE'

-------------/*Définition des enregistrements dans les Tables :*/-----------------------------
--AJOUTER DES ENREGISTREMENTS :
--1ère méthode :

INSERT INTO Etudiant (n°, nom, note) VALUES (5,'Mounir', 12) ;

--2ème méthode :

INSERT INTO Etudiant VALUES (3, 'Amine', '15/08/1985', 13.25) ;

INSERT INTO Etudiant VALUES (7, 'Meriem', null, 14) ;

INSERT INTO Bus VALUES (5, 63,'medina') ;

INSERT Bus VALUES (5, 20,'raha') ;

--Pour insérer des enregistrements à partir d’une autre table :

INSERT INTO Etudiant (n°, nom)
SELECT n°, nom
FROM Personnes
WHERE nom like 'n%' ;

--MISE À JOUR DES ENREGISTREMENTS :

UPDATE Etudiant
SET n°=6, nom='adil' WHERE n°=5 ;

UPDATE Etudiant
SET note=13.26 WHERE n°=6 ;

UPDATE Bus
SET société='medina' WHERE no_bus=70 ;

UPDATE Articles
SET prix = prix * 0.25

--SUPPRIMER DES ENREGISTREMENTS :

DELETE FROM Etudiant WHERE n°=6--« Suppression des enregistrements précis »

DELETE FROM Bus --« Suppression de toutes les enregistrements »

--------/*Requêtes (Select) :*/----------------------
1) SELECT n°, nom
FROM Etudiant
WHERE note>10
GROUP BY nom
HAVING nom like ' _J%'
ORDER BY note

2)SELECT nom, AVG (note) FROM Etudiant ;

SELECT nom, AVG (note AS Note_Moyenne) FROM Etudiant ;

SELECT nom FROM Etudiant WHERE note IN ( SELECT MAX (note) FROM Etudiant) ;
3)SELECT n°, count (DISTINCT note)
FROM Etudiant
GROUP BY n° DESC;
4)
SELECT nom, no_bus
FROM Etudiant
WHERE n° IN ( SELECT n° FROM Bus WHERE société='casa') ;
5)
/*Ancienne :*/

SELECT Etudiant.nom, Bus.no_bus
FROM Etudiant, Bus WHERE Etudiant.n° = Bus.n° AND Bus.société = ‘casa’ ;

/*Actuelle :*/

SELECT Etudiant.nom, Bus.no_bus
FROM Etudiant INNER JOIN Bus ON Etudiant.n° = Bus.n°
WHERE Bus.société = 'casa' ;
--AUTO JOINTURE :
SELECT Etudiant.nom, Etudiant2.note
FROM Etudiant INNER JOIN Etudiant AS Etudiant2 ON Etudiant.note = Etudiant2.note
WHERE Etudiant.n°<> Etudiant2.n° ;

--REQUÊTES PLUS PRÉCISES :

LIKE ‘%[M-R]’ Finissent par M, N, O, P, Q ou R
LIKE ‘%[FMR]%’ ne contenant ni F ni M ni R
TOP 10 Affiche les 10 premières lignes du résultat
-----------/*Fonctions SQL Server :*/---------------------------

--Pour ajouter un nombre à une partie de la date :

DATEADD (Partie_Date, nombre, colonne)
DATEADD (month, 5, datenaiss)

--Pour soustrait la date de fin de celle de départ :

DATEDIFF (Partie_Date, Date_départ, Date_fin)
DATEDIFF (year, datenaiss, Gatedate())

--Pour retourner une chaîne de caractères d’une partie de la date :

DATENAME (Partie_Date, colonne)
DATENAME (month, datenaiss) Pour retourner une partie d’une date :
DATEPART (Partie_Date, colonne)
DATEPART (day, colonne)

--Ou utiliser :

Day (colonne) Month (colonne) Year (colonne)

--Formats (Partie_Date) :

dddd, mmmm dd, yyyy hh:mm:ss.ffff tt
Friday, December 28, 2001 11:16:41.0021 AM
FONCTIONS CHAÎNES :

--Pour concaténer deux chaînes ou plus :

CONCAT (chaine1, chaine2)
CONCAT (Nom, Prénom)

--Pour extraire une partie du chaîne :

SUBSTR (colonne, Position_départ, longueur)
SUBSTR (Nom, 1, 1)

--Pour remplacer une valeur dans une chaîne par une autre valeur :

REPLACE (colonne, valeur1, valeur2)
REPLACE (Nom, ‘Mb’, ‘Mn’)

--Pour convertir une chaîne en majuscule / minuscule :

UPPER (chaîne) ou LOWER (chaîne)
UPPER (Nom) ou LOWER (Prénom)

--Pour retourner la longueur de la chaîne de caractères :

LENGTH (chaîne)
LENGTH (Nom)

--Pour retourner la valeur ASCII d'un jeu de caractères indiqué :

ASCII (jeu_caractères)
ASCII (Nom)

--FONCTIONS MATHÉMATIQUES :

--Pour retourner la valeur absolue d’une expression :

ABS (Expression)
ABS (Remise)

--Pour retourner la puissance de l'expression (ExpressionExposant) :

POWER (Expression, Exposant)
POWER (Prix, 2)

--Pour retourner la racine carrée de l'expression :

SQRT (Expression)
SQRT (Remise)

FONCTIONS CHAÎNES :

--Pour concaténer deux chaînes ou plus :

CONCAT (chaine1, chaine2)
CONCAT (Nom, Prénom)

--/*nformations supplémentaires :*/------------
--COMMENTAIRES :

/*Pour ajouter un commentaire sur une seule ligne :*/

-- c’est un commentaire

Pour ajouter un commentaire de plusieurs lignes :

/* c’est
Un
Commentaire */

--------------Administration de Sql server 2000----------------------------------
-----/*creation de connexion*/------------------------------
--1)Connexion Windows
sp_grantlogin 'HACKEUR\Adil'
--Pr changer la base donnée par default--
sp_defaultdb 'HACKEUR\Adil','TEST1'
--Pr Refuser L acces-----
sp_denylogin 'HACKEUR\Adil'

--2)Connexion Sql
sp_addlogin 'test','123456','TEST1','french'
--Pr supprimer
sp_droplogin 'test'

--Creation de comptes d'utilisteur----
--Pr cree un utilisateur qui porte le méme nom que la connexion--
sp_grantdbaccess 'HACKEUR\Adil'
sp_grantdbaccess 'test'
--Pr supprimer
sp_revokedbaccess 'HACKEUR\Adil'
sp_revokedbaccess 'test'

---creation des utilisateur simple
sp_adduser 'HACKEUR\Adil','Adil'
sp_adduser 'test','user'
--Pr supprimer
sp_dropuser 'Adil'
sp_dropuser 'user'

--Pour autoriser les connexions sans compte d'utilisateur associé à accéder à BD :
Sp_grantdbaccess 'guest'

--Creation de Role
sp_addrole 'group1'
sp_droprole 'group1'
---Ajouter des user a un role Standart
sp_addrolemember 'group1','Adil'
sp_addrolemember 'group1','user'
--pr supprimer
sp_droprolemember 'group1','Adil'
---Ajouter des user a un role sys
sp_addsrvrolemember 'HACKEUR\Adil','sysadmin'
sp_dropsrvrolemember 'HACKEUR\Adil','sysadmin'
--Creation des role Application (Sécurité) :
sp_addapprole 'roleapplication','12345'
--pr Activer le role d'application
sp_setapprole 'roleapplication','12345'
--Pr supprimer
sp_dropapprole 'roleapplication'

--------------/*Autorisations SQL :*/------------------------
--AUTORISATIONS SUR DES OBJETS :

--Pour autoriser la sélection sur une table (Etudiant) :

Grant Select ON Etudiant TO adil

--Pour empêcher les autres instructions à 2 utilisateurs:

Deny Insert, Update, Delete ON Etudiant TO adil, [FST.com\adil]

--Pour autoriser la modification mais seulement sur un champ (nom de l’étudiant) :

Grant Update (nom) ON Etudiant TO adil

--Pour autoriser un rôle d’insérer sur une table (Etudiant) :

Grant Insert ON Etudiant TO Réseau

--Les objets sont :

Select, Insert, Update, Delete, References sur une table ou vue. Select, Update, References sur une colonne.
Exec sur une procédure stocké.


--AUTORISATIONS SUR DES INSTRUCTIONS :

--Pour autoriser la création des tables et des vues :

Grant Create table, Create view TO elhajizadil

--Pour empêcher la création des bases de données :

Deny Create database TO adil

--Pour supprimer (Lever les autorisations et les empêchements) :

REVOKE Create database, Create view TO adil

GRANT ALL TO adil

--Les instructions sont :

CREATE DATABASE, CREATE TABLE, CREATE VIEW, CREATE PROCEDURE,
CREATE RULE, CREATE DEFAULT, CREATE FUNCTION, BACKUP DATABASE, BACKUP LOG.

--AUTORITÉ POUR DONNER DES AUTORISATIONS :

--Pour autoriser Namiro à faire la sélection sur la table Etudiant, ainsi de la possibilité de la donner à d’autre utilisateurs :

GRANT SELECT ON Etudiant TO Réseau
WITH GRANT OPTION

--Le rôle Réseau à l’autorité de faire Select sur la table Etudiant, adil est un membre du rôle Réseau, Pour que Namiro puisse donner des autorisations Select sur Etudiant :

GRANT SELECT ON Etudiant TO Util1 AS Réseau

-----------/*Sauvegarde & Restauration :*/-----------------

--CRÉATION D’UNITÉS DE SAUVEGARDE :

--Pour créer une unité de sauvegarde nommé US1 sur un disque :

Sp_addumpdevice 'DISK', 'US1', '\\servername\sharename\path\filename.bak'
--Pour créer une unité sur un emplacement physique d’une bande magnétique:
Sp_addumpdevice 'TAPE', 'US2', '\\.\tape0'


--SAUVEGARDER UNE BD :

--Pour sauvegarder une BD sans unité de sauvegarde permanente :

BACKUP DATABASE Bse_1 TO DISK = 'C:\Temp\Mycustomers.bak'
--Pour sauvegarder une BD sur 2 unités de sauvegarde en même temps :
BACKUP DATABASE Bse_1 TO US1, US2 WITH MEDIANAME = US

--Pour effectuer une sauvegarde complète d’une BD sur une unité avec description :

BACKUP DATABASE Base_1 TO US1 WITH DESCRIPTION = ‘Première sauvegarde’
--Pour effectuer une sauvegarde complète d’une BD sur une unité en écrasant le précédent :
BACKUP DATABASE Base_1 TO US1 WITH INIT

--Pour effectuer une sauvegarde différentielle d’une BD sur une unité :

BACKUP DATABASE Base_1 TO US1 WITH DIFFERENTIAL

--Pour sauvegarder le journal des transactions :

BACKUP LOG Base_1 TO US2

--Pour supprimer la partie inactive d'un journal sans faire de copie de sauvegarde :

BACKUP LOG Base_1 WITH TRUNCATE_ONLY

--Pour supprimer la partie inactive d'un journal plein sans en faire de copie de sauvegarde.

BACKUP LOG Base_1 WITH NO_LOG

--Pour sauvegarder un fichier ou un groupe de fichier :

BACKUP DATABASE Base_1
FILE = Base_1dat TO US1
BACKUP LOG Base_1 to US2


--VÉRIFIER UNE SAUVEGARDE AVANT RESTAURATION :

--Pour obtenir les informations d'en-tête d'un fichier de sauvegarde particulier :

RESTORE HEADERONLY

--Pour obtenir des informations sur les fichiers de base de données ou de journal :

RESTORE FILELISTONLY

--Pour obtenir des informations sur le support de sauvegarde contenant un fichier :

RESTORE LABELONLY

--Pour assurer que les différents fichiers constituant le jeu de sauvegardes sont complets :

--RESTORE VERIFYONLY


--/*RESTAURER UNE BD :*/----

--Pour restaurer une BD à partir d’une unité de sauvegarde :

USE master
RESTORE DATABASE Base_1
FROM US1

--Pour restaurer une BD à partir de plusieurs unités de sauvegarde (2 par exemple) :

USE master
RESTORE DATABASE Base_1
FROM US1
WITH NORECOVERY pas de validation

RESTORE DATABASE Base_1
FROM US2 --validation (WITH RECOVERY par default)
--Pour restaurer une sauvegarde spécifique (l’un des fichiers existant sur une unité) :
USE master
RESTORE DATABASE Base_1
FROM US1
WITH FILE = 2, RECOVERY Restaurer la deuxième sauvegarde.

--Pour restaure tous les enregistrements du journal des transactions écrits dans la base de données avant un certain moment défini :

USE master
RESTORE DATABASE Base_1
FROM US1
WITH NORECOVERY

RESTORE LOG Base_1
FROM US2
WITH FILE = 1, NORECOVERY

RESTORE LOG Base_1
FROM US2
WITH FILE = 2, RECOVERY, STOPAT = '3 janvier 2000, 01:00'

----------/**ATTACHER / DÉTACHER UNE BD :**/'''''''''

--Pour détacher une BD (pas en cours d’exécution) :

Sp_detach_db 'BASE_1'

--Pour attacher une BD (mdf + ldf) :

Sp_attach_db @dbname = 'BASE_1',
@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\fst_dat.mdf',
@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\fst_1log.ldf'
--Pour attacher une base de données ne contenant qu'un seul fichier de données :
Sp_attach_single_file_db @dbname = fst_1,
@physname = 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\base_1dat.mdf'


/**PROPRIÉTAIRE DE BD :*/

--Pour modifier le propriétaire de la base de données courante :

Sp_changedbowner ‘adil’

p
---------------------/**********et Merci el hajiz adil Group 1 licence PRO************/--------------------------------------