MySQLのフィールドオプション
更新日 : 2019年06月26日
MySQLのテーブル作成記事では、テーブル作成の基本的なSQLを学びました。
カラムとカラムのデータ型を指定すれば基本的なテーブル作成は簡単でしたが、今回はカラムごとに様々なルールを付与するフィールドオプションをいくつか紹介します。
フィールドオプションを利用することでカラムに入れるデータを制限し、プログラムからの呼び出し時にエラーが出にくくなります。
フィールドオプションを追加するときの書式
テーブル作成時にフィールドオプションを設定する場合の書式が以下です。
CREATE TABLE テーブル名
(
カラム名1 データ型 フィールドオプション1 フィールドオプション2 ...,
カラム名2 データ型 フィールドオプション1 ...
);
基本的にはテーブル作成のSQLとあまり変わりません。カラムを指定する際にカラム名 データ型
とスペースを入れて指定していましたが、フィールドオプションも同様にカラム名 データ型 フィールドオプション
のように指定します。
フィールドオプションはスペースで区切って複数指定することが可能です。
not null
オプション
Nullとはデータがない状態を表します。つまり、not null
オプションを指定することで、そのカラムのデータがない状態にすることを禁止します。
CREATE TABLE users (id int not null);
このようにするとusers
テーブルにあるid
カラムでは整数型を指定し、なおかつNULLであることを禁止します。not null
のように記載します。
default
オプション
次に、default
オプションです。これはレコードを追加する際にそのカラムに値が指定されなかった場合にデフォルトで挿入されるデータです。
CREATE TABLE users (
id int not null,
gender varchar(5) default 'man'
);
このように指定すると、users
テーブルにあるgender
カラムでは文字列型(5文字まで)を指定し、なおかつデフォルトでman
を挿入します。
このテーブルにレコードを追加する際には
INSERT INTO users (id) values (1);
このように追加するとgender
カラムを指定していないため、gender
カラムにはデフォルト値であるman
が追加されます。
INSERT INTO users (id, gender) values (1, 'woman');
逆に上記のようにgender
カラムを指定して追加した場合には指定した値であるwoman
が登録されます。
auto_increment
オプション
auto_increment
オプションは整数型と浮動小数点型にのみ適用できます。auto_increment
は日本語にすると「自動増加」です。これは、auto_increment
オプションを設定したカラムでは、レコード追加時に自動で採番してくれます。
テーブル作成後、1つ目のレコード追加時には「1」を自動で採番し、2つ目のレコード追加時には「2」を自動で採番してデータを追加します。
CREATE TABLE users (
id int not null auto_increment primary key,
gender varchar(5) default 'man'
);
このようにテーブルを作成すると、id
カラムでは整数型を指定し、Null
を禁止し、なおかつ自動採番してくれます。
INSERT INTO users (gender) values ('woman');
このようにインサート文を実行すると、最初のレコード追加時にはid
カラムに自動で「1」が挿入されます。追加するたびに前回採番された番号から+1された数字が自動で採番されてレコードとして登録されます。
このauto_increment
は主キーで利用されることが多くあります。
unique
オプション
unique
オプションはその名の通り、一意なデータしかいれることができません。テーブルでunique
オプションが設定されたカラムではデータの重複ができません。
例えばユーザー情報のテーブルにはメールアドレスを登録するカラムが必要な場合が多くあります。その際にメールアドレスは1人のユーザーに対して固有のデータのはずです。
固有のデータのはずなのにメールアドレスが重複してレコードが入ることは避けたいです。
そのようなときにunique
オプションを設定しておくことで、重複データが入らないようにしてくれます。
CREATE TABLE users (
id int not null auto_increment primary key,
gender varchar(5) default 'man',
email varchar(255) unique
);
このようにテーブルを作成すると、email
カラムでは文字列型(255文字まで)を指定し、なおかつ重複を禁止します。
primary key
オプション
次にprimary key
オプションです。日本語にすると「主キー」です。つまりこのオプションを指定したカラムが主キーになります。
primary key
はテーブルにつき1つだけ設定できます。
また、自動的にnot null
制約かつunique
制約になります。primary key
を設定する場合には以下のようにテーブル作成SQLを発行するのが一般的です。
CREATE TABLE users (
id int not null auto_increment primary key,
gender varchar(5) default 'man',
email varchar(255) unique
);
このようにid int not null auto_increment primary key
設定することでid
カラムでは整数型でNullを禁止し、自動採番設定を入れた上で主キーとして登録します。
primary key
は1つのテーブルにつき、ほぼ必ず設定します。そうすることで外部キーとの連携が取りやすくなります。
comment
オプション
最後にcomment
オプションです。これはカラムにコメントを残すだけの機能で、テーブル情報を確認する際に利用されます。設定は任意なので、カラム名がわかりやすい場合などはなくても困りません。
CREATE TABLE users (
id int not null auto_increment primary key comment '主キー',
username varchar(30) unique comment 'ユーザー名'
);
comment '主キー'
のようにオプションを指定するとそれぞれのカラムにコメントが付与されます。
まとめ
ここまで学んだフィールドオプションを利用してユーザー情報を格納するテーブルを簡単に作ってみましょう。
CREATE TABLE users (
id int not null auto_increment primary key comment '主キー',
username varchar(30) unique comment 'ユーザー名',
email varchar(255) not null unique comment 'メールアドレス',
password varchar(255) not null comment 'パスワード',
gender varchar(5) not null default 'man' comment '性別'
);
これで一般的なユーザー情報を格納するテーブルができました。他に必要そうなカラムがあれば(論理削除カラムや作成日時カラム等)適宜追加してテーブルを作成してみましょう。
タグ
-
前の記事
MySQLの外部結合
-
次の記事
MySQLのユーザー作成