16/11/2018
SQL: LANGAGE DE REQUÊTE STRUCTURÉ SOUS – LANGAGES SQL
○ Le langage SQL (Structured Query Language ) se subdivise en 3 sous langages:
– Langage de Contrôle de Données – LCD
- Gestion des protections d’accès
– Langage de Définition des Données – LDD
- Création, modification et suppression des structures des différents objets de la base (table, vue, …)
– Langage de Manipulation des Données – LMD
- Ajout, modification, suppression et interrogation des données de la base
Le langage de définition des données (LDD) CREATE
ALTER
DROP
Le langage de manipulation des données (LMD) SELECT
INSERT
UPDATE
DELETE
Le langage de contrôle des données (LCD)
GRANT
REVOKE
COMMIT
ROLLBACK
16/11/2018
LDD
○ Le LDD est le langage de définition de données (DDL en anglais).
○ Il permet de – – Créer Créer des des tables tables par par l’instruction l’instruction CREATE CREATE TABLE – Modifier la STRUCTURE (et non le contenu) des
TABLES avec ALTER TABLE – Supprimer une table avec DROP TABLE.
TYPES DE DONNÉES SQL
○ Les principaux types autorisés sont :
CRÉATION DE TABLES: CREATE TABLE
○ Syntaxe:
CRÉATION DE TABLES: CREATE TABLE
○ Exemple
CRÉATION DE TABLES: CONTRAINTES D’INTÉGRITÉ
○ Une contrainte d’intégrité est une règle qui permet d’assurer la validité (cohérence) des données stockées dans une base.
○ ○ Le Le SGBD SGBD contrôle contrôle les les contraintes contraintes d’intégrité d’intégrité à à chaque modification dans les tables (saisies, modification ou suppression).
○ Une contrainte d’intégrité peut se définir au moment de la création d’une table
CRÉATION DE TABLES: CONTRAINTES D’INTÉGRITÉ
○ Les différentes contraintes que l’on peut définir sont : – non nullité (obligation) : NOT NULL
La colonne ne peut pas contenir de valeurs NULL.
– – unicité unicité : : UNIQUE UNIQUE Toutes les valeurs de la (des) colonnes doivent être différentes ou NULL
– clé primaire : PRIMARY KEY
Chaque ligne de la table doit avoir une valeur différente pour la ou les colonnes qui font partie de la clé primaire. Les valeurs NULL sont rejetées. primary key = unique + not null
CRÉATION DE TABLES: CONTRAINTES D’INTÉGRITÉ
– valeur par défaut : DEFAULT
Permet de spécifier une valeur par défaut à la colonne (dans le cas où aucune valeur n’est explicitement donnée)
– intégrité intégrité de de domaine domaine : : CHECK CHECK Permet de spécifier les valeurs acceptables pour une colonne.
– intégrité référentielle (clé étrangère) : FOREIGN KEY
Cette colonne fait référence à une colonne clé d’une autre table.
CONTRAINTES D’INTÉGRITÉ SUR UNE COLONNE OU UNE TABLE
○ Les contraintes peuvent concerner soit une seule colonne, soit une table toute entière.
○ Les contraintes de colonne s’écrivent tout simplement simplement après après la la colonne colonne à à laquelle laquelle elles elles se se rapportent.
AVANTAGE DES CONTRAINTES D’INTÉGRITÉ
☹ Au lieu de coder (programmer) les différentes vérifications à effectuer lors de la saisie, la suppression et la modification de données, ce qui est est très très contraignant contraignant et et de de plus plus peu peu sûr, sûr,
☺ la majorité des SGBD prennent en charge la
vérification des contraintes d’intégrité.
MODIFICATION D’UNE TABLE: ALTER TABLE
○ Ajouter une ou plusieurs colonne
○ On peut ajouter plusieurs colonnes en les séparant par des virgules dans les parenthèses du ADD
MODIFICATION D’UNE TABLE: ALTER TABLE
○ Modifier le type ou tout autre propriété d’une colonne
○ Exemple:
SUPPRIMER UNE TABLE: DROP TABLE
○ Syntaxe:
○ Exemple: Exemple:
RENOMMER UNE TABLE: RENAME TABLE
○ Syntaxe:
○ Exemple: Exemple:
16/11/2018
LMD
○ Le LMD est le langage de manipulation de données, et inclut les deux parties suivantes:
○ Modification de données
ó les données peuvent être insérées, effacées ou mises à jour ó ó les les opérations opérations de de modification modification de de données données utilisent utilisent les les mots mots clés INSERT, DELETE, UPDATE
○ Récupération/Interrogation de données
ó les opérations de récupération de données parcourent la base de données, recherchent les informations demandées
et les affichent ó toutes les requêtes de recherche sont exprimées à l’aide du
mot clé SELECT
16/11/2018
INSERTION DE LIGNE: INSERT INTO
○ Syntaxe (Première forme):
→ On On indique indique explicitement explicitement le le nom nom des des colonnes colonnes qu’on veut valoriser, et on indique les valeurs dans le même ordre.
○ Exemple:
SUPPRESSION DE LIGNE: DELETE FROM
○ DELETE permet de supprimer une ou plusieurs lignes, qui vérifie(nt) une condition.
○ Syntaxe:
○ Exemple:
MODIFICATION DE LIGNE: UPDATE…SET
○ Modifier la valeur d’une colonne pour une ou plusieurs lignes en particulier (qui vérifie(nt) un critère)
○ ○ Syntaxe: Syntaxe:
○ Exemple:
REQUÊTE DE RECHERCHE : SELECT
○ La principale commande du langage de manipulation de données est la commande SELECT.
○ ○ La La commande commande SELECT SELECT est est basée basée sur sur l’algèbre l’algèbre relationnelle.
○ Syntaxe: SELECT [ALL] | [DISTINCT] <liste des noms de colonnes> FROM <Liste des tables> [WHERE <condition logique>]
REQUÊTE DE RECHERCHE : SELECT
○ La liste des noms de colonnes indique la liste des colonnes choisies, séparées par des virgules. Lorsque l’on désire sélectionner l’ensemble des colonnes d’une table il n’est pas nécessaire de saisir la liste de ses colonnes, l’option * permet de réaliser cette tâche
○ La liste des tables indique l’ensemble des tables (séparées par des virgules) sur lesquelles on opère
○ La condition logique permet d’exprimer des qualifications complexes à l’aide d’opérateurs logiques et de comparateurs arithmétiques
REQUÊTE DE RECHERCHE : SELECT
○ Il existe d’autres options pour la commande SELECT: GROUP BY HAVING ORDER BY
○ L’option ALL est, par opposition à l’option DISTINCT, l’option par défaut. Elle permet de sélectionner l’ensemble des lignes satisfaisant à la condition logique
○ L’option DISTINCT permet de ne conserver que des lignes distinctes, en éliminant les doublons
REQUÊTE DE RECHERCHE : SELECT
SELECT * FROM T_Customer;
Customer_ID Customer_Name Customer_address City State Postal_Code ——————————————————————————————– 1 1 Contemporary Contemporary Casuals Casuals 1355 1355 S. S. Hines Hines Blvd. Blvd. Gainsville Gainsville FL FL 32601 32601 2 Value Furniture 15145 S.W. 17th St. Plano TX 75094 3 Home Furnishings 1900 Allard Ave. Albany NY 12209 4 Eastern Furniture 1925 Beltline Rd. Carteret NJ 7008 5 Impressions 5585 Westcott Ct. Sacramento CA 94206 6 Furniture Gallery 325 Flatiron Dr. Boulder CO 80514 7 Period Furnishings 394 Rainbow Dr. Seattle WA 97954 8 California Classics 816 Peach Rd. Santa Clara CA 96915 9 M & H Casual Furniture 3709 First Street Clearwater FL 34620 10 Seminole Interiors 2400 Rocky Point Dr. Seminole FL 34646 11 American Euro Lifestyles 2424 Missouri Ave. N. Prospect Park NJ 7508 12 Battle Creek Furniture 345 Capitol Ave. SW Battle Creek MI 49015 13 Heritage Furnishings 66789 College Ave. Carlisle PA 17013 14 Kaneohe Homes 112 Kiowai St. Kaneohe HI 96744 15 Mountain Scenes 4132 Main Street Ogden UT 84403
ORDRE ET CHOIX DES COLONNES CLAUSE SELECT
SELECT customer_name, city FROM T_Customer;
customer_name city ————————- ————— Contemporary Casuals Gainsville Value Value Furniture Furniture Plano Plano Home Furnishings Albany Eastern Furniture Carteret Impressions Sacramento Furniture Gallery Boulder Period Furnishings Seattle California Classics Santa Clara M & H Casual Furniture Clearwater Seminole Interiors Seminole American Euro Lifestyles Prospect Park Battle Creek Furniture Battle Creek Heritage Furnishings Carlisle Kaneohe Homes Kaneohe Mountain Scenes Ogden
ORDRE DES LIGNES: CLAUSE ORDER BY
SELECT customer_name, city FROM T_Customer ORDER BY customer_name;
customer_name city ————————- ————– American Euro Lifestyles Prospect Park
SELECT customer_name, city FROM T_Customer ORDER BY city;
customer_name city ————————– —————- American Euro Lifestyles Prospect Park
Home Home Furnishings Furnishings Albany Albany Battle Creek Furniture Battle Creek
Battle Creek Furniture Battle Creek California Classics Santa Clara
Furniture Gallery Boulder Contemporary Casuals Gainsville
Heritage Furnishings Carlisle Eastern Furniture Carteret
Eastern Furniture Carteret Furniture Gallery Boulder
M & H Casual Furniture Clearwater Heritage Furnishings Carlisle
Contemporary Casuals Gainsville Home Furnishings Albany
Kaneohe Homes Kaneohe Impressions Sacramento
Mountain Scenes Ogden Kaneohe Homes Kaneohe
Value Furniture Plano M & H Casual Furniture Clearwater
American Euro Lifestyles Prospect Park Mountain Scenes Ogden
Impressions Sacramento Period Furnishings Seattle
California Classics Santa Clara Seminole Interiors Seminole
Period Furnishings Seattle Value Furniture Plano
Seminole Interiors Seminole
FONCTIONS ENSEMBLISTES
○ COUNT
ó COUNT(*)
○ compte toutes les lignes ó COUNT(nom-attribut)
○ compte compte les les lignes lignes où où l’attribut l’attribut n’a n’a pas pas la la valeur valeur nulle nulle
○ MIN, MAX
○ s’applique aux valeurs numériques ou alphanumériques
○ SUM, AVG
○ s’appliquent aux valeurs numériques
FONCTIONS ENSEMBLISTES COUNT
SELECT product_id, product_name, product_description FROM T_Product ;
Product_ID Product_Name Product_Description ———– ——————— ——————- 1 End Table 2 Coffee Table 3 Computer Desk Computer Desk 48 4 Entertainment Center
5 Writer’s Desk 6 8-Drawer Desk 7 Dining Table 8 Computer Desk Computer Desk 64
SELECT COUNT(*)
SELECT COUNT(product_description) FROM T_Product ;
FROM T_Product ;
COUNT(*)
COUNT(product_description) ——–
————————– 8
2
FONCTIONS ENSEMBLISTES MIN, MAX
SELECT MIN(unit_price), MAX(unit_price) FROM T_Product ;
MIN(unit_price) MAX(unit_price) ————— ————— ———— ———— 175,00 800,00
SELECT MAX(order_date) FROM T_Order;
MAX(order_date) ————– 05/11/1998
FONCTIONS ENSEMBLISTES SUM, AVG
SELECT SUM(on_hand*unit_price) FROM T_Product;
11 150.00
SELECT AVG(unit_price) FROM T_Product;
440.63
OPÉRATEURS DE COMPARAISON
○ Format : Expression 1 Op Expression 2
○ =, <, >, <=, >=, <>, → SELECT * FROM COMMANDE WHERE NO_VENDEUR <> 9;
○ BETWEEN → SELECT * FROM COMMANDE WHERE MONTANT BETWEEN 100 AND 200;
○ IS NULL → SELECT COUNT(product_id) FROM T_Product WHERE product_description IS NULL;
OPÉRATEURS DE COMPARAISON: OPERATEUR LIKE
○ Le caractère % remplace n’importe quel nombre de n’importe quels caractères. Il remplace 0 à n caractères
○ ○ Le Le caractère caractère _ _ remplace remplace n’importe n’importe quel quel caractère. caractère. Il remplace 1 caractère
product_id product_name SELECT product_id, product_name FROM T_Product WHERE product_name LIKE ‘%Desk%‘
———- ————- 3 Computer Desk 5 Writer’s Desk 6 8-Drawer Desk 8 Computer Desk
OPÉRATEURS LOGIQUES
○ AND
○ NOT
○ OR
REGROUPEMENT CLAUSE GROUP BY
○ La clause GROUP BY divise une table en groupes de lignes.
○ Utilisée avec une fonction dans la clause SELECT, la requête fournit des informations sur le le groupe groupe
groupe 1
groupe 2
groupe 3
groupe 4
TABLE COMMANDE
SELECT * FROM COMMANDE;
NO_C NO_CLIENT DATE_COM NO_VENDEUR MONTANT ———- ———- ——– ———- ———- 261 261 1233 1233 96-05-13 96-05-13 687 687 132,33 132,33 262 4333 96-05-15 132 32,35 263 4436 96-05-20 132 100 264 1233 96-05-22 455 225,1 265 1233 96-05-30 455 144,73 266 4333 96-05-31 687 137,98 267 1233 96-06-04 455 123,45 268 5026 96-06-07 687 44,32 269 4333 96-06-30 754 122,1 270 5026 96-07-01 455 100
REGROUPEMENT REQUÊTE SIMPLE
SELECT NO_CLIENT, SUM(MONTANT) FROM COMMANDE GROUP BY NO_CLIENT ;
NO_CLIENT SUM(MONTANT) ——— ———— 1233 625,61 4333 292,43 4436 100 5026 144,32
REGROUPEMENT CLAUSE HAVING
○ La clause GROUP BY divise une table en groupes de lignes.
○ La clause HAVING permet de sélectionner des groupes.
groupe 1
groupe 2
groupe 3
groupe 4
télécharger gratuitement cours de SQL (Structured Query Language )