Mysql データベースの作成#
- ログインしてデータベースを作成する
# mysql -u root -p
mysql> create database test;
- データベースを作成してログインする
# mysqladmin -u root -p create test
データ型#
- 数値:整数、浮動小数点数、ブール値、文字列
- 日付 / 時間:日付、時間、日付と時間
- 文字列:文字列、バイナリ、文字セット
数値型#
タイプ | サイズ | 範囲 (符号あり) | 範囲 (符号なし) | 用途 |
---|---|---|---|---|
tinyint | 1 | -128~127 | 0~255 | 整数 |
smallint | 2 | -32768~32767 | 0~65535 | 整数 |
mediumint | 3 | -8388608~8388607 | 0~16777215 | 整数 |
int | 4 | -2147483648~2147483647 | 0~4294967295 | 整数 |
bigint | 8 | -9223372036854775808~9223372036854775807 | 0~18446744073709551615 | 整数 |
float | 4 | -3.402823466E+38~3.402823466E+38 | -1.79E+308~1.79E+308 | 浮動小数点数 |
double | 8 | -1.7976931348623157E+308~1.7976931348623157E+308 | -2.22E-308~2.22E-308 | 浮動小数点数 |
decimal | DECIMAL (M,D) 中の M+2 と D+2 の大きい方 | M と D の値に依存 | M と D の値に依存 | 小数値 |
日付と時間の型#
タイプ | サイズ | 範囲 | フォーマット | 用途 |
---|---|---|---|---|
date | 4 | 1000-01-01~9999-12-31 | yyyy-mm-dd | 日付 |
time | 8 | -838:59:59~838:59:59 | hh:mm | 時間 |
datetime | 8 | 1000-01-01 00:00:00~9999-12-31 23:59:59 | yyyy-mm-dd hh:mm | 日付と時間 |
timestamp | 8 | 1970-01-01 00:00:00~2038-01-19 03:14:07 | yyyy-mm-dd hh:mm | タイムスタンプ |
文字列型#
タイプ | サイズ | 用途 |
---|---|---|
char | 0~255 | 固定長文字列 |
varchar | 0~65535 | 可変長文字列 |
tinytext | 0~255 | 短いテキスト文字列 |
text | 0~65535 | 長いテキスト文字列 |
mediumtext | 0~16777215 | 中程度の長さのテキスト文字列 |
langtext | 0~65535 | 非常に長いテキスト文字列 |
tinyblob | 0-255 | 255 文字以下のバイナリ文字列 |
blob | 0~65535 | 長いバイナリテキスト文字列 |
mediumblob | 0~16777215 | 中程度の長さのバイナリ文字列 |
longblob | 0~4294967295 | 長いバイナリ文字列 |
Tips:
-
binary と varbinary の違い
char と varchar と同様に、バイナリ文字列を含み、非バイナリ文字列を含まない。バイナリ文字列は 0 と 1 で構成される文字列であり、画像、ビデオ、音声などのバイナリファイルを保存するために使用できる。文字セット、ソート、比較はバイトベースの数値に基づいています。
-
Blob と Text の違い
Blob はバイナリ文字列であり、Text は文字列です。
テーブルの作成#
例:
```sql
# テーブルの作成
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
-
Not null: 必須の入力値
-
Auto increment: 自動増分
-
Default: デフォルト値
自動的に時間を書き込む場合は、
`TIMESTAMP`
タイプを使用する必要があります。DEFAULT は
`CURRENT_TIMESTAMP`
に設定します。NULL に指定することが最善です。 -
Primary key: プライマリキー、複数の列を使用して定義できます
-
Engine: ストレージエンジン、デフォルトは InnoDB です
-
Charset: 文字セット、デフォルトは utf8mb4 です
例:
root@seele # mysql -u root -p
Enter password:******
mysql> Use test;
Database changed
mysql> CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.00 sec)
テーブルとデータベースの削除#
-
テーブルの削除
DROP TABLE `test`;
-
データベースの削除
DROP DATABASE `test`;
mysqladmin -u root -p drop test
-
データの削除と自動増分のリセット
ALTER TABLE `test` AUTO_INCREMENT = 1; // 自動増分を1に設定し、一部の場合に自動増分の問題を解決できます