Linux:Requêtes SQL
Un article de Djjnet.
[X] : X est une option
Les requêtes de sélection
SELECT Col1, Col2, Col4 ... FROM Table1;
sélection de colonnes dans la table Table1
- à la place de Col1, Col2... pour toutes les colonnes
SELECT Nom FROM Table1 WHERE Position = 'Manager' AND Salaire >=10000;
sélection conditionnelle : possible d'utiliser OR (même priorités qu'en logique)
...WHERE Position IN ('Manager', 'Staff');
sélection dans une liste
...WHERE Salaire [NOT] BETWEEN 5000 AND 10000;
sélection entre 2 valeurs
... WHERE Nom LIKE '[%]S[%])';
% caractère ou ensemble de caractère quelconque
JOIN
- Clé primaire : est une colonne en un ensemble de colonnes qui identifie de manière unique le reste des données de chaque rangée.
- Clé externe : est une colonne dans une table où cette colonne est une clé primaire dans une autre table
SELECT Nom, Prénom FROM Table1, Table2 WHERE AcheteurID=VendeurID;
équijointure entre les 2 tables pour faire une correspondance entre les ID des acheteurs et des vendeurs.
SELECT Table1. Nom FROM Table1, Table2 WHERE Table1.Nom=Table2.Nom;
utilisation de pointeur lorsque les noms de colonnes sont identiques dans les tables.
SELECT DISTINCT Nom, Prénom ... WHERE ... ORDER BY Nom, Prénom;
DISTINC : enlève les redondances ORDER BY : organisation de l'ordre de la sélection.
SELECT Tb1.Prénom AS "Prénom", Tb2.ObjetDésiré AS "Objet désiré" FROM Table1 Tb1, Table2 Tb2 WHERE Tb1.Nom=Tb2.Nom AND Tb2.ObjetDésiré IN ( SELECT Objet FROM Table3);
AS " " représente le nom donné à la colonne résultant de la requête, Tb1 et Tb2 suivant les noms des tables déclarées après FROM sont des alias à celle-ci, IN (SELECT ...) est une sous-requête.
Diverses Instructions
COUNT(*) Compte le nombre de lignes SUM( ) Somme des éléments de la colonne désignée AVG( ) Moyenne des éléments de la colonne désignée RAND( ) Sélection aléatoire MAX( ), MIN( ) Maximum et minimum des éléments de la colonne désignée CREATE VIEW NomView AS SELECT ...;
Créé une vue (résultat d'une requête) utilisable, comme une table, dans d'autres requêtes.
CREATE TABLE NomTable (NomCol1 TYPE [NOT] NULL [AUTO_INCREMENT] [PRIMARY KEY],...);
Créé une table avec pour colonnes NomCol1, NomCol2... de TYPE :
- CHAR(x) colonne de caractères, x = nb max de caractères
- INTEGER entier positif, négatif ou nul
- DECIMAL(x,y) décimaux, x=nb de chiffres, y=après la virgule
- DATE date spécifique au SGBD
- LOGICAL TRUE ou FALSE
- NOT NULL Ne peut pas avoir de valeur nulle
ALTER TABLE NomTable ADD (NomCol1 TYPE [NOT] NULL [DEFAULT valeur]);
Ajoute une colonne NomCol1 à NomTable
INSERT INTO NomTable [(Col1,Col3,...)] VALUES (x, y,...),(x2,y2,…),…;
Insert les valeurs x, y... à la table, pour insérer dans des colonnes spécifiques les indiquer après le nom de la table.
DELETE FROM NomTable WHERE ...;
Supprime des données de la table selon des critères.
UPDATE NomTable SET Col=y WHERE ... ;
MAJ des données de la colonne Col de la table selon des critères.
DROP TABLE NomTable;
Supprime la table.
CREATE [UNIQUE] INDEX Nom_IDX ON NomTable(Col);
Créé un index sur la colonne Col de la table. UNIQUE : pour empêcher les doublons.
DROP INDEX Nom_IDX;
Supprime l'index.
SELECT ... FROM ... GROUP BY NomCol [HAVING condition] ...;
Groupe selon les valeurs de la colonne, Having : rajoute un critère.
SELECT DISTINT ...;
Pour enlever les redondances.
SELECT ... WHERE Truc condition ALL (SELECT ...);
(ex : Price>= ALL (...); Sélectionne selon la condition utilisée avec toute la sous-requête.
SELECT Col1, Col2 ... WHERE EXISTS (SELECT * FROM ... WHERE ...);
Sélectionne les rangées ayant une correspondance dans la sous-requête.
SELECT Col1, 'commentaire1'... UNION SELECT Col2, 'commentaire2'...;
Union de 2 requêtes, les colonnes doivent être de même type. Les doublons sont automatiquement supprimés. Les commentaires permettent de distinguer les 2 requêtes.
CONCAT(Col1, ' ',Col2) AS "Col1+Col2"
Retourne la concaténation de 2 colonnes
SELECT t1.* FROM t1 LEFT JOIN t2 ON t1.id=t2.id
Permet de récupérer les lignes de valeur nulle de t1
SPOOL nom_fichier.sql
Met les commandes tapées dans un fichier
SPOOL OFF
Arrête l'acion précédente
LOAD DATA LOCAL INFILE "/chemin" INTO TABLE client;
Ajoute les données d'un fichier dans une table
WHERE Col IS NULL
Condition pour choisir une colonne nulle
GROUP BY Col LIMIT x; Limite le résultat à x ligne ORDER BY Col1 DESC, Col2 DESC ; ORDER BY Col1 ASC, Col2 ; GROUP BY Col1 DESC, Col2 DESC ; GROUP BY Col1 ASC, Col2 ;
- DESC permet de trier par ordre décroissant
- ASC permet de trier par ordre croissant
Il faut préciser pour chaque colonne, par défaut c'est l'ordre croissant


