Ce support sur les fondamentaux du langage SQL s’adresse aux développeurs et informaticiens débutants appelés à travailler avec un Système de Gestion de Bases de Données Relationnelles (SGBDR) pour stocker et manipuler des données. Son objectif est de décrire les ordres principaux les plus utilisés du langage SQL (indépendamment des déclinaisons réalisées par les éditeurs de SGBDR) pour permettre au lecteur de prendre en main rapidement une base de données relationnelle et être capable de...
Ce support sur les fondamentaux du langage SQL s’adresse aux développeurs et informaticiens débutants appelés à travailler avec un Système de Gestion de Bases de Données Relationnelles (SGBDR) pour stocker et manipuler des données. Son objectif est de décrire les ordres principaux les plus utilisés du langage SQL (indépendamment des déclinaisons réalisées par les éditeurs de SGBDR) pour permettre au lecteur de prendre en main rapidement une base de données relationnelle et être capable de créer des tables, de les interroger, de les modifier, d’insérer et de supprimer des lignes.
Le support débute par un bref historique sur la création de la norme SQL puis présente quelques notions sur le modèle relationnel. Ensuite, chaque chapitre présente une subdivision de SQL : la création et la manipulation des tables puis la gestion des données dans ces tables en incluant les fonctions de fenêtrage. L’auteur enchaîne avec la sécurité des données et quelques notions de transactions, puis présente la programmation avec quelques éléments de PL/SQL et l’étude des déclencheurs. Le livre se termine en abordant des thèmes un peu plus complexes comme les chargements en masse, les imports et exports de tables, les notions de performances ou encore les objets système.
Les exemples utilisés dans ce support ont été réalisés avec la version Oracle 21c DB Express Edition, SQL Server 2022 Developer Edition, la version 11 de MariaDB Community Server (MySQL), PostgreSQL en version 15.3 et sont en téléchargement sur le site www.editions-eni.fr.
2. Supprimer les espaces à droite ou à gauched’une chaîne de caractères : TRIM / LTRIM / RTRIM
3. Trouver la position d’une chaîne de caractèresdans une chaîne : INSTR, CHARINDEX et POSITION
4. Ajouter des caractères avant ou aprèsune chaîne : LPAD / RPAD
5. Extraire une partie d’une chaîne de caractères: SUBSTR
6. Diviser une chaîne de carctèresen lignes de sous-chaînes : STRING_SPLIT
7. Remplacer une chaîne de caractères parune autre chaîne : REPLACE
8. Insérer une chaîne de caractèresdans une autre chaîne : STUFF
9. Calculer la longueur d’une chaîne decaractères : LENGTH ou LEN
10. Date au format chaîne de caractères :DATENAME
Les principales fonctions de conversion
1. Transformer un numérique ou une date en texte: TO_CHAR
2. Changer le type d’une colonne : CAST ou CONVERT
3. Changer le classement d’une colonne de type alphanumérique(COLLATE)
Les fonctions de fenêtrage
1. Numérotation séquentielle et rangementde lignes
2. Distribution de lignes en groupes numérotés
3. Décalage de valeurs d’une ligne à uneautre
Les autres fonctions
1. NVL : tester une colonne à null
2. Tester plusieurs valeurs : COALESCE
3. Comparer deux colonnes : NULLIF
Exercices
Solutions des exercices
La sécurité des données (DCL)
Introduction
Pourquoi définir des droits ?
Créer une connexion
Créer un utilisateur
Changer le mot de passe d’un utilisateur
Attribuer des droits (GRANT)
1. Attribuer des droits sur la manipulation d’unetable
2. Attribuer des droits sur les objets de la base
3. Les autres droits possibles
Interdire l’accès (DENY)
1. Interdire l’accès à certainsobjets de la base
Supprimer des droits (REVOKE)
1. Supprimer des droits sur la manipulation d’unetable
2. Supprimer des droits sur les objets de la base
Utilisation des rôles
Supprimer un rôle
Exercices
Solutions des exercices
Le contrôle de transactions (TCL)
Problématique des accès concurrents
1. Illustration des accès concurrents
a. Exemple 1 : mises à jour simultanées
b. Exemple 2 : incohérence des donnéessuite à une modification d’un autre utilisateur
2. Le mécanisme de verrouillage
Notion de transaction
1. Définition d’une transaction
2. Comment éviter les incohérencesde données
3. Mise en œuvre d’un verrouillage
a. READ UNCOMMITTED
b. READ COMMITTED
c. REPEATABLE-READ
d. SERIALIZABLE
e. Syntaxes
4. Mise en œuvre d’un verrouillage applicatif
a. Comment connaître les verrous poséssur une table ?
b. Comment supprimer des verrous posés sur unetable ?
5. Validation des modifications (COMMIT)
6. Abandon des modifications (ROLLBACK)
7. Les points de synchronisation (SAVEPOINT )
8. Exemple d’utilisation des points de synchronisation
Exercice
Solution de l’exercice
La programmation
Introduction
Syntaxe générale
Les curseurs
Le contrôle des flux
1. La boucle WHILE
2. La boucle FOR
3. La boucle LOOP
4. Les structures conditionnelles CASE et IF
Les exceptions Oracle les plus utilisées
La gestion des erreurs en Transact SQL
Création d'une procédure stockée
Création d'une fonction stockée
Les packages
Compilation d'une procédure, d'une fonction ou d'un package
Suppression d'une procédure, d'une fonction ou d'un package
Les déclencheurs
1. Création d’un déclencheur de contrôleet mise à jour dans une table
2. Création d’un déclencheur de suivides mises à jour
Exercices
Solutions des exercices
Approfondissement
Les sous-requêtes
1. Les sous-requêtes imbriquées
2. Les sous-requêtes corrélées
3. WITH CTE (Expression de Table Commune)
Les imports et exports de données
1. Charger des données en masse avec SQL*Loader
2. Les imports et exports de tables avec Oracle
a. Les exports de tables
b. Les imports de tables
3. Extraire les données d’une tabledans un fichier à plat
4. Importer les données d’une autresource de données
5. Importer les données d’un fichierXML
Quelques notions de performances
1. Utilisation de EXPLAIN PLAN
2. Utilisation du package DBMS_XPLAN.DISPLAY
3. Optimisation des requêtes par l’utilisationdes HINTS
4. Conclusion
Les tables système
1. Tables système pour les tables et colonnes
a. Oracle
b. MySQL
c. SQL Server
d. PostgreSQL
2. Tables système pour les index et les vues
a. Oracle
b. MySQL
c. SQL Server
d. PostgreSQL
3. Les autres tables système
a. Oracle
b. MySQL
c. SQL Server
d. PostgreSQL
Les métadonnées, fonctions et procédures système SQL Server
Quelques scripts bien utiles
1. Connaître la taille réelle d’unecolonne
2. Rechercher et supprimer des doublons dans une table
3. Afficher le contenu d’une table sans connaîtresa structure
4. Générer les ordres d’insertion dansune table à partir d’un fichier Excel
Exercices
Solutions des exercices
Les erreurs les plus couramment rencontrées
Introduction
Sur les accès aux données (LDD/LMD)
Sur les transactions et les sessions (TCL/DCL)
Sur les composants internes (mémoire, système)
Annexes
Récapitulatif des ordres principaux
1. Les principaux ordres du LDD (Langage de Définition de Données)ou DDL (Data Definition Language)
2. Les principaux ordres du LMD (Langage de Manipulation deDonnées) ou DML (Data Manipulation Language)
3. Les principaux ordres du LCD (Langage de Contrôledes Données) ou DCL (Data Control Language)
4. Les principaux ordres du LCT (Langage de Contrôledes Transactions) ou TCL (Transaction Control Language)
5. La création de procédures et defonctions
Fonctions SQL présentées dans ce livre
Glossaire
Anne-Christine BISSON
Anne-Christine BISSON est consultante indépendante en informatique décisionnelle. Cette experte conseille sur la conception de bases et entrepôts de données de différents SGDB. A ce titre, elle manipule et agrège des données à partir de sources diverses pour les restituer de façon synthétique dans des entreprises et administrations de différents secteurs. Également formatrice, elle prolonge avec ses livres sa volonté de partager ses connaissances auprès des lecteurs sur la suite MSBI (dont SSAS, Azure et Power BI) ou sur SQL. Elle est certifiée Microsoft Azure Enterprise Data Analyst.