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

Requêtes MySQL

Jusqu'à présent, nous avons créé une base de données, ajouté deux tables et inséré des données dans les deux tables. Nous allons maintenant voir comment récupérer ces données. Mais pas seulement récupérer les données, mais pour interroger la base de données correspondante.

SQL signifie Structured Query Language . C'est la requête bit qui rend SQL si puissant. SQL est un langage qui vous permet d'exécuter des requêtes contre votre base de données. Il vous permet d'interroger la base de données pour les données que vous voulez.

Le SQL SELECT Déclaration

Lorsqu'il s'agit d'interroger votre base de données MySQL, le SQL SELECT déclaration rend tout cela possible. Il s'agit probablement de votre instruction SQL la plus fréquemment utilisée lorsque vous travaillez avec MySQL. Le SELECT vous permet de décrire à MySQL exactement les données que vous souhaitez qu'il récupère.

Considérez l'instruction SQL suivante :

SELECT * FROM Fruit;

Voici le résultat :

C'est le SELECT déclaration dans sa forme la plus simple. L'instruction SQL ci-dessus récupère tous les enregistrements du Fruit tableau.

L'astérisque (* ) indique à MySQL de renvoyer toutes les colonnes. Cela nous fait gagner du temps et des efforts. Sans cela, nous aurions besoin d'écrire les noms de toutes les colonnes que nous aimerions avoir renvoyées.

Cela dit, vous pouvez également demander à MySQL de ne renvoyer que les colonnes que vous souhaitez renvoyer. Cela se fait en nommant uniquement les colonnes que vous aimeriez voir renvoyées. Comme ceci :

SELECT FruitId, FruitName 
FROM Fruit;

Voici le résultat :

L'instruction SQL ci-dessus sélectionne le FruitId et FruitName colonnes du Fruit tableau.

Cela peut réduire l'encombrement afin que vous ne voyiez que les colonnes qui vous intéressent. Cela peut également améliorer les performances, car MySQL (et toute application que vous utilisez) n'a pas besoin d'utiliser des ressources précieuses pour renvoyer des données inutiles.

Encore une fois, cette requête récupère tous enregistrements de la table — MySQL renverra tous les enregistrements sauf indication contraire.

Le WHERE Article

Vous pouvez ajouter le WHERE clause pour limiter le jeu de résultats aux seuls enregistrements qui vous intéressent. Comme ceci :

SELECT * FROM Fruit
WHERE UnitId = 1;

Résultat :

La requête ci-dessus renvoie tous les enregistrements du Fruit table où l' UnitId la colonne a une valeur de 1 .

Sous-requêtes :SELECT imbriqué Déclarations

Et si nous ne connaissions pas l' UnitId  ? ? Et si nous savions seulement rechercher ces enregistrements avec un nom d'unité de Piece ?

Facile! Nous pourrions réécrire l'exemple ci-dessus pour utiliser un SELECT imbriqué instruction (autrement connue sous le nom de sous-requête ) qui interroge une autre table (les Unités table). Cela nous permettra d'utiliser l'unité réelle nom (plutôt que son ID) car la deuxième table contient ceci dans le UnitName champ :

SELECT * FROM Fruit
WHERE UnitId = 
	(SELECT UnitId 
    FROM Units 
    WHERE UnitName = 'Piece');

Résultat :

Ici, nous utilisons un SELECT imbriqué déclaration (c'est-à-dire un SELECT instruction dans un SELECT instruction) pour interroger les Unités table pour UnitId de l'enregistrement qui contient Piece comme son UnitName valeur. Nous pouvons le faire parce que Fruit.UnitId colonne est une clé étrangère vers Units.UnitId colonne.

Voici d'autres exemples de sous-requêtes si cela vous intéresse.

Utiliser un JOIN SQL

En allant un peu plus loin, nous pourrions réécrire notre SELECT imbriqué déclaration dans un INNER JOIN .

En SQL, un JOIN vous permet d'interroger plusieurs tables qui partagent des données. Dans notre cas, les deux tables partagent le UnitId on peut donc dire qu'ils sont "rejoints" par ce champ.

Il existe différents types de jointures en SQL, cependant, nous nous intéressons principalement à la INNER JOIN pour l'instant.

Le INNER JOIN la syntaxe ressemble à ceci :

SELECT * FROM table_name_1
INNER JOIN table_name_2
ON table_name_1.column_name = table_name_2.column_name

Nous pourrions donc réécrire notre sous-requête de l'exemple précédent à la suivante :

SELECT Fruit.* FROM Fruit
INNER JOIN Units
ON Fruit.UnitId = Units.UnitId
WHERE Units.UnitName = 'Piece';

Résultat :

Nous avons spécifié Fruit.* au lieu de simplement * car nous voulions uniquement renvoyer toutes les colonnes du Fruit table. Si nous avions utilisé * , la requête aurait renvoyé toutes les colonnes des deux tables.

Consultez également le LEFT JOIN et RIGHT JOIN pour voir comment vous pouvez obtenir des données différentes selon le type de jointure.

Sous-requête vs JOIN ?

Maintenant que vous avez vu deux méthodes pour obtenir le même résultat, vous vous demandez probablement laquelle est la meilleure ?

Les sous-requêtes ont tendance à être plus lisibles (et peut-être plus faciles à comprendre), ce qui peut faciliter leur compréhension pour les débutants.

Cependant, de nombreux programmeurs SQL trouvent JOIN s plus efficace et plus performant. Si vous rencontrez des problèmes de performances avec vos requêtes ou une application, essayez de convertir toutes les sous-requêtes en JOIN s ou vice versa (dans certains cas, une sous-requête pourrait être plus performante).

De plus, il peut y avoir des cas où une sous-requête est votre seule option, c'est donc aussi une considération.

Plus d'opérateurs

Jusqu'à présent, nos requêtes contenaient toutes un signe égal (= ). C'est ce qu'on appelle un opérateur . Plus précisément, c'est un opérateur de comparaison car il compare une expression à une autre.

Il existe de nombreux autres opérateurs que vous pouvez utiliser dans vos requêtes. Ceux-ci peuvent grandement aider à réduire le jeu de résultats aux seuls enregistrements dont vous avez besoin. Il n'est pas rare qu'une base de données contienne des millions d'enregistrements. Même si vous n'avez que des milliers d'enregistrements, essayer de trouver un enregistrement (ou même juste une poignée) parmi des milliers serait une tâche très ardue si vous n'aviez pas ces opérateurs à votre disposition.

Voici quelques-uns des opérateurs SQL les plus couramment utilisés.

Le > Opérateur

Vous pouvez utiliser le > opérateur pour sélectionner des données qui sont plus grandes qu'une valeur donnée.

SELECT * FROM Fruit
WHERE Inventory > 10;

Le < Opérateur

Vous pouvez utiliser le < opérateur pour sélectionner les données moins qu'une valeur donnée.

SELECT * FROM Fruit
WHERE Inventory < 10;

Le <> Opérateur

Vous pouvez utiliser le <> opérateur pour sélectionner des données qui sont à la fois inférieures à et supérieur à une valeur donnée.

SELECT * FROM Fruit
WHERE Inventory <> 10;

Le >= Opérateur

Vous pouvez utiliser le >= opérateur pour sélectionner des données supérieures ou égales à une valeur donnée.

SELECT * FROM Fruit
WHERE Inventory >= 10;

Le <= Opérateur

Vous pouvez utiliser le <= opérateur pour sélectionner des données inférieures ou égales à une valeur donnée.

SELECT * FROM Fruit
WHERE Inventory <= 10;

Le AND Opérateur

Vous pouvez ajouter un AND opérateur vers WHERE clause afin de limiter votre sélection aux seuls enregistrements qui remplissent deux conditions (ou plus si vous incluez plus de AND les opérateurs).

Voici un exemple :

SELECT * FROM Fruit
WHERE Inventory > 10 
AND DateEntered > '2015-01-15';

Le OR Opérateur

Vous pouvez utiliser un OR opérateur pour élargir votre sélection à plusieurs critères. Comme son nom l'indique, le OR La clause vous permet de sélectionner des données où le critère est soit ceci OU que. Donc le AND limites de l'opérateur votre sélection et le OR l'opérateur élargit il.

Voici un exemple :

SELECT * FROM Fruit
WHERE UnitId = 1 OR UnitId = 2;

Le BETWEEN Opérateur

Utilisez le BETWEEN opérateur pour sélectionner des données comprises entre deux valeurs données.

SELECT * FROM Fruit
WHERE DateEntered 
BETWEEN '2015-01-25' AND '2015-02-25';

Le NOT Opérateur

Utilisez le NOT opérateur pour sélectionner des données qui ne sont pas équivalent à une condition donnée.

SELECT * FROM Fruit
WHERE NOT (FruitName = 'Apple');