Interroger les données
grammaire
# 以下为在MySQL数据库中查询数据通用的 SELECT 语法:
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
- Une ou plusieurs tables peuvent être utilisées dans une instruction de requête, séparées par des virgules (,), et une instruction WHERE peut être utilisée pour définir des conditions de requête.
- La commande SELECT peut lire un ou plusieurs enregistrements.
- Vous pouvez utiliser un astérisque (*) pour remplacer d'autres champs, l'instruction SELECT renverra toutes les données de champ de la table
- Vous pouvez utiliser l'instruction WHERE pour inclure n'importe quelle condition.
- Vous pouvez utiliser la propriété LIMIT pour définir le nombre d'enregistrements renvoyés.
- Vous pouvez spécifier le décalage de données auquel l'instruction SELECT démarre la requête avec OFFSET. Par défaut, le décalage est de 0.
Obtenir des données via l'invite de commande
Exemple
# 以下实例将返回数据表 hanscal_tb 的所有记录:
select * from hanscal_tb;
WHERE clause enfant
grammaire
# 以下是 SQL SELECT 语句使用 WHERE 子句从数据表中读取数据的通用语法:
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
- Dans l'instruction de requête, vous pouvez utiliser une ou plusieurs tables, séparer les tables par des virgules et utiliser l'instruction WHERE pour définir les conditions de requête.
- Vous pouvez spécifier n'importe quelle condition dans la clause WHERE.
- Vous pouvez spécifier une ou plusieurs conditions en utilisant AND ou OR.
- La clause WHERE peut également être utilisée avec les commandes SQL DELETE ou UPDATE.
- La clause WHERE est similaire à la condition if des langages procéduraux et lit les données spécifiées en fonction de la valeur du champ dans la table MySQL.
Voici une liste d'opérateurs pouvant être utilisés dans la clause WHERE.
Exemple : Supposons que A est égal à 10 et que B est égal à 20
opérateur | décrire | Exemple |
---|---|---|
= | Signe égal, vérifie si deux valeurs sont égales et renvoie vrai si elles sont égales | (A = B) renvoie faux |
<>, != | Non égal, vérifie si deux valeurs sont égales, renvoie vrai si elles ne sont pas égales | (A != B) renvoie vrai |
> | Signe supérieur à, vérifie si la valeur de gauche est supérieure à la valeur de droite, si la valeur de gauche est supérieure à la valeur de droite, renvoie vrai | (A > B) renvoie faux |
< | Inférieur à signe, vérifie si la valeur de gauche est inférieure à la valeur de droite, si la valeur de gauche est inférieure à la valeur de droite, renvoie true | (A < B) renvoie vrai |
>= | Supérieur ou égal, vérifie si la valeur de gauche est supérieure ou égale à la valeur de droite, si la valeur de gauche est supérieure ou égale à la valeur de droite, retourne true | (A >= B) renvoie faux. |
<= | Inférieur ou signe égal, vérifie si la valeur de gauche est inférieure ou égale à la valeur de droite, si la valeur de gauche est inférieure ou égale à la valeur de droite, renvoie true | (A <= B) renvoie vrai. |
La clause WHERE est très utile si vous souhaitez lire des données spécifiées dans une table de données MySQL.
L'utilisation de la clé primaire comme requête conditionnelle dans la clause WHERE est très rapide.
Si les critères donnés n'ont aucun enregistrement correspondant dans la table, la requête ne renvoie aucune donnée.
lire les données à partir de l'invite de commande
Exemple
# 以下实例将读取 hanscal_tb 表中 hanscal_author 字段值为 hanke 的所有记录,该查询不区分大小写
SELECT * from hanscal_tb WHERE hanscal_author='hanke';
# 实例中使用了 BINARY 关键字,是区分大小写的,没有查询到值
SELECT * from hanscal_tb WHERE BINARY hanscal_author='Hanke';
Empty set (0.01 sec)
Les comparaisons de chaînes dans la clause WHERE de MySQL ne sont pas sensibles à la casse. Vous pouvez utiliser le mot clé BINARY pour spécifier que les comparaisons de chaînes dans la clause WHERE sont sensibles à la casse.
Clause LIKE
Parfois, nous devons obtenir tous les enregistrements contenant certains caractères dans le champ, puis nous devons utiliser la clause SQL LIKE dans la clause WHERE. Le signe pourcentage % est utilisé dans la clause SQL LIKE pour représenter n'importe quel caractère, similaire à l'astérisque * sous UNIX ou dans les expressions régulières. Si le signe pourcentage % n'est pas utilisé, la clause LIKE a le même effet que le signe égal =.
grammaire
# 以下是 SQL SELECT 语句使用 LIKE 子句从数据表中读取数据的通用语法:
SELECT field1, field2,...fieldN
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
- Vous pouvez spécifier n'importe quelle condition dans la clause WHERE.
- Vous pouvez utiliser la clause LIKE dans la clause WHERE.
- Vous pouvez utiliser la clause LIKE à la place du signe égal =.
- LIKE est souvent utilisé avec %, similaire à une recherche de métacaractères.
- Vous pouvez utiliser AND ou OR pour spécifier une ou plusieurs conditions.
- Vous pouvez utiliser la clause WHERE...LIKE dans une commande DELETE ou UPDATE pour spécifier des conditions.
Utilisation de la clause LIKE dans l'invite de commande
Exemple
# 以下示例将 hanscal_tb 表中获取 hanscal_author 字段中以 cal 为结尾的的所有记录:
mysql> use RUNOOB;
mysql> SELECT * from hanscal_tb WHERE hanscal_author LIKE '%cal';
comme match/fuzzy match, sera utilisé en combinaison avec % et _.
'%a' //Données se terminant par un 'a%' //Données commençant par un '%a%' //Données contenant un '_a_' //'_a' avec trois chiffres et la lettre du milieu est un / /' a_' avec deux chiffres et se terminant par un //avec deux chiffres et commençant par un
Dans la requête conditionnelle de where like, SQL fournit quatre méthodes de correspondance.
% : indique zéro ou plusieurs caractères. Il peut correspondre à des caractères de n'importe quel type et longueur. Dans certains cas, s'il s'agit de chinois, veuillez utiliser deux signes de pourcentage (%%).
_ : Représente n'importe quel caractère unique. Correspond à un seul caractère arbitraire, il est souvent utilisé pour limiter la longueur en caractères des expressions dans les instructions.
[] : Représente l'un des caractères répertoriés entre parenthèses (comme une expression régulière). Spécifiez un caractère, une chaîne ou une plage à comparer avec l'un d'entre eux.
[^] : Représente un seul caractère non répertorié entre parenthèses. Sa valeur est la même que [], mais elle nécessite que l'objet correspondant soit un caractère autre que le caractère spécifié.
Lorsque le contenu de la requête contient des caractères génériques, la requête pour les caractères spéciaux "%", "_" et "[" ne peut pas être implémentée normalement en raison des caractères génériques , mais la requête peut être effectuée normalement en entourant les caractères spéciaux par "[ ]" .
expression régulière REGEXP
La correspondance floue est possible avec LIKE ...% . MySQL prend également en charge la correspondance d'autres expressions régulières. L' opérateur REGEXP est utilisé dans MySQL pour la correspondance des expressions régulières.
maquette | décrire |
---|---|
^ | Correspond à la position de départ de la chaîne d'entrée. Si la propriété Multiline de l'objet RegExp est définie, ^ correspond également à la position après '\n' ou '\r'. |
$ | Correspond à la fin de la chaîne d'entrée. Si la propriété Multiline de l'objet RegExp est définie, $ correspond également à la position avant '\n' ou '\r'. |
. | Correspond à n'importe quel caractère unique sauf "\n". Pour faire correspondre n'importe quel caractère, y compris '\n', utilisez un modèle comme '[.\n]'. |
[...] | collection de personnages. Correspond à l'un des caractères inclus. Par exemple, '[abc]' peut correspondre à 'a' dans "plain". |
[^...] | Une collection de caractères négatifs. Correspond à n'importe quel caractère non inclus. Par exemple, '[^abc]' correspond au 'p' dans "plain". |
p1|p2|p3 | Faites correspondre p1 ou p2 ou p3. Par exemple, 'z|nourriture' correspond à "z" ou "nourriture". '(z|f)ood' correspond à "zood" ou "nourriture". |
* | Correspond à la sous-expression précédente zéro ou plusieurs fois. Par exemple, zo* correspond à "z" aussi bien qu'à "zoo". * est équivalent à {0,}. |
+ | Correspond à la sous-expression précédente une ou plusieurs fois. Par exemple, 'zo+' correspond à "zo" et "zoo", mais pas à "z". + est équivalent à {1,}. |
{n} | n est un entier non négatif. Correspond un certain nombre de n fois. Par exemple, 'o{2}' ne correspondrait pas au 'o' dans "Bob", mais correspondrait aux deux o dans "food". |
{n,m} | m et n sont tous deux des entiers non négatifs, où n <= m. Correspond au moins n fois et au plus m fois. |
Exemple
# 查找name字段中以'st'为开头的所有数据:
mysql> SELECT name FROM hanscal_tb WHERE name REGEXP '^st';
# 查找name字段中以'ok'为结尾的所有数据:
mysql> SELECT name FROM hancal_tb WHERE name REGEXP 'ok$';
# 查找name字段中包含'mar'字符串的所有数据:
mysql> SELECT name FROM hanscal_tb WHERE name REGEXP 'mar';
# 查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据:
mysql> SELECT name FROM hanscal_tb WHERE name REGEXP '^[aeiou]|ok$';