MySQLとLaravelデータ型
公開: 2023-09-30
LaravelとMySQLを使っていて、データ型の対応とデータの範囲を忘れがちなので簡易表にまとめました。
文字型
Laravel Method | MySQL Type | Range |
---|---|---|
char() |
char(255) |
0~255 characters |
string() |
varchar(255) |
0~65,535 bytes |
text() |
text |
0~65,535 characters |
char(M)
, varchar(M)
のM
はカラムの最大長を文字数で表す
varchar
の範囲はバイトで、文字セットによって最大の文字数が変わるから注意
数値型
Laravel Method | MySQLデータ型(option) | Range |
---|---|---|
integer ⭐️ |
int(11) |
-約21億 to 約21億(10桁) |
unsignedInteger |
int(10) unsigned |
0 to 約42(10桁) |
tinyInteger |
tinyint(4) |
-128 to 127 |
unsignedTinyInteger |
tinyint(3) unsigned |
0 to 255 |
smallInteger |
smallint(6) |
-32768 to 32767(5桁) |
unsignedSmallInteger |
smallint(5) unsigned |
0 to 65535(5桁) |
mediumInteger |
mediumint(9) |
-約838万 to 約838万(7桁) |
unsignedMediumInteger |
mediumint(8) unsigned |
0 to 約1677万(8桁) |
bigInteger |
bigint(20) |
-約922京 to 約922京(19桁) |
unsignedBigInteger |
bigint(20) unsigned |
0 to 約1844京(20桁) |
int(11)
の11は表示幅の指定(ZEROFILLオプション)
指定した桁数に揃えるために、数値の左側に不足している桁数分「0」で埋める処理
(Laravelで作成したintカラムなど、mysqlで確認してもZEROFILLオプションが付いている訳ではない)
Laravel Migration
LaravelのMigrationファイルでそれぞれのデータ型カラムを作る例
public function up(): void
{
Schema::create('types', function (Blueprint $table) {
$table->id();
$table->string('string');
$table->char('char');
$table->text('text');
$table->tinyText('tinyText');
$table->integer('integer');
$table->unsignedInteger('unsignedInteger');
$table->tinyInteger('tinyInteger');
$table->unsignedTinyInteger('unsignedTinyInteger');
$table->smallInteger('smallInteger');
$table->unsignedSmallInteger('unsignedSmallInteger');
$table->mediumInteger('mediumInteger');
$table->unsignedMediumInteger('unsignedMediumInteger');
$table->bigInteger('bigInteger');
$table->unsignedBigInteger('unsignedBigInteger');
});
}