mysql での select ステートメント操作の例を理解する

怪我咯
リリース: 2017-04-01 10:12:05
オリジナル
1590 人が閲覧しました


Select 構文

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 は、1 つ以上のテーブルから選択された行を復元するために使用され、UNIONステートメントとサブクエリを結合できます。 各 select_expr は復元する列を示し、table_references はどのテーブルから行が復元されるかを示します。

単純なクエリ

SELECT columna columnb FROM mytable;
ログイン後にコピー

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;
ログイン後にコピー

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;
ログイン後にコピー

LIMITクエリ

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;
ログイン後にコピー

選択...OUTFILE へ

選択.. .INTO OUTFILE SELECT の 'file_name' 形式では、選択した行をファイルに書き込むことができます。ファイルはサーバー ホスト上に作成されるため、この構文を使用するには FILE 権限が必要です。 file_name をオリジナルのファイルにすることはできません。


SELECT...INTO OUTFILE ステートメントの主な機能は、テーブルをサーバー マシンに非常に迅速にダンプできるようにすることです。結果ファイルをサーバー ホスト以外のクライアント ホストに作成する場合、SELECT...INTO OUTFILE は使用できません。この場合、クライアント ホストで「mysql -e "SELECT ..." > file_name」などのコマンドを使用してファイルを生成する必要があります。

SELECT...INTO OUTFILE は LOAD DATA INFILE を補完するもので、ステートメントの exort_options 部分に使用される構文には、LOAD DATA INFILE ステートメントと同時に使用される部分的な FIELDS 句と LINES 句が含まれています。

以下の例では、各値をカンマで区切ってファイルが生成されます。この形式は多くのプログラムで使用できます


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

FIELDS TERMINATED BY ',' 

OPTIONALLY ENCLOSED BY '"' 

LINES TERMINATED BY '\n'

FROM test_table;
ログイン後にコピー

INTO OUTFILE の代わりに INTO DUMPFILE を使用すると、MySQL はファイルに単一行を書き込むだけで、列や行を終了せず、エスケープ処理も実行しません。このステートメントは、BLOB 値をファイルに保存する場合に便利です。


UNIONUNION は、多くの SELECT ステートメントの結果を結果セットに結合するために使用されます。構文は次のとおりです。

SELECT ...

UNION [ALL | DISTINCT]

SELECT ...

[UNION [ALL | DISTINCT]

SELECT ...]
ログイン後にコピー

各 SELECT ステートメントの対応する位置にリストされている選択された列は、同じ型である必要があります。 (たとえば、最初のステートメントで選択される最初の列は、他のステートメントで選択される最初の列と同じ型である必要があります。)最初の SELECT ステートメントで使用される列名は、結果の列名にも使用されます。

UNION に対してキーワード ALL を使用しない場合、返される行はすべて、結果セット全体に対して DISTINCT を使用したかのように一意になります。 ALL を指定すると、使用されたすべての SELECT ステートメントから一致するすべての行が取得されます。
同じクエリ内で UNION ALL と UNION DISTINCT を混在させることができます。混合 UNION 型は、DISTIC 共用体がその左側にあるすべての ALL 共用体をカバーするように処理されます。 DISTINCT 共用体は、UNION DISTINCT を使用して明示的に生成することも、UNION を使用して暗黙的に(後に続く DISTINCT または ALL キーワードなしで)生成することもできます。

簡単な例:

(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、および DISTINCTROWALL、DISTINCT および DISTINCTROW オプションは、重複行を返すかどうかを指定します。これらのオプションが指定されていない場合、デフォルト値は ALL (一致するすべての行が返されます) です。 DISTINCT と DISTINCTROW は同義語で、結果セット内の重複行を
削除する必要があることを指定するために使用されます。
りー



以上がmysql での select ステートメント操作の例を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!