takahiro_itazuriの公倍数的ブログ

本やWebを通して学習したことをまとめるブログです。最大公約数(つまり、共通部分)的なという表現と対比して、「なるべく包括的にカバーしつつ、更に+αの要素も加えられたらいいな」という意味で公倍数的ブログと名付けました。

【エンジニアへの道】データベースの基本操作

データベースの作成

「データベース」は「テーブル」を保管するものです。

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)

データベース・テーブル・レコードの削除

データベースの削除

データベースの削除には「DROP」コマンを使用します。

DROP DATABASE データベース名;

テーブルの削除

テーブルの削除にも「DROP」コマンドを使用します。

DROP TABLE テーブル名;

レコードの一括削除

テーブル内のレコードを一括削除するには「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 テーブル名;