Ma fiche pour SQL


Soyez conscients qu'il ne s'agit pas d'une liste exhaustive.

Permalien pour la section Concepts-clés Concepts-clés

Structured Query Language (SQL) C'est le langage le plus utilisé pour gérer des données dans des bases. Facile à apprendre, déclaratif, et pratique pour manipuler des datasets.
SQL pour faire quoi? SQL peut être bénéfique pour éxecuter des requêtes, créer des schémas de données, manipuler des enregistrements, et récupérer des données. C'est souvent associé à un langage de programmation pour propulser des applications.
PostgreSQL C'est un système de gestion de base de données relationnelles orienté objet.
MySQL C'est le système le plus populaire pour gérer des bases relationnelles. Cela fonctionne comme un serveur et vous pouvez créer des bases et donner l'accès à de multiples utilisateurs.
Colonnes vs. lignes Dans une base de données, toutes les informations sont stockées dans des tables. Les colonnes sont des attributs spécifiques qui permettent de grouper des données (ex: id, first_name, last_name, age). Les lignes sont les données enregistrées (ex: 1001001, Kobe, Bryant, 37):
idfirst_namelast_nameage
1001001KobeBryant37
Vues Une vue est une table virtuelle basée sur le résultat d'une requête SQL. C'est très pratique pour lancer des requêtes avancées à partir de résultats pré-triés.
ACID vs. BASE ACID signifie "atomicity, consistency, isolation, and durability", et BASE veut dire “Basically Available, soft state and eventual consistency”. Chaque approche a ses avantages et ses inconvénients par rapport à ce que vous souhaitez faire.
NoSQL Le modèle NoSQL part du principe que toutes les applications n'ont pas besoin d'une base relationnelle. Redis, Elasticsearch ou MongoDB sont des bons exemples de sytèmes NoSQL.

Permalien pour la section Opérateurs logiques Opérateurs logiques

AND Conditions multiples dans des clauses WHERE qui sont toutes vérifiées.
OR Conditions multiples dans des clauses WHERE dont au moins une est vérifiée.
LIKE Comparer une valeur à des valeurs similaires en utilisant l'opérateur wildcard.
BETWEEN Rechercher entre des valeurs minimum et maximum.
EXISTS Rechercher si une ligne existe dans une table.
IN Déterminer si une valeur est validée par une liste de valeurs littérales spécifiques.
NOT Prendre le négatif d'un opérateur logique (ex: NOT EXISTS, NOT BETWEEN, NOT IN, and so on).

Permalien pour la section Opérateur de comparaison Opérateur de comparaison

= Égal.
!= Non égal.
<> Non égal.
> Plus grand que.
>= Égal ou plus grand que.
< Moins grand que.
<= Moins grand que ou égal.
!> Pas plus grand que.
!< Pas moins grand que.

Permalien pour la section Basic commands Basic commands

Créer une base
CREATE DATABASE my_database;
Créer une table
CREATE TABLE my_table (
  my_column my_column_definition, 
  other_column other_column_definition, 
);
Modifier une table
ALTER TABLE my_table 
ADD my_column my_column_definition;
Vider une table
TRUNCATE my_table;
Sélectionner des données dans une table
SELECT my_column 
FROM my_table;
Sélectionner des données de manière conditionnelle
SELECT my_column, other_column
FROM my_table
WHERE my_column = some_value
AND other_column = other_value;
Insérer des données dans une table
INSERT INTO my_table (my_column, other_column) 
VALUES (my_value, other_value);
Mettre à jour des données dans une table
UPDATE my_table
SET my_column = my_value
WHERE other_column = other_value;
Supprimer une table
DROP my_table;
Supprimer des données dans une table
DELETE FROM my_table
WHERE CONDITION;
CONDITION est souvent un test d'égalité, de supériorité, d'infériorité, etc.
Faire des alias
SELECT my_column AS 'mycol'
FROM my_table;
Compter des éléments
SELECT COUNT(my_column)
FROM my_table;

Permalien pour la section Des commandes un peu plus fifou Des commandes un peu plus fifou

Sélectionner sans doublons
SELECT DISTINCT id FROM Players;
Faire la somme des valeurs dans la colonne
SELECT SUM(salary) FROM Players;
Trier des données
SELECT last_name, age FROM Players
GROUP BY age ORDER BY last_name;
Sélectionner des données non égales à
SELECT first_name, last_name FROM Players WHERE age <> 42;
Créer une vue
CREATE VIEW my_view AS
SELECT id, first_name, last_name, age
FROM Players;
Sélectionner des données dans une vue
SELECT * FROM my_view;
Supprimer une vue
DROP VIEW my_view;

Permalien pour la section Les contraintes PRIMARY KEY Les contraintes PRIMARY KEY

Une primary key est un identifiant unique pour chaque ligne dans une table. Sa valeur ne peut pas être NULL. C’est souvent combiné avec AUTO_INCREMENT pour être généré automatiquement:

CREATE TABLE `Players` (
   id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
   last_name varchar(255) NOT NULL,
   first_name varchar(255),
   age int,
);

Permalien pour la section Les contraintes UNIQUE Les contraintes UNIQUE

Une contrainte UNIQUE force l’utilisation de différentes valeurs dans une colonne:

CREATE TABLE `Players` (
    id int NOT NULL,
    last_name varchar(255) NOT NULL,
    first_name varchar(255),
    age int,
    UNIQUE (id)
);

Permalien pour la section INTERSECTION INTERSECTION

SELECT * FROM table_A
INTERSECT
SELECT * FROM table_B

INTERSECT permet d’obtenir des résultats qui correspondent à la première requête et la seconde requête, et uniquement cela.

Permalien pour la section UNION UNION

SELECT * FROM table_A
UNION
SELECT * FROM table_B

UNION permet d’obtenir des résultats qui correspondent à la première requête ou la seconde requête, ou les deux.

Permalien pour la section JOIN JOIN

Vous pouvez consolider les informations provenant de différentes tables avec un SQL JOIN:

INNER JOIN Joindre deux tables lorsqu'une condition est vraie dans les deux tables:
SELECT *
FROM table_A
INNER JOIN table_B ON table_A.id = table_B.pid
LEFT JOIN Retourne tous les résultats sur la première table même si la condition n'est pas vérifiée dans la deuxième:
SELECT *
FROM table_A
LEFT JOIN table_B ON table_A.id = table_B.pid;
RIGHT JOIN Retourne tous les résultats sur la deuxième table même si la condition n'est pas vérifiée dans la première:
SELECT *
FROM table_A
RIGHT JOIN table_B ON table_A.id = table_B.pid;
FULL JOIN and FULL OUTER JOIN Retourne tous les résultats lorsque la condition est vérifiée dans au moins une des tables:
SELECT *
FROM table_A
FULL JOIN table_B ON table_A.id = table_B.pid;
SELF JOIN Joindre une table avec elle-même. C'est utile lorsque les lignes ont des relations hiérarchiques entre elles:
SELECT child.id, child.name, parent.name
FROM People as child
LEFT OUTER JOIN People AS parent ON child.parent_id = parent.id
CROSS JOIN Joindre chaque ligne d'une table avec chaque ligne d'une autre table:
SELECT *
FROM table_A
CROSS JOIN table_B;
NATURAL JOIN Joindre deux tables lorsqu'elles ont au moins une colonne avec le même nom:
SELECT *
FROM table_A
NATURAL JOIN table_B;
UNION JOIN Joindre des UNION

Permalien pour la section Index SQL Index SQL

Les index sont des outils efficaces pour diminuer le temps d’exécution dans de sélections et des clauses WHERE.

C’est tout comme l’index qui se trouve à la fin d’un livre où l’on peut relier des pages à un sujet, un mot, ou une lettre en praticulier.

Créer (ou supprimer) des index n’affecte en rien les données:

CREATE INDEX my_index ON my_table;

On peut créer un index pour une colonne en particulier:

CREATE INDEX my_index ON my_table (my_column);

Attention, les index ne sont pas adaptés aux petites tables ou aux colonnes très fréquemment modifiées. Des opérations qui consisteraient à mettre à jour ou insérer de larges quantités de données pourraient être considérablement plus lentes.

Cette page est aussi disponible dans d'autres langues :