MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで通常のクエリ用に変数を宣言する方法|セッション変数とローカル変数の違いも解説

MySQLでは、@変数名 の形式で「セッション変数」を宣言できます。セッション変数を作成するには、SET コマンドを使用します。

セッション変数の宣言構文

SET @anyVariableName := anyValue;

一方、DECLARE コマンドを使用すると「ローカル変数」を宣言できます。ローカル変数はストアドプロシージャやストアドファンクション内でのみ有効です。

ローカル変数の宣言構文

DECLARE yourVariableName datatype;

変数の作成時にデフォルト値を設定することも可能です。

デフォルト値付きの宣言

DECLARE yourVariableName datatype DEFAULT 'yourValue';

セッション変数の実践デモ

ここからは、セッション変数の具体的な使い方をデモで確認していきます。まず、動作確認用にテーブルを作成しましょう。

1. テーブルの作成

mysql> create table SessionVariableDemo
    -> (
    -> EmployeeId varchar(10),
    -> EmployeeName varchar(30),
    -> EmployeeAge int
    -> );
Query OK, 0 rows affected (0.70 sec)

2. レコードの挿入

続いて、INSERT コマンドでテーブルにいくつかのレコードを登録します。

mysql> insert into SessionVariableDemo values('EMP-101','Carol',30);
Query OK, 1 row affected (0.20 sec)

mysql> insert into SessionVariableDemo values('EMP-102','John',26);
Query OK, 1 row affected (0.20 sec)

mysql> insert into SessionVariableDemo values('EMP-103','Bob',25);
Query OK, 1 row affected (0.19 sec)

mysql> insert into SessionVariableDemo values('EMP-104','Sam',32);
Query OK, 1 row affected (0.14 sec)

mysql> insert into SessionVariableDemo values('EMP-105','Mike',35);
Query OK, 1 row affected (0.11 sec)

mysql> insert into SessionVariableDemo values('EMP-106','David',33);
Query OK, 1 row affected (0.15 sec)

3. 登録データの確認

SELECT 文ですべてのレコードを表示してみましょう。

mysql> select * from SessionVariableDemo;

以下が出力結果です。

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| EMP-101    | Carol        |          30 |
| EMP-102    | John         |          26 |
| EMP-103    | Bob          |          25 |
| EMP-104    | Sam          |          32 |
| EMP-105    | Mike         |          35 |
| EMP-106    | David        |          33 |
+------------+--------------+-------------+
6 rows in set (0.00 sec)

4. セッション変数の作成とクエリでの利用

次に、SET コマンドでセッション変数を作成します。その後、この変数をクエリ内で使用し、「年齢が30より大きい」従業員レコードをすべて取得してみます。

まずは SET コマンドでセッション変数を作成します。

mysql> set @AgeGreaterThan30 := 30;
Query OK, 0 rows affected (0.00 sec)

そして、このセッション変数を WHERE 句で活用して、年齢が30超の従業員レコードを抽出するクエリがこちらです。

mysql> select * from SessionVariableDemo where EmployeeAge > @AgeGreaterThan30;

以下が出力結果です。

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| EMP-104    | Sam          |          32 |
| EMP-105    | Mike         |          35 |
| EMP-106    | David        |          33 |
+------------+--------------+-------------+
3 rows in set (0.00 sec)

このように、セッション変数を活用すれば、同じ値を何度も書き直すことなくクエリ内で再利用でき、条件の変更も柔軟に行えます。なお、セッション変数の有効範囲は現在の接続(セッション)内に限られる点に注意してください。

  1. MySQLでLIKEをIN()のように実装するクエリの書き方

    MySQLのIN()のような動作を実現するには、LIKE演算子と組み合わせてCOUNT()関数やIF()関数を使用します。この記事では、具体的な手順をサンプルコード付きで解説します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable    -> (    -> Subject varchar(80)    -> );Query OK, 0 rows affected (0.58 sec)

  2. MySQLでクエリの実行結果を変数に代入する方法をわかりやすく解説

    MySQLでクエリ結果を変数に代入する基本MySQLでは、@変数名 の形式でユーザー定義変数を使用することで、クエリの実行結果を変数に格納できます。代入には :=(代入演算子)を使い、SELECT文の中で直接値を取得するのが一般的な方法です。この記事では、実際にテーブルを作成し、クエリ結果を変数に代入するまでの一連の手順をサンプルコード付きで紹介します。1. サンプルテーブルを作成するまず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1864 ( Id int, FirstName var