Database
 sql >> Base de données >  >> RDS >> Database

Requêtes SQL de base

Cet article contient des exemples de requêtes SQL de base que les débutants peuvent utiliser pour récupérer des données de leurs bases de données.

Basique SELECT Requête

Voici un exemple de la requête probablement la plus couramment utilisée en SQL :

SELECT * 
FROM Pets;

Résultat :

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

Cette requête sélectionne toutes les lignes et toutes les colonnes de Pets table. C'est parce que l'astérisque (* ) le caractère générique sélectionne toutes les colonnes.

Sélectionner les noms de colonne

Pour des raisons de performances, il est généralement préférable d'éviter de sélectionner toutes les colonnes, sauf si vous en avez vraiment besoin. Il est généralement préférable de sélectionner uniquement les colonnes dont vous avez besoin.

Voici un exemple.

SELECT PetId, PetName
FROM Pets;

Résultat :

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Fluffy    |
| 2       | Fetch     |
| 3       | Scratch   |
| 4       | Wag       |
| 5       | Tweet     |
| 6       | Fluffy    |
| 7       | Bark      |
| 8       | Meow      |
+---------+-----------+

Filtrer les résultats

Vous pouvez ajouter un WHERE clause pour filtrer les résultats uniquement sur les lignes dont vous avez besoin.

SELECT PetId, PetName
FROM Pets
WHERE PetName = 'Fluffy';

Résultat :

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Fluffy    |
| 6       | Fluffy    |
+---------+-----------+

Voici un autre exemple de filtrage des résultats. Cette fois, nous utilisons l'opérateur supérieur à (> ) pour le filtrer par date.

SELECT PetName, DOB 
FROM Pets
WHERE DOB > '2020-01-01';

Résultat :

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fluffy    | 2020-11-20 |
| Wag       | 2020-03-15 |
| Tweet     | 2020-11-28 |
| Fluffy    | 2020-09-17 |
+-----------+------------+

Vous pouvez remplacer l'opérateur supérieur à par d'autres opérateurs, tels que l'opérateur supérieur ou égal à (>= ), opérateur inférieur à (< ), ou inférieur ou égal à l'opérateur (<= ).

Vous pouvez également utiliser le BETWEEN opérateur pour filtrer les résultats sur une plage spécifique (par exemple, entre deux dates).

SELECT
    PetName,
    DOB
FROM Pets
WHERE DOB BETWEEN '2018-01-01' AND '2020-01-01';

Résultat :

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fetch     | 2019-08-16 |
| Scratch   | 2018-10-01 |
+-----------+------------+

Trier les résultats

Vous pouvez ajouter un ORDER BY clause pour trier les lignes renvoyées par la requête.

Ordre croissant

Utilisez le ASC mot-clé pour trier les résultats par ordre croissant. Il s'agit de la valeur par défaut, vous pouvez donc également omettre ce mot-clé si vous voulez que les résultats soient dans l'ordre croissant.

SELECT PetId, PetName
FROM Pets
ORDER BY PetName ASC;

Ou :

SELECT PetId, PetName
FROM Pets
ORDER BY PetName;

Résultat :

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 7       | Bark      |
| 2       | Fetch     |
| 1       | Fluffy    |
| 6       | Fluffy    |
| 8       | Meow      |
| 3       | Scratch   |
| 5       | Tweet     |
| 4       | Wag       |
+---------+-----------+

Ordre décroissant

Utilisez le DESC mot-clé pour trier les résultats par ordre décroissant.

SELECT PetId, PetName
FROM Pets
ORDER BY PetName DESC;

Résultat :

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 4       | Wag       |
| 5       | Tweet     |
| 3       | Scratch   |
| 8       | Meow      |
| 1       | Fluffy    |
| 6       | Fluffy    |
| 2       | Fetch     |
| 7       | Bark      |
+---------+-----------+

Trier par plusieurs colonnes

Vous pouvez trier sur plusieurs colonnes en répertoriant chaque colonne, séparée par une virgule.

SELECT PetId, PetName
FROM Pets
ORDER BY PetName ASC, PetId ASC;

SELECT PetId, PetName
FROM Pets
ORDER BY PetName ASC, PetId DESC;

Résultat :

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 7       | Bark      |
| 2       | Fetch     |
| 1       | Fluffy    |
| 6       | Fluffy    |
| 8       | Meow      |
| 3       | Scratch   |
| 5       | Tweet     |
| 4       | Wag       |
+---------+-----------+
(8 rows affected)
+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 7       | Bark      |
| 2       | Fetch     |
| 6       | Fluffy    |
| 1       | Fluffy    |
| 8       | Meow      |
| 3       | Scratch   |
| 5       | Tweet     |
| 4       | Wag       |
+---------+-----------+
(8 rows affected)

Nous pouvons voir que les deux Fluffys sont dans un ordre différent dans chaque résultat (nous pouvons le dire en regardant leur PetId valeurs). C'est parce que le PetName la colonne a été triée en premier, puis le PetId trié tous les doublons du premier tri.

Trier par colonnes masquées

Vous pouvez trier par colonnes qui ne sont pas incluses dans le SELECT liste.

SELECT PetId, PetName
FROM Pets
ORDER BY DOB DESC;

Résultat :

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 5       | Tweet     |
| 1       | Fluffy    |
| 6       | Fluffy    |
| 4       | Wag       |
| 2       | Fetch     |
| 3       | Scratch   |
| 7       | Bark      |
| 8       | Meow      |
+---------+-----------+

Dans ce cas, nous pouvons déduire de ces résultats que Tweet est le plus jeune animal de compagnie, et Meow c'est le plus vieux. En effet, nous avons trié par date de naissance (DOB ) colonne par ordre décroissant.

Juste pour être sûr, le revoici avec le DOB colonne incluse dans le SELECT liste.

SELECT PetId, PetName, DOB
FROM Pets
ORDER BY DOB DESC;

Résultat :

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 5       | Tweet     | 2020-11-28 |
| 1       | Fluffy    | 2020-11-20 |
| 6       | Fluffy    | 2020-09-17 |
| 4       | Wag       | 2020-03-15 |
| 2       | Fetch     | 2019-08-16 |
| 3       | Scratch   | 2018-10-01 |
| 7       | Bark      | NULL       |
| 8       | Meow      | NULL       |
+---------+-----------+------------+

En fait, nous pouvons maintenant voir que Meow et Bark ont ​​NULL valeurs dans le DOB colonne. Par conséquent, nous ne savons pas s'ils sont réellement plus âgés ou plus jeunes.

Mais cela démontre que NULL les valeurs sont traitées comme les valeurs les plus basses possibles. Soyez conscient de NULL valeurs lors de l'exécution de requêtes.

Correspondance de modèle

Vous pouvez utiliser le LIKE opérateur pour utiliser la correspondance de modèle.

SELECT PetId, PetName
FROM Pets
WHERE PetName LIKE 'F%';

Résultat :

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Fluffy    |
| 2       | Fetch     |
| 6       | Fluffy    |
+---------+-----------+

Dans cet exemple, nous recherchons tous les animaux dont les noms commencent par la lettre F . Le signe de pourcentage (% ) est un caractère générique qui correspond à n'importe quelle chaîne de zéro caractère ou plus. Il peut être utilisé comme préfixe ou suffixe, et il peut également être utilisé au milieu d'une chaîne.

Voici un autre exemple.

SELECT FirstName, LastName, Email
FROM Owners
WHERE Email LIKE '%@example.%';

Résultat :

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | [email protected] |
| Bart        | Pitt       | [email protected]  |
+-------------+------------+-------------------+

Sélectionner dans une liste

Le IN L'opérateur détermine si une valeur spécifiée correspond à une valeur dans une sous-requête ou une liste.

Voici un exemple.

SELECT 
    PetId, 
    PetName, 
    DOB 
FROM Pets
WHERE PetName IN ('Fluffy', 'Bark', 'Wag');

Résultat :

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 4       | Wag       | 2020-03-15 |
| 6       | Fluffy    | 2020-09-17 |
| 7       | Bark      | NULL       |
+---------+-----------+------------+

Sous-requêtes

Vous pouvez utiliser le IN opérateur lors de l'exécution d'une sous-requête (une requête imbriquée dans une autre requête).

Voici un exemple.

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets );

Résultat :

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
+-------------+-----------+

Cela a renvoyé des colonnes d'une table (PetTypes ), mais uniquement lorsqu'il y avait au moins une ligne correspondante dans une autre table (Pets ) qui correspondait au PetTypeId colonne.

Pour le démontrer davantage, le contenu pertinent de ces deux tableaux est présenté ci-dessous.

Les PetTypes tableau :

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
| 4           | Rabbit    |
+-------------+-----------+

Les Pets tableau :

+-------------+-----------+
| PetTypeId   | PetName   |
|-------------+-----------|
| 2           | Fluffy    |
| 3           | Fetch     |
| 2           | Scratch   |
| 3           | Wag       |
| 1           | Tweet     |
| 3           | Fluffy    |
| 3           | Bark      |
| 2           | Meow      |
+-------------+-----------+

Nous pouvons voir que les PetTypes table contient un animal de compagnie de type Rabbit , mais aucun des animaux de compagnie dans Pets la table a été affectée à ce type (c'est-à-dire qu'il n'y a pas de valeur de 4 dans le Pets.PetTypeId colonne).

Voir 12 opérateurs SQL couramment utilisés et cette liste d'opérateurs SQL pour plus d'informations sur les opérateurs dans SQL.

Joints

On peut se demander si les jointures SQL sont considérées comme des "requêtes SQL de base", mais j'inclurai quand même une jointure ici.

Alors pour terminer cet article, voici un exemple de jointure interne.

SELECT 
    p.PetName,
    pt.PetType
FROM Pets p
INNER JOIN PetTypes pt
ON p.PetTypeId = pt.PetTypeId;

Résultat :

+-----------+-----------+
| PetName   | PetType   |
|-----------+-----------|
| Fluffy    | Cat       |
| Fetch     | Dog       |
| Scratch   | Cat       |
| Wag       | Dog       |
| Tweet     | Bird      |
| Fluffy    | Dog       |
| Bark      | Dog       |
| Meow      | Cat       |
+-----------+-----------+

Dans ce cas, nous avons utilisé un INNER JOIN pour renvoyer tous les noms d'animaux avec leurs types d'animaux respectifs. Nous avons utilisé le ON clause pour spécifier le prédicat à évaluer pour chaque paire de lignes jointes. Dans ce cas, le p.PetTypeId colonne est une clé étrangère du pt.PetTypeId colonne, qui est la clé primaire pour les PetTypes tableau.

Dans cet exemple, j'ai également utilisé des alias sur les tables, ce qui a aidé à garder le code agréable et concis.

Voir mon tutoriel sur les jointures SQL pour plus d'exemples de jointures.