SQLを学び始めたステップではなかなか使用することがないSQLのAS句。少し余裕が出てきたタイミングでぜひ使用してみることをおすすめします。今回の記事では、SQL AS句の主な機能をご紹介しつつ、実際に使用する方法をハンズオンで体験していきましょう。
- SQL AS句はカラムに別名を付けられる機能がある
- MySQLを使ったSQL AS句のハンズオン
SQL AS句とは
SQL AS句には、以下2つの機能があります。
- テーブルのレコードを取得する際、カラムに別の名前を付けて表示する
- カラムに対して演算(掛け算や足し算など)を行った結果を取得する際、カラムに別の名前を付けて表示する
重要なのは、SQLのAS句に「カラムに別の名前を付けて表示する」機能があるということです。SQL REPLACE関数の構文を見てみましょう。
SELECT カラム名 AS 新しく命名するカラム名 FROM テーブル名 (WHERE 条件);
すでにSELECTステートメントの構文を知っている方であれば、AS句の加わる構文も難しくはないはずです。実際にSQL AS句が使用されている構文を見て、さらに認識を深めましょう。
以下のようなテーブルがあることを前提とします。
+--------+-------+ | name | price | +--------+-------+ | Banana | 100 | | Apple | 200 | | Bread | 400 | | Cookie | 240 | | Beef | 1000 | | Onion | 300 | +--------+-------+
上記のテーブルを再び取得する際、SQLのAS句を使用して、nameカラムを「food」にしてみましょう。
mysql> SELECT name AS food, price FROM foods; +--------+-------+ | food | price | +--------+-------+ | Banana | 100 | | Apple | 200 | | Bread | 400 | | Cookie | 240 | | Beef | 1000 | | Onion | 300 | +--------+-------+ 6 rows in set (0.00 sec)
「name AS food」という形で、nameカラムをfoodという名前に変更しています。
次は演算子を使って、priceカラムの値段を全て2倍にし、「priceX2」という名前に変えてみましょう。
mysql> SELECT name, price*2 AS priceX2 FROM foods; +--------+---------+ | name | priceX2 | +--------+---------+ | Banana | 200 | | Apple | 400 | | Bread | 800 | | Cookie | 480 | | Beef | 2000 | | Onion | 600 | +--------+---------+ 6 rows in set (0.00 sec)
演算子を使用したことでSELECT文が少々複雑になりましたが、AS句の役割自体は非常にシンプルです。このようにSQLのAS句を使って、カラムに別の名前をつけて表示させることが可能となっています。
MySQLでSQL AS句ハンズオンにトライ
こちらでは、実際にMySQLというデータベースを使用してSQLのAS句を使ってみましょう。
準備
まずはMySQLを使用するための準備をしていきます。
MySQLのインストール・接続
まだMySQLをインストールしていない場合は、インストールしましょう。
$ brew install mysql
MySQLのインストールが終了したら、接続します。
$ sudo mysql -u root -p
データベースの作成
次にデータベースをMySQL上に作成し、使用するデータベースを指定しましょう。
mysql> CREATE DATABASE potepan; Query OK, 1 row affected (0.00 sec) mysql> USE potepan;
これでMySQLを使用する準備は完了しました。
ベースとなるテーブルの作成
次にベースとなるテーブルを作成しましょう。
mysql> CREATE TABLE animals(animal VARCHAR(50), name VARCHAR(50), age INT); Query OK, 0 rows affected (0.01 sec) mysql> INSERT INTO animals VALUES('cat', 'Tom', 5), ('dog', 'Pochi', 8), ('tiger', 'Shima', 10); Query OK, 3 rows affected (0.00 sec)
テーブルの状態
mysql> SELECT * FROM animals; +--------+-------+------+ | animal | name | age | +--------+-------+------+ | cat | Tom | 5 | | dog | Pochi | 8 | | tiger | Shima | 10 | +--------+-------+------+ 3 rows in set (0.00 sec)
SQL AS句を使ってカラムの命名
それでは、最初に見た例のようなカラムの命名を体験してみましょう。animalカラムを「pet」という名前のカラムに変えてみます。
mysql> SELECT animal AS pet, name, age FROM animals; +-------+-------+------+ | pet | name | age | +-------+-------+------+ | cat | Tom | 5 | | dog | Pochi | 8 | | tiger | Shima | 10 | +-------+-------+------+ 3 rows in set (0.00 sec)
SELECTステートメントで出力された通り、animalカラムがpetカラムへと変更されています。
SQL AS句を使ってカラムの命名2
次も同様にカラムの命名をしていきますが、今度はnameカラムを「nickname」と命名しつつ、nicknameカラムのみの取得をしてみましょう。
mysql> SELECT name AS nickname FROM animals; +----------+ | nickname | +----------+ | Tom | | Pochi | | Shima | +----------+ 3 rows in set (0.00 sec)
SELECTステートメントは従来通り、指定したカラムだけを取得します。AS句と組み合わせたとしてもその仕様は変わりません。
演算を行ったカラムの命名
次に演算を行ったカラムを命名して、SELECT文で取得してみましょう。ageカラムの数値に8をかけて、「X8age」というカラム名に変更します。
mysql> SELECT age * 8 AS X8age FROM animals; +-------+ | X8age | +-------+ | 40 | | 64 | | 80 | +-------+ 3 rows in set (0.00 sec)
意図通り、カラム名を「Xage」に変更し、数値も8倍にすることができました。
数値の並び替え(ORDER BY)と組み合わせる
SQL AS句は他の句と組み合わせて使用することも可能です。こちらではORDER BY句をAS句と併用し、age順に並べ替えてみましょう。
mysql> SELECT animal AS pet, name, age FROM animals ORDER BY name; +-------+-------+------+ | pet | name | age | +-------+-------+------+ | dog | Pochi | 8 | | tiger | Shima | 10 | | cat | Tom | 5 | +-------+-------+------+ 3 rows in set (0.00 sec)
ORDER BYでnameカラムを指定することで、nameカラムを基準にしてアルファベット順にレコードを並び替えることができました。
【参考記事】
▶︎SQL order byでソート指定するサンプルコード集 指定のレコードだけ先頭に並べるには?
まとめ
今回の記事では、SQL AS句の主な機能をご紹介しつつ、実際に使用する方法をハンズオンで体験していきました。使ってみると非常に簡単なAS句ですが、SQLステートメントの可読性が高まるため便利です。特に第三者が見るような場面では、積極的にSQLのAS句を使用していきましょう。
【参考記事】
▶︎MySQLのインデックス作成方法 効いてないと思ったらexplainで確認する
▶︎MySQLのleft joinサンプルコード onとusingの結合条件指定の違いは?
▶︎MySQLのlimitのサンプルコード集 offset指定や効率的な件数取得方法は?
あくまでSQL AS句は、カラム名の後に「AS 別名」と続き、別名に変える働きをしているだけです。複雑なSQL文になっても惑わされないようにしましょう。
このようにカラム名を変えることによって、カラムを取得する意図を明示的に表しやすいというメリットがあります。2つ目の例の「priceX2」のように「2倍の値段」である意図が伝われば、後から見たときに自分も他の人も分かりやすくなります。