MySQL 基礎
数値型について
整数型
-
INT
バイト数 4バイト -
TINYINT
バイト数 1バイト
()の中の数字
TINYINT(1) や TINYINT(4) などの括弧内の数字は、カラムにZEROFILLを設定した際の桁数を表しており、指定した数字の桁数までゼロで埋める。
文字列型について
- CHAR
固定長文字列
()で指定したバイト数(=文字数)まで文字列の末尾を空白で埋めた上で、レコードを保存する。
- VARCHAR
可変長文字列
()の中の数字
CHAR(1) や CHAR(4) などの括弧内の数字は、バイト数(=文字数)を表している。
※半角英数字1文字は、1バイトであり、全角文字1文字は、2バイトである。
テーブルのロックについて
データ数が数億とか数千の単位になると、alterを実行すると、テーブルが長時間ロックしてしまう。
ON DELETE & ON UPDATEについて
NO ACTION & RESTRICT
MySQLにおいてはNO ACTIONとRESTRICTは同じ挙動となります。
RESTRICTはON DELETE句やON UPDATE句を明示的に指定しなかった場合に設定される値です。
primary key & unique keyについて
PRIMARY KEY は、すべてのキーカラムを NOT NULL として定義する必要のある一意のインデックスです。それらが NOT NULL として明示的に宣言されていない場合、MySQL は、それらを暗黙的に (かつ警告なしで) そのように宣言します。テーブルに存在できる PRIMARY KEY は 1 つだけです。PRIMARY KEY の名前は、常に PRIMARY です。そのため、これをその他のどの種類のインデックスの名前としても使用できません。
PRIMARY KEY が存在しないときに、アプリケーションがテーブル内の PRIMARY KEY を要求した場合、MySQL は、NULL カラムのない最初の UNIQUE インデックスを PRIMARY KEY として返します。
utf8_general_ci
- 照合順序
文字列の比較を行う際に重要となるものらしい
https://qiita.com/kazu56/items/6af85ffcf8d3954455ad
int uintについて
primary key + autoincrementは強制的にuintで定義される。
command
mysql -h 127.0.0.1 -P 3307 -u root -ppass test < init.sql
Discussion