ディレクトリ
制約
制約(制約)は何ですか
制約が制限され、
データベースの制約は、データの整合性を確保するためのセキュリティ、です。
制約のmysql
ユニーク(一意)
レコードを一意に識別するフィールドが重複する値を表示されないことを示す唯一の制約、
ID、学生のIDなど:主に使用
nullではない(空でありません)
非NULL制約は、フィールドの値はNULLにすることはできませんことを示しています
アカウント名/パスワード:主に使用
ヌル
デフォルトでは空にすることができますいくつかのデータ型
デフォルト
デフォルト値を設定するためのフィールドのデフォルト値
通常の制約の例:
# 完整的建表语句
create table 表名(字段名 字段类型[(宽度)约束]) charset utf8;
# 学生类(类型具备:学号/姓名/性别)
create table student(
id int unique,
name char(10) not null,
gender enum("women","man") default "man"
);
insert into student values(null,null,null); # 因为name约束了不能为空,所以会报错
ERROR 1048 (23000): Column 'name' cannot be null
insert into student values(null,"jack",null); # 给name加入值,就可以了,但是我们的学号和性别都是null,这 # 样不行,虽然性别设置了默认值,但因为传入了null,系统默认 有值
Query OK, 1 row affected (0.38 sec)
+------+------+--------+
| id | name | gender |
+------+------+--------+
| NULL | jack | NULL |
+------+------+--------+
1 row in set (0.00 sec)
alter table student modify id int unique not null;
# 如果要确保学号和性别都不能为空,那我们也要加非空,非常麻烦,所以出现了一个即表示,唯一性又是非空的约束条件,primary key
主キー
概要:
主キー制約は、制約は、画角に等しいです:唯一の非ヌル+
社債の主な役割:
InnoDBストレージエンジン、データを整理するための主キー(ツリー構造)で、それはエンジンの主キーは、InnoDBはノーはならないです。
主キーを手動で指定されていない場合、MySQLは自動的に一意のフィールドがnull以外の主キーとを含んでいます。
そのようなフィールドが存在しない場合、MySQLは主キーとして、隠蔽の手段を作成します。
主キーのインデックスである、ユニークにも、インデックスの役割は、クエリをスピードアップすることです
主キー:役割の制約を持っているだけでなく、私たちのクエリの速度をスピードアップ
空でないとビジネスの唯一の元のフィールドがある場合、主キーとして、自分の専門分野を追加しない場合は、その後、主キーを設定します。
通常、我々は保証された固有のを容易にするために、int型の主キーを設定します。
# auto_increment 表示主键自动增长字段,可以给null,会自动生成值
# 自动增长可以用在 具备索引,并且是数字类型的字段上,但是通常与主键一起使用!
create table student1(id int primary key auto_increment, name char(10) not null);
insert into student1 values (null,"jack");
Query OK, 1 row affected (0.39 sec)
mysql> select * from student1;
+----+------+
| id | name |
+----+------+
| 1 | jack |
+----+------+
1 row in set (0.00 sec)
普通と主キー制約の違い
create table person(
id char(19) primary key,
name char(20)
);
insert into person values("1","rose");# ok
insert into person values("1","jack");# ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'主键冲突;
insert into person values("2","jack"); # ok
#从约束角度来看就等同于,非空+唯一
create table person2(
id char(19) unique not noll,
name char(20)