mysql-制約の概要

制約

制約(制約)は何ですか

制約が制限され、

データベースの制約は、データの整合性を確保するためのセキュリティ、です。

制約の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)

おすすめ

転載: www.cnblogs.com/raynduan/p/11444672.html