MySQL SELECT ステートメントと例
⚡ スマートサマリー
その MySQL SELECT文は1つ以上のテーブルから行を取得します。以下の例はすべてmyflixサンプルデータベースに対して実行され、単純なスタークエリから式、列エイリアス、文字列関数へと移行していきます。

SELECTクエリとは何ですか? MySQL?
SELECTクエリ は、データを取得するために使用されます。 MySQL データベース。データベースは、後で取り出すためにデータを保存します。 MySQL SELECT文は、指定された条件に一致するデータベーステーブルから1つ以上の行を返すためのものです。SELECTクエリは、PHPやRubyなどのスクリプト言語で使用することも、コマンドプロンプトから実行することもできます。
SELECTは最も頻繁に実行するコマンドなので、サンプルデータに触れる前にその構文を習得しておくと良いでしょう。
SQL SELECT文の構文
SELECTは最も頻繁に使用されるSQLコマンドであり、その一般的な構文は以下のとおりです。
SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];
Pr_media
- SELECT は、データを取得することをデータベースに知らせる SQL キーワードです。
- [区別 | 全て] これらは、SQL SELECT 文から返される結果を細かく調整するためのオプションのキーワードです。何も指定しない場合は、デフォルトで ALL が使用されます。
- {*| [フィールド式 [AS 新しい名前]} 少なくとも1つの部分を指定する必要があります。「*」は、指定されたテーブル名からすべてのフィールドを選択します。fieldExpressionは、指定されたフィールドに対して、数値の加算や2つの文字列フィールドの結合などの計算を実行します。
- FROM tableNameは必須項目であり、少なくとも1つのテーブル名を指定する必要があります。複数のテーブルを指定する場合は、カンマで区切るか、JOINキーワードを使用して結合する必要があります。
- NeoCity conditionは省略可能です。クエリから返される結果セットの条件を指定します。
- グループ化 同じフィールド値を持つレコードをまとめるために使用されます。
- HAVING condition は、GROUP BY キーワードを使用する際に条件を指定するために使用されます。
- ORDER BY 結果セットのソート順を指定するために使用されます。
*
アスタリスク(*)記号は、テーブル内のすべての列を選択します。簡単なSELECT文は以下のようになります。
SELECT * FROM `members`;
上記のステートメントは、メンバーテーブルからすべてのフィールドを選択します。セミコロンはステートメントの終了記号です。必須ではありませんが、このようにステートメントを終了することは良い習慣とされています。
SELECT DISTINCT と LIMIT で MySQL
構文における2つのオプションキーワードは、初心者がテーブルが大きくなるとすぐに遭遇するため、詳しく見ておく価値があります。
DISTINCT 結果セットから重複する行を削除します。映画テーブルには2007年に公開された複数の映画が格納されているため、通常のクエリではその年が繰り返されます。DISTINCTは各値を一度だけ返します。
SELECT DISTINCT `year_released` FROM `movies`;
LIMIT 返される行数を制限することで、クライアントが数百万件ものレコードを取得するようなクエリから保護されます。
SELECT * FROM `movies` LIMIT 5;
| キーワード | 何それがありません | いつ使用するか |
|---|---|---|
| すべて(デフォルト) | 重複を含む、一致するすべての行を返します。 | 生の記録を数えたりリストアップしたりする |
| DISTINCT | 重複する行を1つにまとめる | 独自の価値観のリストを作成する |
| LIMIT | 最初のN行のみを返します | データのプレビューまたはページング結果 |
構文が確定したら、サンプルデータベースを使ってこれらの条項を実際に使ってみよう。
SELECT文の実践例
クリックしてダウンロードする 実例に使用したmyflixデータベース。
.sql ファイルをインポートする方法を学ぶことができます MySQL ワークベンチ.
以下の2つの表を用いて、例題を実行します。
表1: メンバー テーブル
| 会員番号 | フルネーム | 性別 | 生年月日 | 実在住所 | 郵便番号 | 連絡先番号 | メール |
|---|---|---|---|---|---|---|---|
| 1 | ジャネット・ジョーンズ | 女性 | 21-07-1980 | 第一街区画 No 4 | 専用バッグ | 0759 253 542 | janetjones@yagoo.cm |
| 2 | ジャネット・スミス・ジョーンズ | 女性 | 23-06-1980 | メルローズ 123 | NULL | NULL | jj@fstreet.com |
| 3 | ロバート・フィル | 男性 | 12-07-1989 | サード ストリート 3 | NULL | 12345 | rm@tstreet.com |
| 4 | グロリア・ウィリアムズ | 女性 | 14-02-1984 | セカンドストリート2 | NULL | NULL | NULL |
表2: 映画 テーブル
| 映画ID | タイトル | ディレクター | リリース年 | カテゴリ ID |
|---|---|---|---|---|
| 1 | パイレーツ・オブ・カリビアン 4 | ロブ·マーシャル | 2011 | 1 |
| 2 | サラ・マーシャルを忘れる | ニコラス・ストーラー | 2008 | 2 |
| 3 | X-メン | NULL | 2008 | NULL |
| 4 | Code 名前はブラック | エドガー・ジムズ | 2010 | NULL |
| 5 | ダディーズ・リトル・ガールズ | NULL | 2007 | 8 |
| 6 | 天使と悪魔 | NULL | 2007 | 6 |
| 7 | ダ・ヴィンチ Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | ジョン・シュルツ | 2005 | 8 |
| 16 | 67% 有罪 | NULL | 2012 | NULL |
メンバーリストの取得
データベースに登録されている図書館会員の一覧を取得したいとします。そのためには、以下のスクリプトを使用します。
SELECT * FROM `members`;
スクリプトを実行する MySQL Workbenchは以下の結果を出力します。
| 会員番号 | フルネーム | 性別 | 生年月日 | 実在住所 | 郵便番号 | 連絡先番号 | メール |
|---|---|---|---|---|---|---|---|
| 1 | ジャネット・ジョーンズ | 女性 | 21-07-1980 | 第一街区画 No 4 | 専用バッグ | 0759 253 542 | janetjones@yagoo.cm |
| 2 | ジャネット・スミス・ジョーンズ | 女性 | 23-06-1980 | メルローズ 123 | NULL | NULL | jj@fstreet.com |
| 3 | ロバート・フィル | 男性 | 12-07-1989 | サード ストリート 3 | NULL | 12345 | rm@tstreet.com |
| 4 | グロリア・ウィリアムズ | 女性 | 14-02-1984 | セカンドストリート2 | NULL | NULL | NULL |
このクエリは、メンバーテーブルからすべての行と列を返しました。
特定の列を選択する
例えば、full_names、gender、physical_address、emailの各フィールドのみに関心があるとします。以下のスクリプトでこれを実現できます。
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
スクリプトを実行する MySQL Workbenchは以下の結果を出力します。
| フルネーム | 性別 | 実在住所 | メール |
|---|---|---|---|
| ジャネット・ジョーンズ | 女性 | 第一街区画 No 4 | janetjones@yagoo.cm |
| ジャネット・スミス・ジョーンズ | 女性 | メルローズ 123 | jj@fstreet.com |
| ロバート・フィル | 男性 | サード ストリート 3 | rm@tstreet.com |
| グロリア・ウィリアムズ | 女性 | セカンドストリート2 | NULL |
式を使って映画リストを取得する
SELECT文でも式を使用できます。たとえば、映画のタイトルと監督名を1つのフィールドに、監督名を括弧で囲み、さらに映画の公開年を記載した映画のリストを作成したいとします。次のスクリプトはそれを実現します。
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
Pr_media
- Concat() MySQL この関数は列の値を結合します。
- 「Concat(`title`, ' (', `director`, ')')」という行は、タイトルを取得し、開始括弧と監督の名前を追加し、最後に終了括弧を追加します。
- Concat() 関数内では、文字列の各部分はカンマで区切られます。
スクリプトを実行する MySQL Workbenchは以下の結果セットを生成します。
| Concat(`タイトル`, ' (', `ディレクター`, ')') | リリース年 |
|---|---|
| パイレーツ・オブ・カリビアン 4 (ロブ・マーシャル) | 2011 |
| サラ・マーシャルを忘れる(ニコラス・ストーラー) | 2008 |
| NULL | 2008 |
| Code 名前:ブラック(エドガー・ジムズ) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners(ジョン・シュルツ) | 2005 |
| NULL | 2012 |
注意: Concat() は、引数のいずれかが NULL の場合に NULL を返します。そのため、監督のいない映画は上記で NULL と表示されます。
エイリアスフィールド名
上記の例では、連結コードがフィールド名として返されました。結果セットでより分かりやすいフィールド名を使用するには、列エイリアスを適用します。基本的な構文は以下のとおりです。
SELECT `column_name|value|expression` [AS] `alias_name`;
Pr_media
- 「SELECT `column_name|value|expression`」 これは通常のSELECT文であり、列名、値、または式を指定できます。
- "[として]" は、エイリアス名の前に指定するオプションのキーワードです。
- 「`エイリアス名`」 これは、結果セットでフィールド名として返されるエイリアスです。
より意味のある列名を使用した同じクエリ:
SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;
次のような結果が得られました。
| コンキャット | リリース年 |
|---|---|
| パイレーツ・オブ・カリビアン 4 (ロブ・マーシャル) | 2011 |
| サラ・マーシャルを忘れる(ニコラス・ストーラー) | 2008 |
| NULL | 2008 |
| Code 名前:ブラック(エドガー・ジムズ) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners(ジョン・シュルツ) | 2005 |
| NULL | 2012 |
会員リストに生年を表示する
会員番号、氏名、生年月日を表示する全会員のリストが必要だとします。LEFT 文字列関数を使用して、trac生年月日欄から、生年月日を取得します。
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
Pr_media
- 「LEFT(`生年月日`,4)」 LEFT文字列関数 生年月日をパラメータとして受け取り、左から4文字のみを返します。
- 「「誕生年」として」 は 列の別名 結果に返された。 AS キーワードはオプションです; それを省略してもクエリは正常に動作します。
クエリを実行する MySQL myflixdbに対してWorkbenchを実行すると、以下のような結果が得られます。
| 会員番号 | フルネーム | 生年 |
|---|---|---|
| 1 | ジャネット・ジョーンズ | 1980 |
| 2 | ジャネット・スミス・ジョーンズ | 1980 |
| 3 | ロバート・フィル | 1989 |
| 4 | グロリア・ウィリアムズ | 1984 |
手書きのクエリは、結果セットを取得する方法の一つにすぎません。Workbenchを使えば、クエリを自動的に作成することもできます。
SQLの使用 MySQL ワークベンチ
これから使用します MySQL カテゴリテーブルからすべてのフィールド名を表示するスクリプトを生成するためのワークベンチ。
1. カテゴリテーブルを右クリックします。「行の選択 - 制限1000」をクリックします。
2. MySQL Workbenchは自動的にSQLクエリを作成し、エディタに貼り付けます。
3. クエリ結果は、エディタの下のグリッドに表示されます。
スクリーンショットが示すように、SELECT文は私たちが独自に作成したものではありません。 MySQL Workbenchがそれを生成してくれました。
SELECT SQLコマンドを使用する理由 MySQL 作業台?
SQL SELECT コマンドを学ぶ必要があるのはなぜかと疑問に思うかもしれません。 MySQL Workbench は SQL 言語の知識がなくても同じ結果を返します。そのショートカットは可能ですが、 SELECTコマンドを学ぶ あなたにもっと与える 柔軟性 (NAIST) と コントロール あなたの上に SQL SELECT ステートメント.
MySQL Workbench は「例によるクエリ(QBE)ツール。SQL文をより速く生成し、ユーザーの生産性を向上させることを目的としています。
SQL SELECTコマンドを学ぶことで、 複雑なクエリ クエリバイサンプルユーティリティなどでは簡単に生成できないもの MySQL ワークベンチ。
生産性を向上させるには、 コードを生成する MySQL ワークベンチをタップし、その後、 カスタマイズ それに 要件を満たすそれは、SQL文の仕組みを理解して初めて可能になります。



