【MySQL】データの基本操作

【MySQL】データの基本操作

MySQLのデータの基本操作を解説します。

このドキュメントでは次のテーブルに対してデータの操作を行ないます。

mysql> desc items;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(20) | YES  |     | NULL    |       |
| price | int         | YES  |     | NULL    |       |
| stock | int         | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

追加(INSERT INTO VALUE

データの追加はINSERT INTO VALUE文でレコード単位で行ないます。

基本構文

INSERT INTO テーブル名(カラム) VALUE(値)

サンプル

mysql> INSERT INTO items (
    -> name, price, stock
    -> ) VALUE (
    -> 'Apple', 200, 10
    -> );
Query OK, 1 row affected (0.00 sec)

テーブル名後の丸括弧(())内はカラムを記述します。
複数ある場合はカンマ(,)で区切ります。

VALUE後の丸括弧(())内はカラムの値です。

一部のカラムのみを指定することもできます。

mysql> INSERT INTO items (
    -> name, price
    -> ) VALUE (
    -> 'Apple', 200
    -> );
Query OK, 1 row affected (0.00 sec)

また、(カラム)を省略すると、全てのカラムが対象になります。

mysql> INSERT INTO items VALUE ( 'Apple', 200, 10 );
Query OK, 1 row affected (0.00 sec)

複数追加(INSERT INTO VALUES

複数データの追加はINSERT INTO VALUES文を使います。

基本構文

INSERT INTO テーブル名(カラム) VALUES(値),(値),(値);

サンプル

mysql> INSERT INTO items (
    -> name, price, stock
    -> ) VALUES (
    -> 'Orange', 150, 3
    -> ),(
    -> 'Pineapple', 1100, 3
    -> ),(
    -> 'Grapes', 3500, 1
    -> );
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

1つのみの追加(VALUE)と基本的には同じです。
レコードは丸括弧(())単位で記述し、複数ある場合はカンマ(,)で区切ります。

取得(SELECT FROM

データの取得はSELECT FROM文を使います。

基本構文

SELECT カラム FOMR テーブル名;

サンプル

mysql> SELECT name, price, stock FROM items;
+-----------+-------+-------+
| name      | price | stock |
+-----------+-------+-------+
| Apple     |   200 |    10 |
| Orange    |   150 |     3 |
| Pineapple |  1100 |     3 |
| Grapes    |  3500 |     1 |
+-----------+-------+-------+
4 rows in set (0.00 sec)

カラムは表示するカラムをカンマ(,)で区切って記述します。
また、*は全てのカラムを意味します。

mysql> SELECT * FROM items;
+-----------+-------+-------+
| name      | price | stock |
+-----------+-------+-------+
| Apple     |   200 |    10 |
| Orange    |   150 |     3 |
| Pineapple |  1100 |     3 |
| Grapes    |  3500 |     1 |
+-----------+-------+-------+
4 rows in set (0.00 sec)

更新(UPDATE SET WHERE

データの更新はUPDATE SET WHEREを使います。

基本構文

UPDATE テーブル名 SET カラム=値 WHERE 条件;

サンプル

mysql> SELECT * FROM items;
+-----------+-------+-------+
| name      | price | stock |
+-----------+-------+-------+
| Apple     |   200 |    10 |
| Orange    |   150 |     3 |
| Pineapple |  1100 |     3 |
| Grapes    |  3500 |     1 |
+-----------+-------+-------+
4 rows in set (0.00 sec)

mysql> UPDATE items SET price = 300 WHERE name = 'Apple';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM items;
+-----------+-------+-------+
| name      | price | stock |
+-----------+-------+-------+
| Apple     |   300 |    10 |
| Orange    |   150 |     3 |
| Pineapple |  1100 |     3 |
| Grapes    |  3500 |     1 |
+-----------+-------+-------+
4 rows in set (0.00 sec)

price = 300は『priceカラムに300を設定する』という指示です。
WHERE name = 'Apple';は『nameカラムがAppleであるレコード』という条件になります。

そのため、nameがAppleのレコードのpriceのみが変更されました。

注意点はWHERE 条件を指定しない場合、全てのレコードが対象になるということです。

mysql> UPDATE items SET price = 300;
Query OK, 3 rows affected (0.01 sec)
Rows matched: 4  Changed: 3  Warnings: 0

mysql> SELECT * FROM items;
+-----------+-------+-------+
| name      | price | stock |
+-----------+-------+-------+
| Apple     |   300 |    10 |
| Orange    |   300 |     3 |
| Pineapple |   300 |     3 |
| Grapes    |   300 |     1 |
+-----------+-------+-------+
4 rows in set (0.00 sec)

全て変更することが目的でない場合、付け忘れないようにしましょう。

付け忘れないコツとしては、最初にWHEREを記述するなどがあります。

削除(DELETE FROM WHERE

データ(レコード)の削除はDELETE FROM WHERE文を使います。

基本構文

DELETE FROM テーブル名 WHERE 条件;

サンプル

mysql> SELECT * FROM items;
+-----------+-------+-------+
| name      | price | stock |
+-----------+-------+-------+
| Apple     |   300 |    10 |
| Orange    |   300 |     3 |
| Pineapple |   300 |     3 |
| Grapes    |   300 |     1 |
+-----------+-------+-------+
4 rows in set (0.00 sec)

mysql> DELETE FROM items WHERE name = 'Apple';
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM items;
+-----------+-------+-------+
| name      | price | stock |
+-----------+-------+-------+
| Orange    |   300 |     3 |
| Pineapple |   300 |     3 |
| Grapes    |   300 |     1 |
+-----------+-------+-------+
3 rows in set (0.00 sec)

WHERE name = 'Apple';は『nameカラムがAppleであるレコード』という条件になります。

データの更新と同様にWHERE 条件を指定しない場合、全てのレコードが対象になるということに注意が必要です。

mysql> DELETE FROM items;
Query OK, 3 rows affected (0.00 sec)

mysql> SELECT * FROM items;
Empty set (0.00 sec)

こちらも最初にWHEREを記述するなどの対策を行ない、誤った操作をしないよう心掛けましょう。