MySQLで「NOT NULL」とチェック制約を使ってブール値列のデフォルト値をfalseにする
MySQLでブール値列を作成し、デフォルト値をfalseに設定するには、以下の2つの方法があります。
方法1:DEFAULT句を使用する
CREATE TABLE your_table_name (
your_column_name BOOLEAN DEFAULT FALSE
);
この方法では、DEFAULT
句を使用して、列 your_column_name
のデフォルト値を FALSE
に設定します。
方法2:NOT NULL 句とチェック制約を使用する
CREATE TABLE your_table_name (
your_column_name BOOLEAN NOT NULL,
CONSTRAINT your_column_name_default CHECK (your_column_name = FALSE)
);
この方法では、NOT NULL
句を使用して、列 your_column_name
が NULL
値を受け付けないようにします。その後、チェック制約を使用して、列のデフォルト値が FALSE
であることを確認します。
- 簡潔性:
DEFAULT
句を使用する方が簡潔で読みやすいコードになります。 - 明示性:
NOT NULL
句とチェック制約を使用する方が、列がNULL
値を受け付けないことをより明確に示すことができます。
その他の注意点
- MySQLの
BOOLEAN
型は実際にはTINYINT(1)
型のシノニムであり、0がfalse、0以外がtrueを表します。 TRUE
という文字列をBOOLEAN
型の列に挿入しようとすると、その値はfalseに変換されます。- 列にデフォルト値を設定すると、その列に明示的に値を挿入しない限り、すべての新しい行にそのデフォルト値が設定されます。
例
以下の例では、users
という名前のテーブルに is_active
という名前のブール値列を作成し、デフォルト値をfalseに設定します。
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
is_active BOOLEAN DEFAULT FALSE
);
この例では、DEFAULT
句を使用して、is_active
列のデフォルト値を FALSE
に設定しています。つまり、新しいユーザーが作成されると、is_active
列には自動的に FALSE
が設定されます。
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
is_active BOOLEAN DEFAULT FALSE
);
このコードを実行すると、users
という名前のテーブルが作成され、その中に以下の列が含まれます。
id
: 主キーであり、自動的にインクリメントされる整数値username
: 一意な文字列password
: 文字列is_active
: ブール値。デフォルト値はFALSE
新しいユーザーが作成されると、is_active
列には自動的に FALSE
が設定されます。
このコードをさらに詳しく説明します。
CREATE TABLE
: 新しいテーブルを作成するステートメントです。users
: テーブルの名前です。()
: テーブルの列と制約を定義します。id INT PRIMARY KEY AUTO_INCREMENT
: 主キー列を定義します。id
は列名、INT
はデータ型、PRIMARY KEY
はこの列が主キーであることを示します。AUTO_INCREMENT
は、この列の値が自動的にインクリメントされることを示します。username VARCHAR(255) UNIQUE NOT NULL
:username
という名前の列を定義します。VARCHAR(255)
はデータ型で、最大255文字の文字列を格納できます。UNIQUE
はこの列の値がユニークであることを示します。NOT NULL
はこの列がNULL
値を受け付けないことを示します。email VARCHAR(255) UNIQUE NOT NULL
:email
という名前の列を定義します。この列はusername
列と同じように定義されています。is_active BOOLEAN DEFAULT FALSE
:is_active
という名前の列を定義します。BOOLEAN
はデータ型で、ブール値を格納できます。DEFAULT FALSE
は、この列のデフォルト値がFALSE
であることを示します。
このサンプルコードは、MySQLでブール値列を作成し、デフォルト値を FALSE
に設定する方法を理解するのに役立ちます。
MySQLでブール値列を作成し、デフォルト値をfalseにするその他の方法
CREATE TABLE your_table_name (
your_column_name BOOLEAN,
CHECK (your_column_name IN (FALSE))
);
方法4:ALTER TABLE ステートメントを使用する
既存のテーブルにブール値列を追加し、デフォルト値をfalseに設定するには、ALTER TABLE
ステートメントを使用できます。
ALTER TABLE your_table_name
ADD your_column_name BOOLEAN DEFAULT FALSE;
- 柔軟性:
CHECK
句を使用すると、列の値をFALSE
以外の値に制限することもできます。 - 既存のテーブルへの変更: 既存のテーブルに列を追加するには、
ALTER TABLE
ステートメントを使用する必要があります。
ALTER TABLE users
ADD is_active BOOLEAN DEFAULT FALSE;
このコードを実行すると、users
テーブルに is_active
という名前の列が追加され、その列のデフォルト値が FALSE
に設定されます。
mysql