Académique Documents
Professionnel Documents
Culture Documents
1
Plan
o Les index
o Optimisation du moteur SQL
o Les requêtes SARGABLE
o Améliorer les performances des procédures stockées
3
Introduction
Microsoft SQL Server utilise le langage T-SQL (Transact-SQL) pour ses requêtes, c'est une
implémentation de SQL qui prend en charge les procédures stockées et les déclencheurs.
Vous avez étudié SQL. Il faut savoir que, tous les SGBDs relationnels (Oracle, MS SQL Server,
MySQL, SQLite, DB2, PostgreSQL ..) utilisent un SQL standard. Ce qui implique que TOUS
ce que vous avez appris durant le cours de « Introduction aux bases de données » s’applique et
reste valable pour les autres SGBDs à quelques exceptions près.
• La Commande CREATE TABLE reste la même. Mais certains SGBDs comme Oracle, MS
SQL Server, et MY SQL ont implémenté le concept de l’incrémentation automatique de la clé
primaire.
• La commande ALTER Table est la même. De même que la commande DROP Table.
• La commande SELECT reste la même. Les jointures se font au niveau du FROM et non au
niveau du WHERE.
• Sauf le SQLite, les SGBD cités plus haut sont TOUS des SGBDS SERVEURS.
5
Introduction
Tous les SGBDs offrent une interface ou un logiciel de gestion des bases de données. Pour
Oracle, c’est SQL Developer. Pour MS SQL Server c’est SQL Server Management Studio,
pour MySQL c’est MySQL Workbench, pour SQLite c’est SQLite DB Browser.
• Les SGBD sont très différents concernant l’extension de la couche SQL. Ils sont
différents pour l’écritures des procédures stockées et des triggers. Cette session, nous
allons étudier le Transact-SQL qui est l’extension du SQL pour MS SQL Server
• L’interface graphique de SQL Server Management Studio permet de créer directement la
base de données à l’aide du schéma. En d’autres mots, pas besoin de générer le code SQL
du diagramme pour l’exécuter puisque les tables sont déjà créées.
• Ce qu’il faut savoir pour la suite du cours, c’est que votre poste de travail est à la fois
serveur et client.
6
Installation & configuration
Si vous n’avez pas déjà installé SQL server, vous devez le faire. L’installation de la base de
données est très simple et se fait automatiquement.
Nous avons besoin d’installer :
1- Le serveur de bases de données :
Vous devez aller sur le site suivant pour télécharger et installer SQL Server Express.
https://www.microsoft.com/fr-ca/sql-server/sql-server-editions-express
8
Installation & configuration
9
Installation & configuration
10
Installation & configuration
11
Qu’est ce qu’une BDD (Base de donnée)?
• Une Base de donnée est un conteneur qui nous aide à organiser les données.
• Cela sera beaucoup plus facile pour interroger les données, les Mettre à
jour, supprimer les Données obsolètes etc…
Par exemple :
Si on a plusieurs fichiers Excel, ou toutes les données sont éparpillées sur ces différents
fichiers, pourquoi ne pas centraliser toutes ces données dans une même BDD?
• On va créer une base de donnée a l’aide de l’interface graphique et l’aide d’une commande
Create database BDB
• Modification (Renommer) une base de donnée avec requête et sur l’interface graphique
Alter database BDD modify name = new_BDD;
GO
13
Qu'est ce qu'une Table ?
Colonne
Ligne
Nom Prenom
1 Adam Smith
14
Table – Types de données
Type À partir de À
bigint -9.223.372.036.854.775.808 9.223.372.036.854.775.807
int -2147483648 2147483647
smallint -32768 32767
tinyint 0 255
bit 0 1
Decimal -10 ^ 38 1 10 ^ 38 -1
numeric -10 ^ 38 1 10 ^ 38 -1
money -922,337,203,685,477.5808 +922,337,203,685,477.5807
smallmoney -214,748.3648 +214,748.3647
15
Table – Types de données
Numerics approximatif
Type À partir de À
float 1,79 E + 308- 1,79 E + 308
reel -3.40E + 38 3.40E + 38
datetime et smalldatetime
Type À partir de À
datetime (3,33 exactitude millisecondes) 1 janvier 1753 31 déc 9999
smalldatetime (précision de 1 minute) 1 janvier 1900 6 juin 2079
Chaînes de caractères
Type Description
De longueur fixe de caractères Unicode avec une longueur
char
maximum de 8000 caractères.
varchar Texte unicode de longueur variable allant jusqu’à 2 Go.
text Texte non unicode de longueur maximale 2Go
16
Table – Types de données
Type Description
la longueur de données Unicode-fixe avec une longueur
nchar
maximale de 4000 caractères.
la longueur de données Unicode et variable, avec une longueur
nvarchar
maximum de 4000 caractères.
nvarchar longueur Unicode données variables avec une longueur maximale
(max) de 230 caractères (SQL Server 2005 uniquement).
la longueur de données Unicode et variable, avec une longueur
ntext
maximale de 1073741823 caractères.
17
Supprimer et renommer une table
Syntaxe:
Renomme moi La table actuelle
18
Exercice
• Pouvez vous me créer une BDD s’appelant Debutant via Management Studio et en
Transact SQL ?
• Pouvez vous me créer une simple table se nommant Simple_table, avec les colonnes
suivantes (colonne_1 et colonne_2) avec le type de données NCHAR(10) ?
19
Insertion des données
Syntaxe:
20
Sélectionner des données
• Sélectionner et extraire des données sur SQL, se lance par un simple SELECT.
• Filtrer les données avec la clause WHERE, le WHERE se place après le nom de la table0
Syntaxe: Ma table
Sélectionne moi A partir de
21
Mettre a jour des données
• Mettre a jour des données sur SQL, se lance par un simple UPDATE.
Syntaxe:
Fixe moi la colonne &
Met a jour la ligne La table valeur
22
Les commentaires et les crochets en TSQL
• Concernant les crochets, ils sont utile lorsque le nom d’une colonne dans un table contient un
espace.
Aussi les mots réservés a SQL > create table table_SAL ([Table] varchar(20))
23
Insérer plusieurs valeurs identiques très simplement
Si je veux insérer la meme valeur 10 fois, il faut répéter la requête d’insertion 10 fois, ce qui
devient tres long. On peut changer ca pour avoir:
Syntaxe:
Supprime la ligne A partir
25
Exercice
1/ Créez moi une table se nommant Etudiant avec trois colonnes suivantes en TSQL :
• Nom en VARCHAR (200).
• Prénom en CHAR (10).
• Age en INT.
2/ Ensuite insérez 5 lignes, il faut que vous ayez ces 5 valeurs dans cette table :
Il faut savoir que l’on peut renommer une colonne dans le SELECT,
par un alias en utilisant le AS:
27
L’opérateur LIKE
28
Sélectionner un nombre de lignes
La première ligne
29
Enlever les doublon avec distinct
Categorie
Informatique
Communication
Select distinct * from categorie
Deux lignes Informatique
identiques Analyse
Enlève moi les doublons
Categorie
Informatique
Communication
Analyse
30
Copier une table via select into
Copier une table sur SQL passe par la commande SELECT INTO
31
Les opérateurs de comparaison
Syntaxe:
32
Les opérateurs IN , NOT IN, IS et IS NOT NULL
Sélectionne moi
Ma liste de valeur
Sélectionne moi
Les valeurs NULL ou pas
33
Trier avec ORDER BY
• Cela permet de trier les lignes dans un résultat d’une requete SQL.
Exemple:
Select * from contact order by age asc
La clause AND requiert que les deux conditions soient remplies pour
retourner la requete.
Syntaxe:
Les personnes qui sont nées en 1976 Et aussi ceux qui ont plus de 16
35
Les opérateurs AND et OR
Syntaxe:
36
L’opérateurs Between
L’opérateur BETWEEN est utilisé dans une requete SQL pour sélectionner
un intervalle de données dans une requete utilisant WHERE.
Exemple:
37
Regrouper les données avec Group BY
38
L’opérateurs HAVING
Exemple:
select count(*) as total, sexe, age from contact
where sexe = ‘M’ and age between 20 and 30
Group by sexe, age
Having count(*) => 2
39
La commande PRINT
Exemple:
40
UNION et UNION ALL
6 : Sélectionnez dans la requête les personnes qui ont 17 ans et moins de 17 ans.
9 : Copiez juste la ligne de Mr Portail Bruno dans une autre table s'appelant Portail.
11 : Sélectionnez juste les personnes qui ne sont pas nées au mois d’Aout.
42
Les function d’agrégation
Exemple:
43
Les function d’agrégation
Exemple:
44
Exercice
• Comptez les personnes qui ont la letter A dans leur prenom, qui
ont entre 18 et 40 ans, de sexe masculin et don’t le total est
supérieur a 1
45
La commande SUBSTRING
Syntaxe:
46
TRIM/LTRIM/RTRIM UPPER et LOWER
On teste ca
47
TRIM/LTRIM/RTRIM UPPER et LOWER
48
TRIM/LTRIM/RTRIM UPPER et LOWER
49
La function FORMAT
Syntaxe:
FORMAT (value, format [,culture])
Exemple:
Si on met D
au lieu du d
50
La function FORMAT
Exemple:
51
LEFT et RIGHT
52
Replace et LEN
Syntaxe:
Exemple:
53
Replicate/Reverse/Charindex
Syntaxe:
Replicate(string_expression,integer_expression)
54
Replicate/Reverse/Charindex
exemple:
55
Replicate/Reverse/Charindex
exemple:
56
STRING_SPLIT/STUFF
exemple:
57
Concat et Concat_ws
Suntaxe:
exemple:
58
Introduction sur les jointures
59
Les jointures
60
Les jointures
61
INNER JOIN
Left right
table table
Exemple:
63
LEFT/RIGHT JOIN
LEFT JOIN c’est une jointure externe pour retourner tous les
enregistrements de la table gauche, avec les valeurs correspondantes
de la table de droite.
64
LEFT/RIGHT JOIN
RIGHT JOIN c’est une jointure externe pour retourner tous les
enregistrements de la table de droite, avec les valeurs
correspondantes de la table de gauche.
65
LEFT/RIGHT JOIN
67
FULL JOIN
Exemple Si je change
l’ordre des tables
68
CROSS JOIN
Syntaxte:
Select * from table_client CROSS JOIN Commande
69
Jointures sur plusieurs tables
70
LEFT JOIN VS NOT IN VS NOT EXISTS
71
Faire un update avec les jointures
72
EXCEPT / INTERSECT
• EXCEPT:
EXCEPT retourne les lignes
distinctes da le requete d’entrée a
gauche mais non trouvées par la
requete d’entrée a droite.
• INTERSECT:
INTERSECT retourne des lignes
distinctes qui sont générées par
les deux entrées, droite et gauche.
73
EXCEPT / INTERSECT
• EXEMPLE:
74
EXCEPT / INTERSECT
• EXEMPLE:
75
CROSS APPLY et OUTER APPLY
76
Exercice 1 – les jointures
77
Exercice 2 – les jointures
78
Exercice 3 – les jointures
79
Exercice 4 – les jointures
80
Exercice 5 – les jointures
81
Exercice 6 – les jointures
82
Les fonctions DATE: DATEADD/DATEDIFF
Syntaxe:
DATEADD(datepart, number, date)
Exemple:
83
Les fonctions DATE: DATEADD/DATEDIFF
84
Les fonctions DATE: DATEADD/DATEDIFF
Syntaxe:
DATEDIFF(datepart, startdate, enddate)
Exemple:
85
DATENAME/DATEPART/GETDATE/GETUTCDATE
Syntaxe:
DATENAME(datepart, date)
Exemple:
Aout
86
DATENAME/DATEPART/GETDATE/GETUTCDATE
Syntaxe:
DATEPART(datepart, date)
Exemple:
87
DATENAME/DATEPART/GETDATE/GETUTCDATE
Exemple:
88
EOMONTH
• Exemple:
89
OFFSET et FETCH NEXT ROWS
-- Exemple:
Je veux les 10 lignes suivantes de ma table lors de mon SELECT
90
OFFSET et FETCH NEXT ROWS
91
MERGE
• MERGE permet d’extraire des lignes d’une table source afin de faire
un UPDATE, DELETE ou INSERT dans une table cible.
• Cela evite d’ecrire des modification multiples en plusieurs
instructions.
• Exemple:
92
CASE WHEN
• Exemple:
93
CASE WHEN
• Exemple:
94
CHOOSE
NULL
95
CHOOSE
96