SELECT文はSQL(Structured Query Language)において、データベースからデータを取得するための基本的なクエリです。この文を使うことで、テーブルから特定の列を選択し、条件に基づいてデータをフィルタリングし、必要に応じて並べ替えたり集計したりすることができます。
データ操作言語(DML: Data Manipulation Language)の一環として、SELECT は SQL(Structured Query Language)の最も基本的なステートメントの一つです。このステートメントは、データベースから特定のデータを取得するために使用されます。
SELECTSQL修飾子
修飾子は、SELECT 文などでデータを取得する際に、どのテーブルからデータを選択するかを指定するために使用されます。基本的には、データベース内の特定のテーブルや複数のテーブルからデータを取り出す際に必要となります。
FROM:データを取得するテーブルを指定します。
WHERE:取得するデータの条件を指定します。
LIKE:文字列検索を行うための演算子です。
GROUP BY:特定の列の値に基づいて行をグループ化します。
HAVING:GROUP BYで作成されたグループに対してフィルタリング条件を指定します。
ORDER BY:結果セットを特定の列で並び替えます。
LIMIT:結果セットから特定の数の行だけを取得します。
JOIN:他のテーブルとの結合条件を指定します。
これらの修飾子を組み合わせることで、複雑なクエリを構築し、必要なデータを効率的に取得することができます。
SELECT;
SELECT FROM;SQLちなみにSELECTのみ、SELECTと修飾子のみの式は成立しません。1064構文エラーになります。
基本構造
例としてこんなデータベースを用意しました。
db名:pc_parts
tb名:parts
こちらはパソコンパーツの比較データです。見やすさを考慮してphpMyAdminで表示しています。SQLはコンソールでも実行可能なので、こちらで詳細を説明します。

USE [データベース名];SQLまずはどのデータベースを操作するか選択します。
SELECT [カラム名] FROM [データベース名].[テーブル名];SQLデータベースを選択していない時は、データベース名とテーブル名を明示的に、フルパスで指定します。

SELECT [カラム名] FROM [テーブル名];SQLデータベースから特定のデータを選択するには、データベース、カラム、テーブルを指定します。

SELECT * FROM [テーブル名];SQL全てのカラムのデータを取得する場合、SQLのSELECT文ではワイルドカード文字 * を使用します。これにより、指定されたテーブルのすべてのカラムからデータを取得できます。

デフォルトで作成されている、mysqlデータベースのuserテーブルからは、ユーザー一覧、ホスト一覧が確認できます。
SELECT user FROM mysql.user;SQL
SELECT host FROM mysql.user;SQL
情報関数
情報関数はMySQLや他のデータベース管理システム(DBMS)において、サーバーやデータベース、ユーザー接続などに関する情報を提供するための関数です。
これらの関数を使用することで、現在のデータベース環境の設定や状態についての詳細を簡単に取得できます。情報関数はデバッグ、監視、またはセキュリティの監査などの目的で広く使われます。
関数などは、データベースから取得しているわけではないので、修飾子や、データベース、テーブル、カラムは必要ないです。データベースサーバー自体から直接情報を取得します。
SELECTで取得できるデータベースサーバー情報は一部制限があります。より多く取得したい場合はSHOWステートメントで取得します。
MySQLの公式サイト、情報関数について説明しているページのリンクです。
他にも日付の関数など色々あるので、こちらもリンク載せておきます。
サーバーのバージョン確認
SELECT VERSION();SQL
使用中のデータベース確認
SELECT database();SQL
これは「現在どのデータベースも選択されていない状態」を意味しています。

これは「現在 ‘mysql’ というデータベースが選択されている状態」を意味しています。
接続時に指定したユーザー名とホストを返す
SELECT USER();SQL
サーバーシステム変数
@@ で始まる変数はシステム変数またはセッション変数を参照し、サーバーの設定に関連する値を返します。
@ で始まる変数はユーザー定義変数であり、セッション中にユーザーが任意に設定した値を保持します。
MySQLの公式サイト、情報関数について説明しているページのリンクです。
サーバーのホスト情報
SELECT @@hostname;SQL
データベースのデフォルト文字セット
SELECT @@character_set_database;SQL
クエリキャッシュのサイズ
SELECT @@query_cache_size;SQL
最大接続数
SELECT @@max_connections;SQL
サーバーのポート番号
SELECT @@port;SQL
テーブルのデータを詳細に取得する
より詳細に調べるには、WHERE句を使います。クエリに条件を指定するために使用されます。
LIKE修飾子、ワイルドカードを使う
%、ワイルドカードで指定します。
[カラム名] FROM [テーブル名];
SELECT * FROM テーブル名 WHERE カラム名 LIKE '%文字列';
SELECT * FROM テーブル名 WHERE カラム名 LIKE '文字列%';
SELECT * FROM テーブル名 WHERE カラム名 LIKE '%文字列%';
SELECT * FROM テーブル名 WHERE カラム名 LIKE 'j%t';SQLSELECT *↠全てのカラムが選択されます。
FROM テーブル名↠どのテーブルからデータを取得するかを指定します。
WHERE カラム名 LIKE ‘%文字列’↠WHERE句で指定された条件に基づいて、このカラムの値が評価されます。LIKEで文字列検索をします。
‘%文字列’↠末尾一致検索の場合
‘文字列%’↠前方一致検索の場合
‘%文字列%’↠部分一致検索(どこかに含まれていれば良い)の場合
‘j%t’↠jで始まりtで終わる任意の長さの文字列の場合
演算子を使用
等しい
SELECT * FROM employees WHERE age = 30;SQLageが30歳の従業員を選択します。このクエリは、非常に基本的な比較演算子(=)を使用しています。
~より大きい
SELECT * FROM employees WHERE salary > 50000;SQLsalaryが50000より大きい従業員を選択します。このクエリは、より大きい(>)という条件を使用しています。
ANDを使用、尚且つ
SELECT * FROM parts WHERE price > 10000 AND manufacturer = 'NVIDIA';SQLpriceが10000より大きく、かつmanufacturerが’NVIDIA’のメーカーを選択します。複数の条件を組み合わせる基本的な方法です。

範囲指定を使用する
SELECT * FROM employees WHERE age BETWEEN 25 AND 35;SQLageが25歳から35歳の間にある従業員を選択します。BETWEENを使用して、特定の範囲内のデータを取得する方法です。
複数の条件をORで組み合わせる
SELECT * FROM parts WHERE price > 50000 OR category = 'GPU';SQLpriceが50000より大きく、または’category’であるGPUを選択します。複数の条件を組み合わせる際に、ORを使用しています。

INを使用して複数の条件をまとめる
SELECT * FROM parts WHERE name IN ('Hulu', 'Netflix', 'Disney+');SQLnameが’Hulu’, ‘Netflix’, ‘Disney+’のいずれかである動画プラットフォームを選択します。INを使うと、複数の条件をまとめて指定できます。



コメント