【エンジニアへの道】データベースの基本操作
はじめに
前回、MySQLのモニタを起動したり、終了したりする方法について説明しました。今回は実際にデータベースを作成し、それに対して基本的な操作を行います。MySQLを用意されていない方は、データベースにおいてどのような操作が存在するのかを理解していただければと思います。
データベースの作成
「データベース」は「テーブル」を保管するものです。
CREATE DATABASE データベース名;
今回は「mydb1」というデータベースを作成します。
MariaDB [(none)]> CREATE DATABASE mydb1; Query OK, 1 row affected (0.01 sec)
データベースの確認
作成したデータベースの情報を確認するためには、SHOWコマンドを使用します。
SHOW DATABASES;
今回は以下のようになります。
MariaDB [mydb1]> SELECT DATABASE(); +------------+ | DATABASE() | +------------+ | mydb1 | +------------+ 1 row in set (0.00 sec)
使用するデータベースの選択
テーブルを作るために、使用するデータベースを指定します。
USE データベース名
今回は「mydb1」を選択します。
MariaDB [(none)]> USE mydb1 Database changed
テーブルの作成
カラム
テーブルを作成するためには、予め「データの型とカラムの名前」などの構造を指定する必要があります。
データ型
型には以下のようなものがあります。
型名 | 説明 |
---|---|
INT | 整数型(-2147483648~2157482647) |
TINYINT | とても小さい整数型(-128~127) |
SMALLINT | 小さい整数型(-32768~32767) |
MEDIUMINT | 中くらいの整数型(-8388608~8388607) |
BIGINT | 大きい整数(-9223372036854775808~9223372036854775807) |
FLOAT | 単精度浮動小数点数型(-3.402823466E+38~-1.175494351E-38) |
DOUBLE | 倍精度浮動小数点数型(-2,2250738585073014E-308~1.7976931348623157E+308) |
DECIMAL | 固定小数点数 |
CHAR | 固定長の文字列(255文字まで) |
VARCHAR | 可変長の文字列(1~65532バイト) |
TEXT | 長い文字列(65535文字まで) |
LONGTEXT | とても長い文字列(4294967295文字まで) |
DATETIME | 日付と時刻 |
DATE | 日付 |
YEAR | 年 |
TIME | 時刻 |
テーブルの作成
それでは実際にテーブルを作成します。
CREATE TABLE テーブル名 (カラム名 データ型, カラム名 データ型);
今回は以下のようなテーブルを作成してみます。
MariaDB [mydb1]> CREATE TABLE mytb1 (id VARCHAR(10), name VARCHAR(10), age INT); Query OK, 0 rows affected (0.02 sec)
テーブルの確認
テーブルが作られているか確認するには、全てのテーブルを表示する以下のコマンドを使用します。
SHOW TABLES;
今回は以下のようになります。
MariaDB [mydb1]> SHOW TABLES; +-----------------+ | Tables_in_mydb1 | +-----------------+ | mytb1 | +-----------------+ 1 row in set (0.00 sec)
カラム構造の確認
作ったテーブルのカラムの構造を確認するには以下のコマンドを使用します。
DESC テーブル名;
今回は以下のようになります。
MariaDB [mydb1]> DESC mytb1; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | varchar(10) | YES | | NULL | | | name | varchar(10) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.01 sec)
今回は「Null」や「Key」、「Default」などは無視してください。
データの挿入
作ったテーブルにデータを挿入するためには以下のコマンドを用います。
INSERT INTO テーブル名 VALUES(データ1, データ2);
今回は以下のようなデータを入力します。
MariaDB [mydb1]> INSERT INTO mytb1 VALUES('0001', 'suzuki', 20); Query OK, 1 row affected (0.01 sec) MariaDB [mydb1]> INSERT INTO mytb1 VALUES('0002', 'takahashi', 25); Query OK, 1 row affected (0.01 sec) MariaDB [mydb1]> INSERT INTO mytb1 VALUES('0003', 'sato', 40); Query OK, 1 row affected (0.00 sec)
データの表示
入力したデータを確認するためには以下のコマンドを使用します。
SELECT カラム名, カラム名 FROM テーブル名;
MariaDB [mydb1]> SELECT * FROM mytb1; +------+-----------+------+ | id | name | age | +------+-----------+------+ | 0001 | suzuki | 20 | | 0002 | takahashi | 25 | | 0003 | sato | 40 | +------+-----------+------+ 3 rows in set (0.00 sec)
データベース・テーブル・レコードの削除
レコードの一括削除
テーブル内のレコードを一括削除するには「DELETE」コマンドを使用します。
DELETE FROM テーブル名
コピー
カラム構造とレコードのコピー
CREATE TABLE 新しいテーブル名 SELECT * FROM コピー元テーブル名;
カラム構造のコピー
CREATE TABLE 新しいテーブル名 LIKE コピー元テーブル名;
レコードのコピー
INSERT INTO コピー先テーブル名 SELECT * FROM コピー元テーブル名;
特定のカラムをコピー
INSERT INTO コピー先テーブル名 (コピー先カラム名) SELECT コピー元カラム名 FROM コピー元テーブル名;
カラム構造の変更
データ型の変更
ALTER TABLE テーブル名 MODIFY カラム名 データ型;
カラムの追加
ALTER TABLE テーブル名 ADD カラム名 データ型;
位置指定をしたい場合は以下のようにする。
先頭の場合
ALTER TABLE テーブル名 ADD カラム名 データ型 FIRST;
自由な位置の場合
ALTER TABLE テーブル名 ADD カラム名 データ型 AFTER 任意のカラム名;
カラムの順番の変更
ALTER TABLE テーブル名 MODIFY カラム名 データ型 FIRST;
カラムの名前とデータ型の変更
ALTER TABLE テーブル名 CHANGE 変更前カラム名 変更後カラム名 変更後データ型;
入力値の設定
主キー
「主キー(PRIMARY KEY)」とは、数多くあるレコードのうちの一つを特定するために使う識別子です。一つを確実に特定できるようにしなけらばならないので、主キーは値の重複がなく、NULLとすることはできません。
テーブルの作成時に主キーを設定する時は以下のように記述します。
CREATE TABLE テーヌる名 (カラム名 データ型 PRIMARY KEY);
たとえば、itiiという名前のテーブルを作成すると、以下のようになります。
MariaDB [mydb1]> CREATE TABLE itii (a INT PRIMARY KEY, b VARCHAR(10)); Query OK, 0 rows affected (0.01 sec) MariaDB [mydb1]> DESC itii; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | a | int(11) | NO | PRI | NULL | | | b | varchar(10) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.01 sec)
一意キー
「一意キー(UNIQUE KEY)」は主キーに対して、重複なく、NULLは入れることができるものです。
一意キーを設定する時は以下のように記述します。
CREATE TABLE テーヌる名 (カラム名 データ型 UNIQUE);
連続番号
連続番号は勝手に1ずつ値が増えていきます。連続番号を割り振るにはAUTO_INCREMENTというキーワードを用います。
CREATE TABLE テーヌる名 (カラム名 データ型 AUTO_INCREMENT);
連続番号の初期値を入力するには以下のようにします。
CREATE TABLE テーヌる名 (カラム名 データ型 AUTO_INCREMENT=初期値);
デフォルト値
入力のデフォルト値を設定したい時は以下のように記述します。
CREATE TABLE テーブル名 (カラム名 データ型 DEFAULT デフォルト値)
インデックス
「インデックス」とは「テーブルの索引」みたいなものです。
インデックスの設定
CREATE INDEX インデックス名 ON テーブル名(カラム名);
インデックスの確認
SHOW INDEX FROM テーブル名;
インデックスの削除
DROP INDEX インデックス名 ON テーブル名;