LoginSignup
0
2

More than 5 years have passed since last update.

SQL SELECT基礎(4-1) 列を減らす (project 射影)

Last updated at Posted at 2017-05-31

この記事は「SQL SELECT基礎」の第4回目です。
SQL SELECT基礎 目次
←前の記事はSQL SELECT基礎(3) その場で表を作る
→次の記事はSQL SELECT基礎(4-2) 行を減らす (WHERE 制限)

※以下がわかってたらこの章は飛ばしてOK

-- このSQL文の結果を説明して下さい。もちろん暗算で。
SELECT 1,"hello" FROM sample

表の加工(1) 列を減らす (project 射影)

SELECT文は、既にある表を加工してその場で別の表を作っていく構文です。
最も単純なのがSELECTからFROMの間に書く、1行1行に対して単純な加工を行う構文です。
projection(射影)操作と言ったりします。

こう、表からいくつか列を除外するイメージ。
image.png

また、スクリプト言語でよくあるmap関数に相当する機能も持ち合わせています。

今回のサンプル表

image.png

こんな感じでいいや。

(
SELECT 1 AS id, "taro" AS name, "1990-01-01" AS birthday
UNION ALL
SELECT 2, "hanako", "1995-04-12"
UNION ALL
SELECT 3, "jiro", "2004-03-02"
) AS sample

以降のSQLでsampleと書いている部分は↑に置き換えると実行できます。

例えば SELECT * FROM sample と書いてあるSQLを実行したかったら、↓のような感じでコピペして実行して下さいね。

SELECT * FROM 

(
SELECT 1 AS id, "taro" AS name, "1990-01-01" AS birthday
UNION ALL
SELECT 2, "hanako", "1995-04-12"
UNION ALL
SELECT 3, "jiro", "2004-03-02"
) AS sample

全列を取得する*

無加工で全列取得するときは*と書くことができます。

SELECT * FROM sample

image.png

列を書き並べる

表を構成する列の名前を書き並べることもできます。*を使わずに丁寧に書くとこうです。

SELECT id,name,birthday FROM sample

SELECT "hello world"と違い、ダブルクォーテーションで囲っていないことに注意して下さい。id, name, birthday は列名であって、文字列ではないからです。

ここまでで察しがつくと思いますが、書き並べる列を減らせば、結果の列が減ります。

SELECT id,name FROM sample

image.png

書く順番を変えれば列の順番も変わります。

SELECT name,id FROM sample

image.png

簡単ですね。

列を増やす

逆にスカラ値をSELECT文中に直接書いて、列を増やすこともできます。

SELECT id, 1 FROM sample

FROM句があると、表を1行1行読みながら動作するため、定数値を書いていても行数分出力されます。

冒頭のクイズ結果は

SELECT 1,"hello" FROM sample

image.png

sampleテーブルの行数分出力される、ということになります。

列を加工する

簡単な加工であれば、まとめて書いてしまうことができます。加工した後の値と、加工前の値を並べることもできます。

SELECT id * 2, id FROM sample

列同士を使って何か計算する

複数の列の値を同時に使って計算することもできます。たとえば文字列連結のCONCAT()関数を使って、適当な文字列を作ることもできます。

SELECT CONCAT(name, "さんは", birthday, "生まれです") FROM sample

image.png

他にも四則演算やMySQL組み込みの関数を組み合わせたり、結構いろんなことができます。

感覚がつかめてきたでしょうか?

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2