MariaDB、MySQL SELECT文

データベース

SELECT文はSQL(Structured Query Language)において、データベースからデータを取得するための基本的なクエリです。この文を使うことで、テーブルから特定の列を選択し、条件に基づいてデータをフィルタリングし、必要に応じて並べ替えたり集計したりすることができます。

データ操作言語(DML: Data Manipulation Language)の一環として、SELECT は SQL(Structured Query Language)の最も基本的なステートメントの一つです。このステートメントは、データベースから特定のデータを取得するために使用されます。

SELECT
SQL

修飾子

修飾子は、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';
SQL

SELECT *↠全てのカラムが選択されます。
FROM テーブル名↠どのテーブルからデータを取得するかを指定します。
WHERE カラム名 LIKE ‘%文字列’↠WHERE句で指定された条件に基づいて、このカラムの値が評価されます。LIKEで文字列検索をします。

‘%文字列’↠末尾一致検索の場合
‘文字列%’↠前方一致検索の場合
‘%文字列%’↠部分一致検索(どこかに含まれていれば良い)の場合
‘j%t’↠jで始まりtで終わる任意の長さの文字列の場合

演算子を使用

等しい

SELECT * FROM employees WHERE age = 30;
SQL

ageが30歳の従業員を選択します。このクエリは、非常に基本的な比較演算子(=)を使用しています。

~より大きい

SELECT * FROM employees WHERE salary > 50000;
SQL

salaryが50000より大きい従業員を選択します。このクエリは、より大きい(>)という条件を使用しています。

ANDを使用、尚且つ

SELECT * FROM parts WHERE price > 10000 AND manufacturer = 'NVIDIA';
SQL

priceが10000より大きく、かつmanufacturerが’NVIDIA’のメーカーを選択します。複数の条件を組み合わせる基本的な方法です。

範囲指定を使用する

SELECT * FROM employees WHERE age BETWEEN 25 AND 35;
SQL

ageが25歳から35歳の間にある従業員を選択します。BETWEENを使用して、特定の範囲内のデータを取得する方法です。

複数の条件をORで組み合わせる

SELECT * FROM parts WHERE price > 50000 OR category = 'GPU';
SQL

priceが50000より大きく、または’category’であるGPUを選択します。複数の条件を組み合わせる際に、ORを使用しています。

INを使用して複数の条件をまとめる

SELECT * FROM parts WHERE name IN ('Hulu', 'Netflix', 'Disney+');
SQL

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

コメント

タイトルとURLをコピーしました