はじめに
前回まではSQLの中でもDDLを中心に説明をまとめていました。
今回はDML。データを操作するSQLをまとめていきたいと思います。
前回使用した「sqltest」データベースと「goods」テーブルを使って説明をまとめていきます。
DML(Data Manipulation Language)
データを操作するSQLで、私は面接でこれの有名な文を四つ答えるように質問されて惨敗しました。
命令 | 機能 |
---|---|
INSERT | データの登録 |
UPDATE | データの更新 |
DELETE | データの削除 |
SELECT | データの検索 |
主なDML文は上記のとおりです。
SELECT文
SELECT文はデータの取得をする際に使います。
SELECTを使ったカラムの指定の仕方は下記のとおりです
mysql> SELECT 《カラム名》 FROM 《テーブル名》
もし、テーブルに登録されている全てのカラムのデータを取得する時は下記のようにします。
mysql> SELECT * FROM 《テーブル名》
SELECT句においてはこのアスタリスクはワイルドカードと言います。
ワイルドカード
ワイルドカードとは「すべてのパターンにマッチするもの」という意味があり、文字の代わりとして使うことができる特殊な記号の一つです。
SELECT句ではアスタリスクが「全てのカラム」という意味のワイルドカードとして定義されているので、全てのデータを取得ができます。
INSERT文
INSERT文はテーブルにデータを登録するためのSQL文です。
INTO句と組み合わせて使用します。
また設定する値はVALIE句を使います。
全てのカラムに値を入れる場合は下記のような書き方になります。
mysql> INSERT INTO 《テーブル名》 VALUES(値1, 値2, 値3);
特定のカラムにだけ値を入れる場合は下記のように書きます。
mysql> INSERT INTO テーブル名(カラム名1, カラム名2) VALUES(値1, 値2);
それでは実際にデータの登録を行なってみます。
mysql> INSERT INTO goods VALUES(1, "ペン", 120);
Query OK, 1 row affected (0.04 sec)
2行目が表示されれば成功です。
ちゃんと登録されているか確認してみましょう。
mysql> SELECT * FROM goods;
+------+--------+-------+
| id | name | price |
+------+--------+-------+
| 1 | ペン | 120 |
+------+--------+-------+
1 row in set (0.04 sec)
左から順にカラムに入っていますね
順番を間違えないように気をつけたいところです。
次は特定のカラムにデータを登録してみます。
mysql> INSERT INTO goods(id, name) VALUE(2, "消しゴム");
Query OK, 1 row affected (0.00 sec)
2行目が表示されれば成功しているはずです。
確認しましょう。
mysql> SELECT * FROM goods;
+------+--------------+-------+
| id | name | price |
+------+--------------+-------+
| 1 | ペン | 120 |
| 2 | 消しゴム | NULL |
+------+--------------+-------+
2 rows in set (0.00 sec)
今回はpriceに何も入れなかったのでNULLが入っていますね。
UPDATE文
次はデータを更新するために使用するUPDATE文です。
UPDATEの記述の後にテーブルを指定し、SET句というものを置いてその後、変更内容を記述、その後に**WHERE句をいて条件を指定できます。
mysql> UPDATE 《テーブル名》 SET 《変更内容》 WHERE 《条件》;
実際に上記にデータを当てはめて、データを更新します。
mysql> UPDATE goods SET price = 100 WHERE id = 2;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
データを確認します
mysql> SELECT * FROM goods;
+------+--------------+-------+
| id | name | price |
+------+--------------+-------+
| 1 | ペン | 120 |
| 2 | 消しゴム | 100 |
+------+--------------+-------+
2 rows in set (0.00 sec)
消しゴムのpriceが100に変わりました。
DELETE文
データを削除するDELETE文の使い方を見てみます。
テーブル名を指定するFROM句と条件を指定するWHERE句を使います。
mysql> DELETE FROM 《テーブル名》 WHERE 《条件》;
実際にidが2のレコードを削除します。
mysql> DELETE FROM goods WHERE id = 2;
Query OK, 1 row affected (0.01 sec)
2行目が表示されれば成功です。
確認しましょう。
mysql> SELECT * FROM goods;
+------+--------+-------+
| id | name | price |
+------+--------+-------+
| 1 | ペン | 120 |
+------+--------+-------+
1 row in set (0.01 sec)
消しゴムが消えましたね!
最後に
この四つの文は面接で聞かれて答えられなくて悔しかったので、逆に覚えました 笑
しかしながら、詳しい使い方は覚えられていないので、使いこなせるよう、一文ごと覚えるように手を動かして復習していきたいと思います。