MySQLチュートリアル(作成編)
目次
データベースの確認
デフォルトでどんなデータベースが作成されているか確認してみる。
全てのデータベースは以下コマンドの実行で取得できる。
LIKEとWHEREでフィルタリングできるらしい(未確認)。
mysql>SHOW DATABASES;
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)
テーブルの確認
テーブル一覧取得はFROMでデータベース名を指定する。
SHOW TABLES FROM {Database名};
information_schema
内のテーブル一覧▼
+---------------------------------------+ | Tables_in_information_schema | +---------------------------------------+ | ADMINISTRABLE_ROLE_AUTHORIZATIONS | | APPLICABLE_ROLES | | CHARACTER_SETS | | CHECK_CONSTRAINTS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMNS_EXTENSIONS | | COLUMN_PRIVILEGES | | COLUMN_STATISTICS | | ENABLED_ROLES | | ENGINES | | EVENTS | | FILES | | INNODB_BUFFER_PAGE | | INNODB_BUFFER_PAGE_LRU | | INNODB_BUFFER_POOL_STATS | | INNODB_CACHED_INDEXES | | INNODB_CMP | | INNODB_CMPMEM | | INNODB_CMPMEM_RESET | | INNODB_CMP_PER_INDEX | | INNODB_CMP_PER_INDEX_RESET | | INNODB_CMP_RESET | | INNODB_COLUMNS | | INNODB_DATAFILES | | INNODB_FIELDS | | INNODB_FOREIGN | | INNODB_FOREIGN_COLS | | INNODB_FT_BEING_DELETED | | INNODB_FT_CONFIG | | INNODB_FT_DEFAULT_STOPWORD | | INNODB_FT_DELETED | | INNODB_FT_INDEX_CACHE | | INNODB_FT_INDEX_TABLE | | INNODB_INDEXES | | INNODB_METRICS | | INNODB_SESSION_TEMP_TABLESPACES | | INNODB_TABLES | | INNODB_TABLESPACES | | INNODB_TABLESPACES_BRIEF | | INNODB_TABLESTATS | | INNODB_TEMP_TABLE_INFO | | INNODB_TRX | | INNODB_VIRTUAL | | KEYWORDS | | KEY_COLUMN_USAGE | | OPTIMIZER_TRACE | | PARAMETERS | | PARTITIONS | | PLUGINS | | PROCESSLIST | | PROFILING | | REFERENTIAL_CONSTRAINTS | | RESOURCE_GROUPS | | ROLE_COLUMN_GRANTS | | ROLE_ROUTINE_GRANTS | | ROLE_TABLE_GRANTS | | ROUTINES | | SCHEMATA | | SCHEMATA_EXTENSIONS | | SCHEMA_PRIVILEGES | | STATISTICS | | ST_GEOMETRY_COLUMNS | | ST_SPATIAL_REFERENCE_SYSTEMS | | ST_UNITS_OF_MEASURE | | TABLES | | TABLESPACES | | TABLESPACES_EXTENSIONS | | TABLES_EXTENSIONS | | TABLE_CONSTRAINTS | | TABLE_CONSTRAINTS_EXTENSIONS | | TABLE_PRIVILEGES | | TRIGGERS | | USER_ATTRIBUTES | | USER_PRIVILEGES | | VIEWS | | VIEW_ROUTINE_USAGE | | VIEW_TABLE_USAGE | +---------------------------------------+ 79 rows in set (0.01 sec)
データベースの作成
test_databaseを作成する。SHOW DATABASES
で作成されていることが確認できる。
mysql> CREATE DATABASE test_database; Query OK, 1 row affected (0.01 sec)
データベースの選択
選択はUSE
を使う。
mysql> USE test_database; Database changed
選択するとコマンドの省略ができる。
例えば、以下のようにテーブル一覧コマンドのFROM {Database名}
が不要になる。
SHOW TABLES;
テーブルの作成
テーブル作成はオプションが多いので、公式リファレンスを参照した方がよさそう。
データベースを選択してあれば、{データベース名}
は省略できる。
CREATE TABLE {データベース名}.{テーブル名}( {カラム名} {データ型} {オプション}, )
例えば、ユーザ情報テーブルは以下コマンドで作成できる。
mysql> CREATE TABLE users( id INT(3) ZEROFILL AUTO_INCREMENT NOT NULL, name VARCHAR(30) NOT NULL, birth DATE NOT NULL, PRIMARY KEY (id)); Query OK, 0 rows affected, 2 warnings (0.03 sec)
SHOW TABLES
で確認すると、作成できていることがわかる。
mysql> SHOW TABLES; +-------------------------+ | Tables_in_test_database | +-------------------------+ | users | +-------------------------+ 1 row in set (0.00 sec)
中身はもちろん空っぽである。
mysql> SELECT * FROM users; Empty set (0.00 sec)
テーブルにデータを追加
追加方法については、「位置引数的に追加」と「名前付き引数的に追加」と「全部規定値で追加」がある。
id
はAUTO_INCREMENT
で定義したため、DEFAULT
で自動採番ができる。
位置引数的に追加
mysql> INSERT INTO users VALUES(DEFAULT, 'Yamada Tarou', '2000-1-1'); Query OK, 1 row affected (0.01 sec)
名前付き引数的に追加
INSERT INTO users (id, name, birth) VALUES(DEFAULT, 'Yamada Hanako', '2000-2-2'); Query OK, 1 row affected (0.01 sec)
名前で指定しているため、若干省略できる。
INSERT INTO users (name, birth) VALUES('Yamada Jirou', '2000-3-3'); Query OK, 1 row affected (0.01 sec)
もちろん順番が違ってもOK。
INSERT INTO users (birth, name) VALUES('2020-4-4', 'Yamada Ichirou'); Query OK, 1 row affected (0.01 sec)
全部規定値で追加
今回は規定値を持たせていないカラムがあるため、実行できない。
INSERT INTO {テーブル名}() VALUES();
無事追加されていることが確認できた。
SELECT * FROM users; +-----+----------------+------------+ | id | name | birth | +-----+----------------+------------+ | 001 | Yamada Tarou | 2000-01-01 | | 002 | Yamada Hanako | 2000-02-02 | | 003 | Yamada Jirou | 2000-03-03 | | 004 | Yamada Ichirou | 2020-04-04 | +-----+----------------+------------+ 4 rows in set (0.00 sec)
VALUES
以降を複数にすることでまとめて追加もできる。
INSERT INTO {テーブル名} VALUES (値1, 値2, ...), (値1, 値2, ...), ...
INSERT INTO {テーブル名} (カラム名1, カラム名2, ...) VALUES (値1, 値2, ...), (値1, 値2, ...), ...