普段あまり使わないSQLなんだけど、たまに使うと忘れていることが多いので備忘録を保存しておくことにしました。
余談ですが、SQLを使っていていつも感じるのは、DatabaseとTable設定を事前に完璧に完了しておくことが前提のでーた管理になるのと、その後のTable構成の変更がめちゃくちゃ大変になるので、ガッチリとした運用をするサービスでの運用には向いていますが、アジャイル運用するようなケースでは、かなり苦労しますね。
しかし、仕事で仕様とされてしまっては、やらざるを得ないのがエンジニアの悲しい性ですね。
そんなわけで、SQLちゃんとマスターしていない人は、参考にしてください。
既存データベースの確認(一覧表示)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
| sys |
| test |
+--------------------+
12 rows in set (0.04 sec)
[コマンド]
SHOW DATABASES;
データベースの作成
mysql> create database mynt;
Query OK, 1 row affected (0.03 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
| sys |
| mynt |
| test |
+--------------------+
[コマンド]
CREATE DATABASE %データベース名;
操作するデータベースの選択
mysql> use mynt;
Database changed
[コマンド]
USE %データベース名;
TABLEの作成
mysql> CREATE TABLE log (
->id INT(4) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
->name VARCHAR(10),
->memo TEXT
->) charset=utf8;
Query OK, 0 rows affected (0.06 sec)
[コマンド]
CREATE TABLE %table名% (%列名 %データ型(%データ長) %オプション) charset=utf8
[データ型]
詳しくは、
https://www.dbonline.jp/mysql/type/を参照。
今回セットしたのものは以下の通り
INT : 整数値
VARCHAR : キャラクター
TEXT : 文章(データ長は無し)
[オプション]
主には「PRIMARY KEY」の設定のためにある。
PRIMARY KEY : プライマリーキーは、データレコードのユニーク性を保つためにcolumnのどれかのカラムにセットする。
AUTO_INCREMENT : 自動採番
UNIQUE : 他レコードとの値の重複を認めない
NOT NULL : NULL値を認めない。
作成されたTABLEの列確認
mysql> DESC log;
+-------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------+------+-----+---------+----------------+
| id | int(4) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| memo | text | YES | | NULL | |
+-------+-----------------+------+-----+---------+----------------+
3 rows in set (0.02 sec)
[コマンド]
DESC %TABLE名;
TABLEの列追加
mysql> ALTER TABLE log ADD COLUMN value_1 VARCHAR(20);
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC log;
+---------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-----------------+------+-----+---------+----------------+
| id | int(4) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| memo | text | YES | | NULL | |
| value_1 | varchar(20) | YES | | NULL | |
+---------+-----------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
[コマンド]
ALTER TABLE %table名 ADD COLUMN %列名 %データ型(%データ長) %オプション;
TABLEの列変更
mysql> ALTER TABLE log CHANGE COLUMN value_1 value VARCHAR(20);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC log;
+-------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------+------+-----+---------+----------------+
| id | int(4) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| memo | text | YES | | NULL | |
| value | varchar(20) | YES | | NULL | |
+-------+-----------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
[コマンド]
ALTER TABLE %table名 CHANGE COLUMN %変更前の列名 %変更後の列名 %データ型(%データ長) %オプション;
COLUMN削除
mysql> ALTER TABLE log DROP COLUMN value;
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC log;
+-------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------+------+-----+---------+----------------+
| id | int(4) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| memo | text | YES | | NULL | |
+-------+-----------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
[コマンド]
ALTER TABLE %table名 DROP COLUMN %列名;
データ(レコード)の追加登録と内容一覧表示
mysql> INSERT INTO log (name,memo) VALUE ("aaa","test-1");
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM log;
+----+------+--------+
| id | name | memo |
+----+------+--------+
| 1 | aaa | test-1 |
+----+------+--------+
1 row in set (0.00 sec)
[コマンド]
INSERT INTO %TABLE名 (%列名※複数の場合はカンマ区切り) VALUE (%値※複数の場合はカンマ区切り);
登録済みのレコードデータを修正
mysql> UPDATE log SET name='a-1' WHERE id=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM log;
+----+------+--------+
| id | name | memo |
+----+------+--------+
| 1 | a-1 | test-1 |
+----+------+--------+
1 row in set (0.00 sec)
[コマンド]
SELECT %列名 FROM %TABLE名 (WHERE %指定する列と値);
レコードを削除
mysql> SELECT * FROM log;
+----+------+--------+
| id | name | memo |
+----+------+--------+
| 1 | a-1 | test-1 |
| 2 | b-2 | test-2 |
+----+------+--------+
2 rows in set (0.01 sec)
mysql> DELETE from log WHERE id=1;
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM log;
+----+------+--------+
| id | name | memo |
+----+------+--------+
| 2 | b-2 | test-2 |
+----+------+--------+
1 row in set (0.01 sec)
[コマンド]
DELETE from %table名 WHERE %条件となる列名と値;
TABLE削除
mysql> DROP TABLE log;
Query OK, 0 rows affected (0.04 sec)
mysql> show tables;
Empty set (0.01 sec)
[コマンド]
DROP TABLE %table名;
データベースの削除
mysql> DROP DATABASE mynt;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
| sys |
| test |
+--------------------+
13 rows in set (0.04 sec)
[コマンド]
DROP DATABASE %データベース名;
0 件のコメント:
コメントを投稿