SQL POUR MYSQL
MySQL
•Système de gestion de base de données relationnelle (SGBDR) open source.
•Construit sur le langage SQL pour stocker, gérer et interroger les données.
SQL (Structured Query Language)
•Langage standard pour interagir avec les bases de données relationnelles.
•Utilisé pour effectuer des opérations comme :
• Création et modification de bases de données et de tables.
• Insertion, mise à jour et suppression de données.
• Requête et extraction de données spécifiques.
TYPES DE COMMANDES
Les commandes SQL sont regroupées en plusieurs catégories:
1. DDL (Data Definition Language) - Langage de Définition des Données
2. DML (Data Manipulation Language) - Langage de Manipulation des
Données
3. DCL (Data Control Language) - Langage de Contrôle des Données
4. TCL (Transaction Control Language) - Langage de Contrôle des
Transactions
5. DQL (Data Query Language) - Langage de Requête des Données
SQL POUR MYSQL
Mise en garde:
Sur MYSQL distribution Xampp il faut mettre en commentaire la ligne suivante
sur le fichier de configuration de mysql [Link] pour activer le mode strict qui prend
en charge l’ensemble des contraintes nottaement la contrainte not null
#sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
LMD, LDD, LRD
LMD
INSERT : Insérer une ou plusieurs lignes
UPDATE : Modifier une ou plusieurs lignes existantes
DELETE : Supprimer une ou plusieurs lignes d’une base de données
LDD
CREATE : Créer des objets dans la base de données (Ex : table)
ALTER : Modifier la structure d’un objet existant d’une base de données
DROP : Supprimer un objet d’une base de données
LRD
SELECT : Extraire les données d’une ou plusieurs tables
LCD,LCT
LCD
GRANT : Accorder un ou plusieurs droits à un ou plusieurs utilisateurs
REVOKE : Retirer un ou plusieurs droit à un ou plusieurs utilisateurs
LCT
COMMIT :Valider une transaction
ROLLBACK : Annuler une transaction et revenir à l’état précédent
SAVEPOINT : Créer un point de sauvegarde dans une transaction
CREATE
CREATE DATABASE IF NOT EXISTS GestionEmployes
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
CHARACTER (optionnel)
Spécifie le jeu de caractères par défaut utilisé pour stocker les données
COLLATE (optionnel)
Définit le classement des caractères, influençant la façon dont les données sont
triées, la valeur utf8mb4_general_ci pour une insensibilité à la casse
CREATE
CREATE TABLE nom_table
(
nom_colonne1 TYPE_DONNEE [CONTRAINTE],
nom_colonne2 TYPE_DONNEE [CONTRAINTE],
...
nom_colonneN TYPE_DONNEE [CONTRAINTE]
);
CREATE TABLE Employes
(
ID INT PRIMARY KEY,
Nom VARCHAR(50) NOT NULL,
Poste VARCHAR(50),
Salaire DECIMAL(10, 2) DEFAULT 0.00
);
CREATE
CREATE TABLE nom_table
(
nom_colonne1 TYPE_DONNEE,
nom_colonne2 TYPE_DONNEE,
...
nom_colonneN TYPE_DONNEE,
CONSTRAINT nom_contrainte1 TYPE_CONTRAINTE (colonne_concernee),
CONSTRAINT nom_contrainte2 TYPE_CONTRAINTE (colonne_concernee1)
);
CREATE TABLE Employes
( ID INT,
EMAIL VARCHAR(50),
CONSTRAINT pk_employes PRIMARY KEY (ID),
CONSTRAINT unq_Email UNIQUE (EMAIL)
);
CREATE
CREATE TABLE nom_table
(
nom_colonne1 TYPE_DONNEE,
nom_colonne2 TYPE_DONNEE,
...
nom_colonneN TYPE_DONNEE,
CONSTRAINT nom_contrainte1 TYPE_CONTRAINTE (colonne_concernee),
CONSTRAINT nom_contrainte2 TYPE_CONTRAINTE (colonne_concernee1)
);
CREATE TABLE Employes
( ID INT,
EMAIL VARCHAR(50),
CONSTRAINT pk_employes PRIMARY KEY (ID),
CONSTRAINT unq_nom UNIQUE (EMAIL)
);
TYPES DE DONNÉES, CONTRAINTES
Les Types de données :
Les entiers : Int,Smallint,Bigint…
Les réel : Float,Double…
Les dates : Date,Time, Datetime, Timestamp…
Les Strings : Char,Varchar,Text , Blob, Enum..
Les contraintes
Not null
Primary key
Default
Unique
Check
Foreign key
ALTER
ALTER TABLE nom_table
[ADD COLUMN nom_colonne TYPE_DONNEE [CONTRAINTE]]
[DROP COLUMN nom_colonne]
[MODIFY COLUMN nom_colonne TYPE_DONNEE [CONTRAINTE]]
[RENAME COLUMN ancien_nom_colonne TO nouveau_nom_colonne]
[ADD CONSTRAINT nom_contrainte TYPE_CONTRAINTE (nom_colonne)]
[DROP CONSTRAINT nom_contrainte]
[RENAME TO nouveau_nom_table];
ALTER
Ajout d’une colonne :
Synaxe
ALTER TABLE nom_table ADD COLUMN nouvelle_colonne TYPE_DONNEE
[CONTRAINTE];
Exemple
ALTER TABLE Employes ADD COLUMN age INT;
Supprimer une colonne
Synatxe :
ALTER TABLE nom_table DROP COLUMN nom_colonne;
Exemple :
ALTER TABLE Employes DROP COLUMN age;
ALTER
Modifier le type de données d'une colonne
Syntaxe :
ALTER TABLE nom_table MODIFY COLUMN nom_colonne
NOUVEAU_TYPE_DONNEE [CONTRAINTE];
Exemple :
ALTER TABLE Employes MODIFY COLUMN age SMALLINT;
Renommer une colonne
Syntaxe:
ALTER TABLE nom_table RENAME COLUMN ancien_nom_colonne TO
nouveau_nom_colonne;
Exemple
ALTER TABLE Employes RENAME COLUMN age TO age_Emp;
ALTER
Ajouter une contrainte
Syntaxe :
ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte
TYPE_CONTRAINTE (nom_colonne);
Exemple:
ALTER TABLE Employes ADD CONSTRAINT pk_employe_id PRIMARY KEY (ID);
Supprimer une contrainte
Syntaxe:
ALTER TABLE nom_table DROP CONSTRAINT nom_contrainte;
Exemple:
ALTER TABLE Employes DROP CONSTRAINT pk_employe_id;
CONTRAINTES
Contrainte primary key
Définir la contrainte avec CREATE
Create table clients(id int primary key, nom varchar(20))
ou
Create table clients
(id int, nom varchar(20), contraint pk_id_clients primary key (id))
Ajouter la contrainte primary key
Alter table clients add constraint pk_id_clients primary key (id)
Supprimer la contrainte primary key
Alter table client drop constraint pk_id_clients
CONTRAINTES
Contrainte unique
Définir la contrainte avec CREATE
Create table clients(id int primary key, Email varchar(20) unique)
ou
Create table clients
(id int, Email varchar(20), contraint Uq_Email_clients unique (Email))
Ajouter la contrainte unique
Alter table clients add constraint Uq_Email_clients unique (Email)
Supprimer la contrainte unique
Alter table client drop constraint Uq_Email_clients
CONTRAINTES
Contrainte check
Définir la contrainte avec CREATE
Create table clients(id int primary key,Salaire float check(salaire >3600))
ou
Create table clients
(id int, Salaire float, contraint Ck_Salaire_clients check (Salaire>3600))
Ajouter la contrainte check
Alter table clients add constraint Ck_Salaire_clients check (Salaire>3600)
Supprimer la contrainte check
Alter table client drop constraint Ck_Salaire_clients
CONTRAINTES
Contrainte default
Définir la contrainte avec CREATE
Create table clients(id int primary key,Ville varchar(20) default ‘casa’)
Ajouter la contrainte default
ALTER TABLE clients MODIFY COLUMN Ville varchar(20) DEFAULT ‘casa’;
Ou
ALTER TABLE clients ALTER COLUMN Ville SET DEFAULT ‘casa’;
Supprimer la contrainte check
alter table clients alter COLUMN Ville drop DEFAULT;
CONTRAINTES
Contrainte not null
Définir la contrainte avec CREATE
Create table clients(id int primary key, nom varchar(20) not null)
Ajouter la contrainte not null
alter table clients modify column nom varchar(20) not null
Ou
alter table clients alter COLUMN nom varchar(20) not null;
Supprimer la contrainte check
alter table clients alter COLUMN nom varchar(20) null;
Ou
ALTER TABLE clients MODIFY COLUMN Nom varchar(20) NULL;
CONTRAINTES
Contrainte foreign key
Définir la contrainte avec CREATE
create table employés (matricule int primary key, nom varchar(20),
prénom varchar(20),codedept varchar(8),
constraint fk_employés_departements foreign key (codedept) references
departement(codedept));
Ajouter la contrainte foreign key
alter table employés add constraint fk_employés_departements foreign key
(codedept) references departement(codedept);
Supprimer la contrainte foreign key
alter table employés drop constraint fk_employés_departements ;
DROP
DROP DATABASE [IF EXISTS] nom_base_de_donnees;
DROP DATABASE IF EXISTS GestionEmployes;
DROP TABLE [IF EXISTS] nom_table;
DROP TABLE IF EXISTS Employes;
INSERT
Insertion d’une ligne
Syntaxe:
INSERT INTO nom_table (colonne1, colonne2, ..., colonneN)
VALUES (valeur1, valeur2, ..., valeurN);
Exemple:
INSERT INTO Employes (ID, Nom, Poste, Salaire) VALUES (1, 'Dupont',
'Développeur', 3500.00);
Insertion d’une ligne avec toutes les colonnes
INSERT INTO nom_table
VALUES
(valeur1a, valeur2a, ..., valeurNa)
INSERT
Insertion de plusieurs lignes
Syntaxe:
INSERT INTO nom_table
(colonne1, colonne2, ..., colonneN)
VALUES
(valeur1a, valeur2a, ..., valeurNa),
(valeur1b, valeur2b, ..., valeurNb), ...;
I
nsertion à partir d’une sélection
Syntaxe :
INSERT INTO table_cible (colonne1, colonne2, ..., colonneN)
SELECT colonneA, colonneB, ..., colonneN FROM
table_source [WHERE condition];
UPDATE
Mise à jour de données
Syntaxe:
UPDATE nom_table
SET colonne1 = valeur1, colonne2 = valeur2, ...
[WHERE condition];
Exemple 1 :
UPDATE Employes
SET Salaire = 3800.00
WHERE Poste = 'Développeur’;
Exemple 2 :
PDATE Employes SET Salaire = Salaire * 1.05;
DELETE
Supprimer des lignes
Syntaxe:
DELETE FROM nom_table [WHERE condition];
Exemple 1 :
DELETE FROM Employes WHERE Poste = 'Technicien’;
Exemple 2 :
DELETE FROM Employes;
TRUNCATE TABLE Employes;
NB! : La commande Truncate supprime toutes les lignes de la table, qu’on peut pas utiliser avec la clause
where (plus rapide que delete car elle ne déclenche pas de trigger de suppression)
SELECT
Commande Select
Syntaxe :
SELECT [DISTINCT] colonne1, colonne2, ..., colonneN
FROM nom_table
[WHERE condition]
[GROUP BY colonne]
[HAVING condition]
[ORDER BY colonne [ASC|DESC]]
[LIMIT n [OFFSET m]];
SELECT
Exemple :
SELECT DISTINCT Poste, AVG(Salaire) AS SalaireMoyen
FROM Employes
WHERE Departement = 'IT’
GROUP BY Poste
HAVING AVG(Salaire) > 3500
ORDER BY SalaireMoyen DESC
INDEX
Les index en SQL sont des structures de données qui améliorent la rapidité des
opérations de recherche dans une table. Un index fonctionne comme un index dans
un livre, facilitant l'accès direct aux données sans avoir à lire toutes les lignes d'une
table. Cependant, les index augmentent la taille de la base de données et peuvent
ralentir les opérations d'insertion, de mise à jour ou de suppression.
Syntaxe :
CREATE INDEX nom_index
ON nom_table (colonne1 [ASC|DESC]);
Exemple:
CREATE INDEX idx_nom ON Employes (Nom);
INDEX
Créer un index sur plusieurs colonnes (index composite)
Les index composites permettent de créer un index sur plusieurs colonnes, ce qui
peut être utile pour des requêtes combinant plusieurs colonnes dans les conditions
Syntaxe:
CREATE INDEX nom_index ON nom_table (colonne1 [ASC|DESC], colonne2
[ASC|DESC], ...);
Exemple:
CREATE INDEX idx_nom_poste ON Employes (Nom, Poste);
INDEX
Un index unique garantit que toutes les valeurs de la colonne indexée sont uniques,
empêchant ainsi les doublons.
Syntaxe:
CREATE UNIQUE INDEX nom_index
ON nom_table (colonne);
Exemple:
CREATE UNIQUE INDEX idx_email_unique ON Employes (Email);
INDEX
Les index FULLTEXT sont spécifiques aux recherches de texte. Ils permettent
d’effectuer des recherches en texte intégral sur de grandes quantités de texte et
plus efficace qu’un index normal pour la recherche approximative avec la clause like
Syntaxe:
CREATE FULLTEXT INDEX nom_index ON nom_table (colonne);
Exemple:
CREATE FULLTEXT INDEX idx_description ON Articles (Description);
INDEX
Supprimer un index
Syntaxe:
DROP INDEX nom_index ON nom_table;
Exemple :
DROP INDEX idx_nom ON Employes;
VIEW
Les vues (Views)
Une vue en SQL est une table virtuelle qui permet de simplifier l'accès aux données.
Elle est constituée d'une requête SQL qui génère un ensemble de résultats
dynamiquement. Contrairement à une table réelle, une vue ne stocke pas
directement les données, mais plutôt une requête qui est exécutée à chaque fois que
la vue est utilisée.
Les vues sont très utiles pour simplifier des requêtes complexes, sécuriser l'accès à
des données sensibles, et masquer des détails de la structure de la base de données.
Syntaxe:
CREATE VIEW nom_vue (alias1,alias2,…,aliasN) AS
SELECT colonne1, colonne2 , ..., colonneN
FROM nom_table
[WHERE condition]
[GROUP BY colonne]
[HAVING condition]
VIEW
Exemple de vue :
CREATE VIEW V_Employes AS
SELECT Nom, Poste, Salaire
FROM Employes
Where Salaire >8000
Interroger la vue
Select * from V_Employes;
Supprimer une vue :
Drop view Nom_vue
VIEW
La clause WITH CHECK OPTION
La clause with check option permet de garantir que les données à insérer ou à
modifier à partir de la vue respectent la cohérence de la vue
CREATE [OR REPLACE VIEW] view_name
AS
select_statement
WITH CHECK OPTION;
NB! On peut insérer, modifier et supprimer les données à partir d’une vue a
condition que la requête respecte les contraintes de la table et la cohérence de la
vue