Maison >base de données >tutoriel mysql >Comprendre les exemples d'opérations d'instruction select dans MySQL

Comprendre les exemples d'opérations d'instruction select dans MySQL

怪我咯
怪我咯original
2017-04-01 10:12:051634parcourir


Syntaxe de sélection

SELECT

    [ALL | DISTINCT | DISTINCTROW ]

      [HIGH_PRIORITY]

      [STRAIGHT_JOIN]

      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]

      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]

    select_expr, ...

    [INTO OUTFILE 'file_name' export_options

      | INTO DUMPFILE 'file_name']

    [FROM table_references

    [WHERE where_definition]

    [GROUP BY {col_name | expr | position}

      [ASC | DESC], ... [WITH ROLLUP]]

    [HAVING where_definition]

    [ORDER BY {col_name | expr | position}

      [ASC | DESC] , ...]

    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

    [PROCEDURE procedure_name(argument_list)]

    [FOR UPDATE | LOCK IN SHARE MODE]]

SELECT est utilisé pour restaurer les lignes sélectionnées d'une ou plusieurs tables et peut ajouter Déclaration UNION et sous-requête.
Chaque select_expr indique une colonne que vous souhaitez restaurer, et table_references indique la ou les tables à partir desquelles la ligne est restaurée.
Requête simple

SELECT columna columnb FROM mytable;

Requête ORDER BY

SELECT college, region, seed FROM tournament  ORDER BY region, seed;

SELECT college, region AS r, seed AS s FROM tournament ORDER BY r, s;

SELECT college, region, seed FROM tournament  ORDER BY 2, 3;
--要以相反的顺序进行分类,应把DESC(降序)关键字添加到ORDER BY子句中的列名称中。默认值为升序;该值可以使用ASC关键词明确地指定。

SELECT a, COUNT(b) FROM test_table ORDER BY a DESC;

Requête GROUP BY

SELECT a, COUNT(b) FROM test_table GROUP BY a DESC;

SELECT COUNT(col1) AS col2 FROM t GROUP BY col2 HAVING col2 = 2;
-- HAVING不能用于应被用于WHERE子句的条目,不能编写如下语句:

SELECT col_name FROM tbl_name HAVING col_name > 0;

--而应该这么编写

SELECT col_name FROM tbl_name WHERE col_name > 0;
--HAVING子句可以引用总计函数,而WHERE子句不能引用:

SELECT user, MAX(salary) FROM users GROUP BY user HAVING MAX(salary)>10;

Requête LIMITE

SELECT * FROM tbl LIMIT 10;  # Retrieve rows 0-9;

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15;
--如果要恢复从某个偏移量到结果集合的末端之间的所有的行,您可以对第二个参数是使用比较大的数。

--以下语句可以恢复从第96行到最后的所有行:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

SELECT... INTO OUTFILE

SELECT...INTO OUTFILE La forme 'file_name' de SELECT peut écrire les lignes sélectionnées dans un fichier. Le fichier est créé sur l'hôte du serveur, vous devez donc disposer des autorisations FILE pour utiliser cette syntaxe. file_name ne peut pas être un fichier original.

La fonction principale de l'instruction SELECT...INTO OUTFILE vous permet de vider très rapidement une table sur la machine serveur. Si vous souhaitez créer le fichier de résultats sur un hôte client autre que l'hôte serveur, vous ne pouvez pas utiliser SELECT...INTO OUTFILE. Dans ce cas, vous devez utiliser une commande telle que "mysql -e "SELECT ..." > file_name" sur l'hôte client pour générer le fichier.

SELECT...INTO OUTFILE est le complément de LOAD DATA INFILE ; la syntaxe utilisée pour la partie exort_options de l'instruction inclut des clauses partielles FIELDS et LINES, qui sont utilisées simultanément avec l'instruction LOAD DATA INFILE.

Dans l'exemple suivant, un fichier est généré avec des valeurs séparées par des virgules. Ce format peut être utilisé par de nombreux programmes

SELECT a,b,a+b INTO OUTFILE '/tmp/result.text' 

FIELDS TERMINATED BY ',' 

OPTIONALLY ENCLOSED BY '"' 

LINES TERMINATED BY '\n'

FROM test_table;

Si vous utilisez INTO DUMPFILE au lieu de INTO OUTFILE, MySQL n'écrit qu'une seule ligne dans le fichier sans terminer aucune colonne ou ligne, ni effectuer tout traitement d'échappement. Cette instruction est utile si vous souhaitez stocker une valeur BLOB dans un fichier.
UNION
UNION est utilisé pour combiner les résultats de nombreuses instructions SELECT dans un jeu de résultats. La syntaxe est la suivante :

SELECT ...

UNION [ALL | DISTINCT]

SELECT ...

[UNION [ALL | DISTINCT]

SELECT ...]

est répertorié dans. chaque SELECT Les colonnes sélectionnées aux positions correspondantes dans l'instruction doivent être du même type. (Par exemple, la première colonne sélectionnée par la première instruction doit être du même type que la première colonne sélectionnée par les autres instructions.) Les noms de colonnes utilisés dans la première instruction SELECT sont également utilisés pour les noms de colonnes du résultat.
Si vous n'utilisez pas le mot-clé ALL pour UNION, toutes les lignes renvoyées sont uniques comme si vous aviez utilisé DISTINCT pour l'ensemble des résultats. Si vous spécifiez ALL, vous obtenez toutes les lignes correspondantes de toutes les instructions SELECT utilisées.
Vous pouvez mélanger UNION ALL et UNION DISTINCT dans la même requête. Les types d'UNION mixtes sont traités de telle manière que l'union DISTICT couvre toutes les unions à sa gauche. Les unions DISTINCT peuvent être générées explicitement en utilisant UNION DISTINCT, ou implicitement en utilisant UNION (sans les mots-clés DISTINCT ou ALL suivants).
Exemple simple :

(SELECT a FROM tbl_name WHERE a=10 AND B=1)

UNION

(SELECT a FROM tbl_name WHERE a=11 AND B=2)

ORDER BY a LIMIT 10;

ALL, DISTINCT et DISTINCTROW Les options
ALL, DISTINCT et DISTINCTROW spécifient si les lignes en double doivent être de retour. Si ces options ne sont pas fournies, la valeur par défaut est ALL (toutes les lignes correspondantes sont renvoyées). DISTINCT et DISTINCTROW sont des synonymes et sont utilisés pour spécifier que les lignes en double dans l'ensemble de résultats doivent être supprimées.

SELECT DISTINCT a FROM table_name;

SELECT COUNT(DISTINCT a) FROM table_name;



Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn