Heim  >  Artikel  >  Datenbank  >  Verstehen Sie Beispiele für Select-Anweisungsoperationen in MySQL

Verstehen Sie Beispiele für Select-Anweisungsoperationen in MySQL

怪我咯
怪我咯Original
2017-04-01 10:12:051585Durchsuche


Syntax auswählen

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 wird verwendet, um ausgewählte Zeilen aus einer oder mehreren Tabellen wiederherzustellen und kann hinzufügen UNION-Anweisung und Unter-Abfrage.
Jeder select_expr gibt eine Spalte an, die Sie wiederherstellen möchten, und table_references gibt die Tabelle oder Tabellen an, aus denen die Zeile wiederhergestellt wird.
Einfache Abfrage

SELECT columna columnb FROM mytable;

ORDER BY-Abfrage

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;

GROUP BY-Abfrage

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;

LIMIT-Abfrage

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 'file_name' Form von SELECT kann die ausgewählten Zeilen in eine Datei schreiben. Die Datei wird auf dem Serverhost erstellt. Sie müssen daher über FILE-Berechtigungen verfügen, um diese Syntax verwenden zu können. Dateiname darf keine Originaldatei sein.

Die Hauptfunktion der SELECT...INTO OUTFILE-Anweisung besteht darin, Ihnen zu ermöglichen, eine Tabelle sehr schnell auf dem Servercomputer zu sichern. Wenn Sie die Ergebnisdatei auf einem anderen Client-Host als dem Server-Host erstellen möchten, können Sie SELECT...INTO OUTFILE nicht verwenden. In diesem Fall sollten Sie einen Befehl wie „mysql -e „SELECT ... > Dateiname“ auf dem Client-Host verwenden, um die Datei zu generieren.

SELECT...INTO OUTFILE ist das Komplement von LOAD DATA INFILE; die für den exort_options-Teil der Anweisung verwendete Syntax enthält teilweise FIELDS- und LINES-Klauseln, die gleichzeitig mit der LOAD DATA INFILE-Anweisung verwendet werden.

Im folgenden Beispiel wird eine Datei mit durch Kommas getrennten Werten generiert. Dieses Format kann von vielen Programmen verwendet werden

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

FIELDS TERMINATED BY ',' 

OPTIONALLY ENCLOSED BY '"' 

LINES TERMINATED BY '\n'

FROM test_table;

Wenn Sie INTO DUMPFILE anstelle von INTO OUTFILE verwenden, schreibt MySQL nur eine einzelne Zeile in die Datei, ohne Spalten oder Zeilen zu terminieren Führen Sie alle Escape-Verarbeitungen durch. Diese Anweisung ist nützlich, wenn Sie einen BLOB-Wert in einer Datei speichern möchten.
UNION
UNION wird verwendet, um die Ergebnisse vieler SELECT-Anweisungen in einer Ergebnismenge zu kombinieren. Die Syntax lautet wie folgt:

SELECT ...

UNION [ALL | DISTINCT]

SELECT ...

[UNION [ALL | DISTINCT]

SELECT ...]

ist in aufgeführt jedes SELECT Die ausgewählten Spalten an entsprechenden Positionen in der Anweisung sollten vom gleichen Typ sein. (Zum Beispiel sollte die erste von der ersten Anweisung ausgewählte Spalte vom gleichen Typ sein wie die erste von den anderen Anweisungen ausgewählte Spalte.) Die in der ersten SELECT-Anweisung verwendeten Spaltennamen werden auch für die Spaltennamen des Ergebnisses verwendet.
Wenn Sie für UNION nicht das Schlüsselwort ALL verwenden, sind alle zurückgegebenen Zeilen eindeutig, als ob Sie DISTINCT für die gesamte Ergebnismenge verwendet hätten. Wenn Sie ALL angeben, erhalten Sie alle passenden Zeilen aus allen verwendeten SELECT-Anweisungen.
Sie können UNION ALL und UNION DISTINCT in derselben Abfrage mischen. Gemischte UNION-Typen werden so behandelt, dass die DISTICT-Union alle ALL-Unions links von ihr abdeckt. DISTINCT-Unions können explizit mit UNION DISTINCT oder implizit mit UNION (ohne die folgenden Schlüsselwörter DISTINCT oder ALL) generiert werden.
Einfaches Beispiel:

(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 und DISTINCTROW Die Optionen
ALL, DISTINCT und DISTINCTROW geben an, ob doppelte Zeilen erstellt werden sollen zurück sein. Wenn diese Optionen nicht angegeben sind, ist der Standardwert ALL (alle übereinstimmenden Zeilen werden zurückgegeben). DISTINCT und DISTINCTROW sind Synonyme und werden verwendet, um anzugeben, dass doppelte Zeilen im Ergebnissatz entfernt werden sollen.

SELECT DISTINCT a FROM table_name;

SELECT COUNT(DISTINCT a) FROM table_name;



Das obige ist der detaillierte Inhalt vonVerstehen Sie Beispiele für Select-Anweisungsoperationen in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn