ひとり勉強ログ

ITエンジニアの勉強したことメモ

MySQL講座#03 データベースの出力方法

3つの列を出力

id,name,powerの3つの列を出力

[sql] SELECT id, name, power FROM chojin; [/sql]

結果

[sql] +------+--------------------------------+-------+ | id | name | power | +------+--------------------------------+-------+ | 0001 | キン肉マン | 95 | | 0002 | テリーマン | 95 | | 0003 | ロビンマスク | 96 | | 0004 | ウォーズマン | 100 | | 0005 | ラーメンマン | 97 | | 0006 | ブロッケンJr | 90 | | 0007 | ウルフマン | 80 | 以下省略 [/sql]

すべての列を出力

[sql] SELECT * FROM chojin; [/sql]

結果

[sql] +------+--------------------------------+-----------------------------------+--------------+-----------------------+--------+--------+-------+--------------------------+------------+ | id | name | kana | category | attribute | height | weight | power | origin | created | +------+--------------------------------+-----------------------------------+--------------+-----------------------+--------+--------+-------+--------------------------+------------+ | 0001 | キン肉マン | きんにくまん | 正義超人 | アイドル超人 | 185 | 90 | 95 | キン肉星 | 2020-01-25 | | 0002 | テリーマン | てりーまん | 正義超人 | アイドル超人 | 190 | 95 | 95 | アメリカ合衆国 | 2020-01-25 | | 0003 | ロビンマスク | ろびんますく | 正義超人 | アイドル超人 | 217 | 155 | 96 | イギリス | 2020-01-25 | | 0004 | ウォーズマン | うぉーずまん | 正義超人 | アイドル超人 | 210 | 150 | 100 | ロシア | 2020-01-25 | | 0005 | ラーメンマン | らーめんまん | 正義超人 | 残虐超人 | 209 | 130 | 97 | 中華人民共和国 | 2020-01-25 | | 0006 | ブロッケンJr | ぶろっけんじゅにあ | 正義超人 | アイドル超人 | 195 | 90 | 90 | 西ドイツ | 2020-01-25 | | 0007 | ウルフマン | うるふまん | 正義超人 | アイドル超人 | 190 | 102 | 80 | 日本 | 2020-01-25 | 以下省略 [/sql]

ASを使って列に別名をつける

[sql] SELECT id AS num, name AS namae, kana AS furigana, power AS chojinkyoudo FROM chojin; [/sql]

結果

[sql] +------+--------------------------------+-----------------------------------+--------------+ | num | namae | furigana | chojinkyoudo | +------+--------------------------------+-----------------------------------+--------------+ | 0001 | キン肉マン | きんにくまん | 95 | | 0002 | テリーマン | てりーまん | 95 | | 0003 | ロビンマスク | ろびんますく | 96 | | 0004 | ウォーズマン | うぉーずまん | 100 | | 0005 | ラーメンマン | らーめんまん | 97 | | 0006 | ブロッケンJr | ぶろっけんじゅにあ | 90 | | 0007 | ウルフマン | うるふまん | 80 | 以下省略 [/sql]

列の別名で日本語を使用する

[sql] SELECT id AS "番号", name AS "名前", power AS "超人強度" FROM chojin; [/sql]

結果

[sql] +--------+--------------------------------+--------------+ | 番号 | 名前 | 超人強度 | +--------+--------------------------------+--------------+ | 0001 | キン肉マン | 95 | | 0002 | テリーマン | 95 | | 0003 | ロビンマスク | 96 | | 0004 | ウォーズマン | 100 | | 0005 | ラーメンマン | 97 | | 0006 | ブロッケンJr | 90 | | 0007 | ウルフマン | 80 | 以下省略 [/sql]

定数の出力

[sql] SELECT '超人' AS mojiretsu, 66 AS kazu, '2019-01-25' AS hizuke, name, power FROM chojin; [/sql]

結果

[sql] +-----------+------+------------+--------------------------------+-------+ | mojiretsu | kazu | hizuke | name | power | +-----------+------+------------+--------------------------------+-------+ | 超人 | 66 | 2019-01-25 | キン肉マン | 95 | | 超人 | 66 | 2019-01-25 | テリーマン | 95 | | 超人 | 66 | 2019-01-25 | ロビンマスク | 96 | | 超人 | 66 | 2019-01-25 | ウォーズマン | 100 | | 超人 | 66 | 2019-01-25 | ラーメンマン | 97 | | 超人 | 66 | 2019-01-25 | ブロッケンJr | 90 | | 超人 | 66 | 2019-01-25 | ウルフマン | 80 | 以下省略 [/sql]

結果から重複行を省く

[sql] SELECT DISTINCT category FROM chojin; [/sql]

結果

[sql] +--------------+ | category | +--------------+ | 正義超人 | | 悪魔超人 | | 完璧超人 | +--------------+ [/sql]

重複を省くデータにNULLがあった場合、NULLも消えずに残る。

複数の列の前にDISTINCTを置いた場合

[sql] SELECT DISTINCT category, attribute FROM chojin; [/sql]

結果

[sql] +--------------+-----------------------+ | category | attribute | +--------------+-----------------------+ | 正義超人 | アイドル超人 | | 正義超人 | 残虐超人 | | 悪魔超人 | 7人の悪魔超人 | | 悪魔超人 | 悪魔六騎士 | | 完璧超人 | 完璧無量大数軍 | | 完璧超人 | 完璧超人始祖 | +--------------+-----------------------+ [/sql]

DISTINCTは先頭の列名の前にしか書くことはできない。

WHERE句による行の選択

[sql] SELECT name, category FROM chojin WHERE category = '正義超人'; [/sql]

結果

[sql] +-----------------------+--------------+ | name | category | +-----------------------+--------------+ | キン肉マン | 正義超人 | | テリーマン | 正義超人 | | ロビンマスク | 正義超人 | | ウォーズマン | 正義超人 | | ラーメンマン | 正義超人 | | ブロッケンJr | 正義超人 | | ウルフマン | 正義超人 | +-----------------------+--------------+ [/sql]

WHERE句で指定したものが正しく選択されているかどうか確認するためcategory列を出力しているが、必ずそうしなければならない訳ではない。知りたいのが名前だけであれば、name列だけを出力することもできる。

[sql] SELECT name FROM chojin WHERE category = '正義超人'; [/sql]

結果

[sql] +-----------------------+ | name | +-----------------------+ | キン肉マン | | テリーマン | | ロビンマスク | | ウォーズマン | | ラーメンマン | | ブロッケンJr | | ウルフマン | +-----------------------+ [/sql]

SQLでは句の記述順が決まっており、勝手に変えることはできない。

WHERE句は、必ずFROM句の直後に書く。