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