1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[SQL] MySQLでSQLを学ぶ~DML編~

Posted at

はじめに

前回までは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)

消しゴムが消えましたね!

最後に

この四つの文は面接で聞かれて答えられなくて悔しかったので、逆に覚えました 笑
しかしながら、詳しい使い方は覚えられていないので、使いこなせるよう、一文ごと覚えるように手を動かして復習していきたいと思います。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?