レコードを読み出す SELECT文

テーブルからレコードを読み出すにはSELECT文を使います。単純にテーブル内のレコードを読み出すだけではなく、複数のテーブルを結合したり、条件によって一部のレコードだけを選択したり、フィールドの値を使って計算や集計を行うこともできます。

※SELECT文を試す場合、複数のレコードが登録されている方が判りやすいので、あらかじめテーブルmeiboにいくつかレコードを追加しておきましょう。ここからの解説では以下のようにレコードが挿入されているとします。

idnamerubybirthdayemail
1山田太郎ヤマダタロウ1997-7-1yamada@example.com
2碇シンジイカリシンジ2003-6-6shinji@example.com
3古代進コダイススム1997-10-31kodai@example.com
4渡瀬青葉ワタセアオバ2001-9-17awatase@example.com

テーブル meibo を完全に初期化したい場合は以下のSQLをphpmyadminのSQL欄にコピー&ペースト・実行して下さい。

SQL
DROP TABLE IF EXISTS `meibo`;

CREATE TABLE `meibo` (
  `id` int(11) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `ruby` varchar(40) DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

INSERT INTO `meibo` (`id`, `name`, `ruby`, `birthday`, `email`) VALUES
(1, '山田太郎', 'ヤマダタロウ', '1997-07-01', 'yamada@example.com'),
(2, '碇シンジ', 'イカリシンジ', '2003-06-06', 'shinji@example.com'),
(3, '古代進', 'コダイススム', '1997-10-31', 'kodai@example.com'),
(4, '渡瀬青葉', 'ワタセアオバ', '2001-09-17', 'awatase@example.com');

SELECTの基本構文1

SELECT * FROM テーブル名

もっとも基本的なSELECT文です。指定されたテーブル内のすべてのレコード・すべてのカラムを読み出します。レコードの読み出される順番は不定です。

SELECT と FROM はSQLの予約語で省略不可です。

*は『すべてのカラム』を意味する記号です。

カラムの出力される順番はCREATE TABLEのときに指定した順・INSERT INTOでカラム名リストを省略した場合の値の指定順と同じです。

SELECTとの間、とFROMの間、FROMとテーブル名の間はそれぞれ空白文字で区切ります。

SELECTの基本構文1の例

SQL
SELECT * FROM meibo;
実行結果
idnamerubybirthdayemail
1山田太郎ヤマダタロウ1997-7-1yamada@example.com
2碇シンジイカリシンジ2003-6-6shinji@example.com
3古代進コダイススム1997-10-31kodai@example.com
4渡瀬青葉ワタセアオバ2001-9-17awatase@example.com

練習問題

前回の練習で作成したテーブル ex_shohin の全レコードを得るSQLを記述しなさい。

SELECTの基本構文2(読み出すカラムを指定する)

テーブルに多数のカラムのある場合など、一部のカラムだけを読み出す場合には以下のようにします。

SELECT カラムリスト(カンマ区切り) FROM テーブル名

SELECT と FROMの間に*ではなくカラム名をカンマ区切りで列挙します。

SELECTの基本構文2の例

例1

SQL
SELECT name FROM meibo;

必要なカラムが1つだけの場合には、そのカラムの名前を書きます。

実行結果
name
山田太郎
碇シンジ
古代進
渡瀬青葉

例2

SQL
SELECT name, ruby FROM meibo;

必要なカラムが複数の場合には、カンマ区切りでカラム名を列挙します。

実行結果
nameruby
山田太郎ヤマダタロウ
碇シンジイカリシンジ
古代進コダイススム
渡瀬青葉ワタセアオバ

練習問題

以下のSQLをphpmyadminのSQL欄に貼りつけて実行してください。

SQL
USE dbkiso1;
DROP TABLE IF EXISTS `ex_shohin`;
CREATE TABLE `ex_shohin` (
  `id` int(11) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `price` int(11) DEFAULT NULL,
  `note` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

INSERT INTO `ex_shohin` (`id`, `name`, `price`, `note`) VALUES
(1, 'いちご', 200, 'ビタミンC,糖質'),
(2, 'ニンジン', 180, 'βカロテン,ビタミンB1,ビタミンB2'),
(3, 'サラダ菜', 160, 'βカロテン,ビタミンK'),
(4, 'ヨーグルト', 240, '糖質,アミノ酸,カルシウム,ビタミンB2');

前回の練習で作成したテーブル ex_shohin の全レコードの、namenote を得るSQLを記述しなさい。

コメント

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