SQL
Langage de définition de données
Créer une base de données
CREATE DATABASE nom_bd;
Créer un utilisateur.
CREATE USER nom_user IDENTIFIED BY password;
Créer une table
CREATE TABLE nom_table(
colonne1 type(taille) Contraintes,
colonne2 type,
colonneN type(taille),
...
);
CREATE TABLE nom_table(
colonne1 type(taille),
colonne2 type,
colonneN type(taille),
...,
Contrainte1,
Contrainte2,
...
);
# Contraintes d'intégrité
# PRIMARY KEY (Clé primaire)
# FOREIGN KEY (Clé étrangère)
# UNIQUE (Clé unique)
# NOT NULL (Non null)
# CHECK (Vérification)
SQL 1
# Les types de données
# NUMBER(20,2), INTEGER, VARCHAR2(taille), FLOAT(taille), C
HAR(taille), NCHAR(taille),
# NVARCHAR2(taille), DATE, TIMESTAMP, LONG, BOOLEAN, ENUM
('valeur1','valeur2')
Créer une vue
CREATE VIEW nom_vue AS SELECT colonne1, colonne2, ... ;
Créer un index
CREATE INDEX nom_index ON table(colonne1, colonne2, ...);
Supprimer une base de données
DROP DATABASE nom_base;
Supprimer un utilisateur
DROP USER nom_user;
Supprimer une table
DROP TABLE nom_table;
Supprimer un vue
DROP VIEW nom_view;
Supprimer un index
DROP INDEX nom_index;
Ajouter une colonne dans une table
SQL 2
ALTER TABLE nom_table ADD nom_colonne type(taille) Contrain
te;
Modifier une colonne
ALTER TABLE nom_table MODIFY nom_colonne type(taille) Contr
ainte;
Renommer une colonne
ALTER TABLE nom_table RENAME COLUMN ancienne_nom_colonne TO
nouvelle_nom;
Supprimer une colonne
ALTER TABLE nom_table DROP nom_colonne;
Ajouter une contrainte
ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte Contrai
nte;
Exemple:
ALTER TABLE customers ADD CONSTRAINT pk_id PRIMARY KEY (i
d);
ALTER TABLE orders ADD CONSTRAINT fk_orders_customers_id FO
REIGN KEY (customer_id) REFERENCES customers(id);
ALTER TABLE orders ADD CONSTRAINT fk_orders_customers_id FO
REIGN KEY (customer_id) REFERENCES customers(id) ON DELETE
CASCADE ON UPDATE CASCADE;
ALTER TABLE orders ADD CONSTRAINT fk_orders_customers_id FO
REIGN KEY (customer_id) REFERENCES customers(id) ON UPDATE
RESTRICT ON DELETE RESTRICT;
SQL 3
ALTER TABLE clients ADD CONSTRAINT ux_id UNIQUE (telephon
e);
ALTER TABLE clients ADD CONSTRAINT ck_age UNIQUE (age >= 1
8);
etc...
Supprimer une contrainte
ALTER TABLE nom_table DROP nom_contrainte;
Modifier un utilisateur
ALTER USER username [IDENTIFIED BY new_password] [ACCOUNT L
OCK | ACCOUNT UNLOCK] [DEFAULT TABLESPACE tablespace_name]
[TEMPORARY TABLESPACE tablespace_name] [QUOTA UNLIMITED | i
nteger {K | M | G} ON tablespace_name];
Obtenir la structure d’une table, d’une vue, d’une procédure, d’une fonction
DESCRIBE nom_objet;
Vider une table
TRUNCATE TABLE nom_table;
Langage de contrôle de données
Accorder des droits ou privilèges à un utilisateur
GRANT privilege_systeme TO utilisateur;
GRANT privilege_objet ON nom_objet TO utilisateur;
GRANT CONNECT TO nom_user; # De se connecter
GRANT CREATE SESSION TO nom_user; # De créer une session
SQL 4
GRANT CREATE TABLE TO nom_user; # De créer une table
GRANT CREATE VIEW TO nom_user; # De créer une vue
GRANT CREATE SEQUENCE TO nom_user; # De créer une séquence
GRANT CREATE PROCEDURE TO nom_user; # De créer une procédur
e
GRANT CREATE TRIGGER TO nom_user; # De créer un trigger
GRANT CREATE USER TO nom_user; # De créer un utilisateur
Révoquer les droits
REVOKE privilege_systeme FROM utilisateur;
REVOKE privilege_objet ON nom_objet FROM utilisateur;
Langage de manipulation de données
Insérer une ligne de données
INSERT INTO nom_table VALUES(valeur1, valeur2, ...); # Suiv
re l'ordre des colonnes pour l'insertion des valeurs
INSERT INTO nom_table(col1, col2, ...) VALUES(valeur1, vale
ur2, ...);
Modifier une ligne de données
UPDATE nom_table
SET col1 = nouvelle_valeur1, col2 = nouvelle_valeur2, …, co
lN = nouvelle_valeurN
WHERE conditions;
Supprimer une ligne de données
DELETE FROM nom_table;
DELETE FROM nom_table
WHERE condition;
SQL 5
Lister ou sélectionner
Basique
SELECT colonne1, colonne2, ...
FROM nom_table;
DISTINCT
SELECT DISTINCT colonne1, colonne2, ...
FROM nom_table;
AS (Alias)
SELECT colonne1 AS c1, colonne2, ...
FROM nom_table AS tb;
WHERE
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE conditions;
AND et OR
SQL 6
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE condition1 AND condition2;
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE condition1 OR condition2;
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE condition1 AND (condition2 OR condition3);
IN
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE colonne2 IN (valeur1, valeur2, ...);
BETWEEN
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE colonne1 BETWEEN valeur1 AND valeur2;
LIKE
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE colonne1 LIKE modele;
SQL 7
IS NULL / IS NOT NULL
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE colonne1 IS NULL / IS NOT NULL;
GROUP BY
SELECT colonne1, colonne2, ..., function(colonne)
FROM nom_table
GROUP BY colonne1, colonne2, ...;
HAVING
SELECT colonne1, colonne2, ..., function(colonne)
FROM nom_table
GROUP BY colonne1, colonne2, ...;
HAVING function(colonne) operateur valeur;
ORDER BY
SQL 8
SELECT colonne1, colonne2, ...
FROM nom_table
ORDER BY colonne1;
SELECT colonne1, colonne2, ...
FROM nom_table
ORDER BY colonne1 DESC;
SELECT colonne1, colonne2, ...
FROM nom_table
ORDER BY colonne1 ASC;
SELECT colonne1, colonne2, ...
FROM nom_table
ORDER BY colonne1 DESC, colonne2 ASC;
CASE
CASE
WHEN a = b THEN 'A égal à B'
WHEN a > b THEN 'A supérieur à B'
ELSE 'A inférieur à B'
END
CASE
WHEN a = 1 THEN 'un'
WHEN a = 2 THEN 'deux'
WHEN a = 3 THEN 'trois'
ELSE 'autre'
END
SELECT colonne1, CASE
WHEN colonne2 =
1 THEN 'un'
WHEN colonne2 =
2 THEN 'deux'
WHEN colonne2 =
3 THEN 'trois'
SQL 9
ELSE 'autre'
END AS nom_alias
FROM nom_table;
UNION
SELECT colonne1, colonne2 FROM nom_table1
UNION
SELECT colonne1, colonne2 FROM nom_table2
INTERSECT
SELECT colonne1, colonne2 FROM nom_table1
INTERSECT
SELECT colonne1, colonne2 FROM nom_table2
Jointure (INNER JOIN)
SELECT colonnes
FROM nom_table1
JOIN nom_table2 ON nom_table1.id = nom_table2.fk_id;
Jointure (RIGHT JOIN)
SELECT colonnes
FROM nom_table1
RIGHT JOIN nom_table2 ON nom_table1.id = nom_table2.fk_i
d;
Jointure (LEFT JOIN)
SELECT colonnes
FROM nom_table1
LEFT JOIN nom_table2 ON nom_table1.id = nom_table2.fk_i
d;
Requêtes impriquées
SQL 10
SELECT *
FROM nom_table1
WHERE nom_colonne = (
SELECT colonne
FROM nom_table2
WHERE conditions
);
SELECT *
FROM nom_table1
WHERE nom_colonne IN (
SELECT colonne
FROM nom_table2
WHERE conditions
);
SQL 11