Cet article vise à maîtriser rapidement et précisément l'instruction SELECT dans la base de données MySQL.
La syntaxe de base de l'instruction SELECT dans MySQL est la suivante :
Ce qui suit est un fragment cité :
SÉLECTIONNER [STRAIGHT_JOIN] [SQL_SMALL_RESULT]
[SQL_BIG_RESULT] [HIGH_PRIORITY]
[DISTINCT|DISTINCTROW|TOUS]
liste_sélection
[INTO {OUTFILE|DUMPFILE} 'file_name' export_options]
[FROM table_references [WHEREwhere_definition]
[GROUPE PAR nom_colonne,...] [HAVING Where_definition]
[ORDER BY {unsighed_integer|col_name|formura} [ASC|DESC],...]
[LIMIT [offset,] lignes] [PROCEDURE nom_procédure]]
Comme le montre cette syntaxe de base, l'instruction SELECT la plus simple est SELECT select_list. En fait, en utilisant cette instruction SELECT la plus simple, vous pouvez également exécuter de nombreuses fonctions que vous attendez. Tout d'abord, vous pouvez l'utiliser pour effectuer n'importe quelle opération prise en charge par MySQL. exemple : SELECT 1+1, il renverra 2 ; deuxièmement, vous pouvez également l'utiliser pour attribuer des valeurs aux variables. En PHP, en utilisant cette fonction de l'instruction SELECT, vous pouvez utiliser librement les fonctions MySQL pour effectuer diverses tâches pour le. Programme PHP. opérations et attribuer des valeurs aux variables. Dans de nombreux cas, vous constaterez que MySQL possède des fonctions bien plus puissantes que PHP.
STRAIGHT_JOIN, SQL_SMALL_RESULT, SQL_BIG_RESULT et HIGH_PRIORITY sont des extensions MySQL d'ANSI SQL92. Si l'optimiseur joint les tables dans un ordre non optimal, l'utilisation de STRAIGHT_JOIN peut accélérer la requête.
SQL_SMALL_RESULT et SQL_BIG_RESULT sont un ensemble de mots-clés relatifs. Ils doivent être utilisés avec GROUP BY, DISTINCT ou DISTINCTROW. SQL_SMALL_RESULT indique à l'optimiseur que le résultat sera très petit, obligeant MySQL à utiliser une table temporaire pour stocker la table finale au lieu d'utiliser le tri ; à l'inverse, SQL_BIG_RESULT indique à l'optimiseur que le résultat sera très petit, obligeant MySQL à utiliser le tri au lieu de faire une table temporaire.
HIGH_PRIORITY donnera à SELECT une priorité plus élevée qu'une instruction qui met à jour la table, lui permettant d'effectuer une requête rapide et prioritaire.
L’utilisation des quatre mots-clés ci-dessus est en effet plutôt obscure. Heureusement, dans la plupart des cas, nous pouvons choisir de ne pas utiliser ces quatre mots-clés dans MySQL.
DISTINCT et DISTINCTROW fournissent le filtrage le plus basique mais le plus utile pour l'ensemble de résultats renvoyé par la requête. Autrement dit, le jeu de résultats ne contient que des lignes distinctes. Ce qu'il faut noter ici, c'est que pour les mots-clés DISTINCT et DISTINCTROW, les valeurs nulles sont égales. Quel que soit le nombre de valeurs NULL, une seule est sélectionnée. L’utilisation de ALL est superflue. Cela n’a aucun effet sur la génération du jeu de résultats.
INTO {OUTFILE|DUMPFILE} 'file_name' export_options, écrit le jeu de résultats dans un fichier. Le fichier est créé sur l'hôte du serveur et ne peut pas déjà exister. La syntaxe de la partie export_options de l'instruction est la même que celle utilisée dans les clauses FIELDS et LINES de l'instruction LOAD DATAINFILE. Nous en discuterons en détail dans l'article MySQL Advanced_LOAD DATA. La différence entre les mots-clés OUTFILE et DUMPFILE est qu'une seule ligne est écrite dans le fichier, sans aucune fin de colonne ou de ligne.
liste de sélection : elle peut contenir un ou plusieurs des contenus suivants :
1. "*" désigne toutes les colonnes disposées dans l'ordre de création du tableau.
2. Une liste de noms de colonnes classés dans l'ordre requis par l'utilisateur.
3. Vous pouvez utiliser un alias pour remplacer le nom de la colonne, sous la forme suivante : nom de la colonne comme en-tête_colonne.
4. Expressions (noms de colonnes, constantes, fonctions ou toute combinaison de noms de colonnes, de constantes et de fonctions liées à des opérateurs arithmétiques ou au niveau du bit).
5. Fonctions internes ou fonctions agrégées.
6. Toute combinaison des éléments ci-dessus.
FROM : détermine quelles tables sont utilisées dans la commande SELECT. Cet élément est généralement requis sauf si la liste de sélection ne contient pas de noms de colonnes (par exemple, uniquement des constantes, des expressions arithmétiques, etc.). S'il y a plusieurs tables dans l'entrée de table, séparez-les par des virgules. L'ordre des tableaux suivant le mot-clé FROM n'affecte pas les résultats.
Les noms de table peuvent recevoir des alias associés pour rendre les expressions claires. La syntaxe ici est tbl_name [AS] alias_name. Par exemple :
sélectionnez t1.name,t2.salary de l'employé comme t1,info comme t2 où t1.name=t2.name est identique à sélectionnez t1.name,t2.salary depuis l'employé t1,info t2 où t1.name= t2.name Complètement équivalent.
Toutes les autres références à la table, telles que les clauses in Where et Have, doivent utiliser des alias, et les alias ne peuvent pas commencer par un nombre.
La clause Where définit les conditions de recherche et sa méthode d'application dans les instructions insert, update et delete est exactement la même que sa méthode d'application dans les instructions select. Les termes de recherche suivent le mot-clé où. Si l'utilisateur souhaite utiliser plusieurs conditions de recherche dans une instruction, elles peuvent être connectées par et ou ou. La syntaxe de base des conditions de recherche est [not] expression comparative_operator expression; [not] expression [not] comme « match_string » [not] expression est [not] null [not] expression [not] ; ] nom_colonne join_operator nom_colonne ; [pas] expression_boolean.
et : Utilisé pour connecter deux conditions et renvoyer le résultat lorsque les deux conditions sont VRAIES. Lorsque plusieurs opérateurs logiques sont utilisés dans la même instruction, l'opérateur et est toujours prioritaire, sauf si l'utilisateur utilise des parenthèses pour modifier l'ordre des opérations.
ou : utilisé pour connecter deux conditions et renvoyer le résultat lorsque l'une ou l'autre condition est VRAIE. Lorsque plusieurs opérateurs logiques sont utilisés dans la même instruction, l'opérateur or opère généralement après l'opérateur et. Bien entendu, l'utilisateur peut utiliser des parenthèses pour modifier l'ordre des opérations.
between : Mot clé utilisé pour identifier la limite inférieure de la plage, et suivi de la valeur de la limite supérieure de la plage. La plage où @val entre x et y inclut la première et la dernière valeurs. Si la première valeur spécifiée après between est supérieure à la deuxième valeur, la requête ne renvoie aucune ligne.
column_name : Le nom de la colonne utilisé dans la comparaison. En cas d'ambiguïté, veillez à spécifier le nom de la table où se trouve la colonne.
comparative_operator : opérateur de comparaison. Voir le tableau ci-dessous :
Voici des fragments de citation :
signification du symbole
= égal à
> supérieur à
< moins de
>= supérieur ou égal à
<= inférieur ou égal à
!= n'est pas égal à
<> n'est pas égal à
Lorsque l'on compare des données de type char et varchar, "<" signifie plus proche de la tête de l'alphabet et ">" signifie plus proche de la fin de l'alphabet. D'une manière générale, les lettres minuscules sont plus grandes que les lettres majuscules et les lettres majuscules sont plus grandes que les chiffres, mais cela peut dépendre de l'ordre de comparaison du système d'exploitation sur le serveur.
Les espaces de fin sont ignorés lors de la comparaison. Par exemple, « Dirk » équivaut à « Dirk ».
Lorsque l'on compare des dates, "<" signifie plus tôt que et ">" signifie plus tard.
Lorsque vous utilisez des opérateurs de comparaison pour comparer des données de caractère et de date/heure, toutes les données doivent être placées entre guillemets.
expression : peut être un nom de colonne, une constante, une fonction ou toute combinaison de noms de colonnes ou de constantes, et une fonction connectée à des opérateurs arithmétiques ou à des opérateurs au niveau du bit. Les opérateurs arithmétiques sont présentés dans le tableau suivant :
Voici l'extrait cité :
signification du symbole
+ signe plus
- signe moins
* signe de multiplication
/ Le signe de division
est nul : utilisé lors de la recherche d'une valeur NULL.
like : mot-clé, vous pouvez utiliser like pour char, varchar et datetime (à l'exclusion des secondes et millisecondes). Dans MySQL, like peut également être utilisé pour les expressions numériques.
Lorsque les utilisateurs recherchent des données date-heure, il est préférable d'utiliser le mot-clé like, car un enregistrement date-heure complet contient une variété de composants de date. Par exemple, l'utilisateur ajoute une valeur "9:20" à la colonne Arrival_time, mais ne la trouve pas dans la clause où Arrival_time="9:20" car MySQL convertit les données saisies en "Jan 1,1900 9:20AM". . Cependant, la clause où arrivage_time comme "%9:20%" peut la trouver.
boolean_expression : expression qui renvoie une valeur « vrai » ou « faux ».
match_string : une chaîne composée de caractères et de caractères génériques, entourée de guillemets simples ou doubles, est un modèle de correspondance. Les caractères génériques sont affichés dans le tableau suivant :
Ce qui suit est un fragment cité :
signification du symbole
% Une chaîne de 0 caractères ou plus
_ n'importe quel personnage
pas : nier toute expression logique ou mot-clé,
Tels que like, null, between, etc.
Les clauses group by et have sont utilisées dans l'instruction select,
Il est possible de diviser une table en groupes et de renvoyer les groupes correspondant à la condition de la clause have.
Syntaxe : Début de l'instruction select
regrouper par [all]gregate_free_expression [,aggregate_free_expression]*
[ayant des conditions de recherche]
à la fin de l'instruction select
: spécifie le groupe dans lequel la table sera divisée. Si une fonction d'agrégation est incluse dans l'élément de la table select, une valeur totale est calculée pour chaque groupe. Les résultats de ces totaux sont affichés dans de nouvelles colonnes au lieu de nouvelles lignes. Les utilisateurs peuvent référencer ces nouvelles colonnes de total dans la clause have. Les fonctions d'agrégation telles que avg, count, max, min et sum peuvent être utilisées dans select_list avant de regrouper par. Les tableaux peuvent être regroupés selon n'importe quelle combinaison de colonnes.
all : extension Transact-SQL qui inclut tous les groupes dans les résultats, même ceux exclus par la clause Where. Si la clause have est utilisée en même temps, le sens de tout sera nié.
Aggregate_free_expression : expression qui ne contient pas de fonction d'agrégation. L'extension Transact-SQL permet le regroupement par expression sans fonction d'agrégation lors du regroupement par nom de colonne.
ayant : définit les conditions pour la clause group by, similaires à Where Where définit les conditions pour l'instruction select. Les conditions de recherche pour avoir peuvent inclure des expressions de fonctions d'agrégation. En dehors de cela, ses critères de recherche sont les mêmes que les critères de recherche Where.
Trier par : Organiser les résultats par colonne. Les colonnes générées par select peuvent être référencées par des noms de colonnes, des alias de colonnes ou des positions de colonnes. Par exemple : sélectionnez id comme myid, nom comme myname dans le groupe mytable par id, sélectionnez id comme myid, nom comme myname dans le groupe mytable par myid, sélectionnez id comme myid, nom comme myname dans mytable group par 1. Ces trois phrases sont complètement équivalent de. Bien entendu, nous ne sommes pas d’accord avec le troisième usage, qui aura un impact négatif sur la lisibilité du programme. Pour trier par ordre décroissant, ajoutez le mot-clé DESC à la clause order by avant le nom de la colonne que vous souhaitez trier. La valeur par défaut est l'ordre croissant, mais vous pouvez le spécifier explicitement à l'aide du mot-clé ASC.
Clause limit : utilisée pour limiter le nombre de lignes renvoyées par l'instruction select. limit prend 1 ou 2 paramètres numériques. Si 2 paramètres sont donnés, le premier spécifie le décalage de la première ligne à renvoyer et le second spécifie le nombre maximum de lignes à renvoyer. Le décalage de la ligne initiale est 0 (et non 1). Si un argument est donné, il indique le nombre maximum de lignes renvoyées au décalage 0. Autrement dit, la limite 5 et la limite 0,5 sont tout à fait équivalentes.
Quant à la signification du mot-clé procédure, je ne suis pas très clair à ce sujet. Il semble prendre en charge les procédures stockées, et MySQL lui-même ne prend pas en charge les procédures stockées. Il semble être réservé aux besoins d'expansion futurs.