なんやかんや前はいじっていたMySQLの使い方を完全に忘れたのでメモ(その2)。
目次
前回のおさらい
今回は、
- コマンドプロンプトを管理者モードで起動する
- MySQLを起動する
- MySQLにログインする
- データベースの作成(名前は「python_test_db」とする)
- 操作するデータベースを切り替える
- データベースにテーブルを作成する(テーブル名とカラムは下記の通り。)
mysql> CREATE TABLE person (id INT, name VARCHAR(100));
まで終えた状態から再開する想定です。
テーブルにレコードを追加する
次のコマンドでテーブルにレコードを追加できます。
mysql> INSERT INTO person (id, name) VALUES (1, 'やまだ');
Query OK, 1 row affected (0.01 sec)
テーブルを表示して確認してみます。
mysql> SELECT * FROM person;
+------+--------+
| id | name |
+------+--------+
| 1 | やまだ |
+------+--------+
1 row in set (0.00 sec)
正常にレコードが追加されました。
テーブルのレコードを削除する(カラムの値で指定する)
データの削除の方法はいくつかあります。まずはカラムの値で指定して削除する方法です。
構文は「DELETE FROM (テーブル名) WHERE (カラム名) (条件式) (カラムの値);」
今回の例のテーブルにはidとnameがあります。idで指定して削除する場合は、次のようになります。
mysql> DELETE FROM person WHERE id = 1;
Query OK, 1 rows affected (0.00 sec)
これで「id = 1」のレコードが削除できました。
また、nameで指定して削除する場合は、次のようになります。
mysql> DELETE FROM person WHERE name = 'たなか';
Query OK, 1 rows affected (0.00 sec)
テーブルのレコードを削除する(全部まとめて削除する)
テーブルのすべてのレコードを削除する場合は次のコマンドを使います。
mysql> DELETE FROM person;
Query OK, 1 rows affected (0.00 sec)
なお、大量のレコードがある場合は次のコマンドを使うほうが高速に削除できます。
mysql> TRUNCATE TABLE person;
Query OK, 1 rows affected (0.00 sec)
テーブルにレコードを追加する際の注意
既に下記のようなレコードを持つテーブルがあったとします。
mysql> SELECT * FROM person;
+------+--------+
| id | name |
+------+--------+
| 1 | やまだ |
+------+--------+
1 row in set (0.00 sec)
ここに次のようなコマンドを打つと、
mysql> INSERT INTO person (id, name) VALUES (1, 'やまだ');
Query OK, 1 row affected (0.01 sec)
同じレコードが2つになってしまいます。
mysql> SELECT * FROM person;
+------+--------+
| id | name |
+------+--------+
| 1 | やまだ |
| 1 | やまだ |
+------+--------+
2 rows in set (0.00 sec)
つまりidやname等のカラムが全く同じレコードを複数追加することができてしまいます。
テーブルのレコードを更新する
既に下記のようなレコードを持つテーブルがあったとします。
mysql> SELECT * FROM person;
+------+--------+
| id | name |
+------+--------+
| 1 | やまだ |
+------+--------+
1 row in set (0.00 sec)
レコードを更新する際にはカラムの値で指定します。
構文は「UPDATE (テーブル名) SET (カラム名) (条件式) (更新後のカラムの値) WHERE (カラム名) (条件式) (更新前カラムの値);」です。
nameで指定して更新してみます。
mysql> UPDATE person SET name = 'すずき' WHERE name = 'やまだ';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
テーブルを表示して確認してみます。
mysql> SELECT * FROM person;
+------+--------+
| id | name |
+------+--------+
| 1 | すずき |
+------+--------+
1 row in set (0.00 sec)
正常にレコードが更新されました。
もちろん、idで指定して更新することもできます。
mysql> UPDATE person SET name = 'たなか' WHERE name = 'すずき';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
テーブルを表示して確認してみます。
mysql> SELECT * FROM person;
+------+--------+
| id | name |
+------+--------+
| 1 | たなか |
+------+--------+
1 row in set (0.00 sec)
正常にレコードが更新されました。