🕌

MySQL 基礎

2022/07/30に公開

数値型について

整数型

  • INT
    バイト数 4バイト

  • TINYINT
    バイト数 1バイト

()の中の数字

TINYINT(1) や TINYINT(4) などの括弧内の数字は、カラムにZEROFILLを設定した際の桁数を表しており、指定した数字の桁数までゼロで埋める。
https://dev.mysql.com/doc/refman/5.6/ja/integer-types.html

文字列型について

  • CHAR
    固定長文字列

()で指定したバイト数(=文字数)まで文字列の末尾を空白で埋めた上で、レコードを保存する。

  • VARCHAR
    可変長文字列

()の中の数字

CHAR(1) や CHAR(4) などの括弧内の数字は、バイト数(=文字数)を表している。

※半角英数字1文字は、1バイトであり、全角文字1文字は、2バイトである。

https://dev.mysql.com/doc/refman/5.6/ja/char.html

テーブルのロックについて

データ数が数億とか数千の単位になると、alterを実行すると、テーブルが長時間ロックしてしまう。

ON DELETE & ON UPDATEについて

NO ACTION & RESTRICT

MySQLにおいてはNO ACTIONとRESTRICTは同じ挙動となります。
RESTRICTはON DELETE句やON UPDATE句を明示的に指定しなかった場合に設定される値です。

http://dbonline.s25.xrea.com/mysql/table/index12.html

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 として返します。

https://dev.mysql.com/doc/refman/5.6/ja/create-table.html

utf8_general_ci

https://program.sagasite.info/wiki/index.php?MySQLのutf8_general_ciとutf8_unicode_ciの違い

int uintについて

primary key + autoincrementは強制的にuintで定義される。
https://dev.mysql.com/doc/refman/5.6/ja/example-auto-increment.html

command

mysql -h 127.0.0.1 -P 3307 -u root -ppass test < init.sql

Discussion