约束条件
Posted 慕沁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了约束条件相关的知识,希望对你有一定的参考价值。
作用:用于保证数据的完整性和一致性
包含:
PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的(唯一性约束) AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键) DEFAULT 为该字段设置默认值 UNSIGNED 无符号 ZEROFILL 使用0填充
------------------------------------------------------
主键在创建后默认是not null
但不是显示的是 not null的都是主键,有仅仅只是设置的非空。
null表示空,但不是代表字符串,not null 也一样
唯一性约束:
constraint host_port unique(host,port)
#constraint host_port这个只是用来设置唯一约束的名字的,也可以不设置默认就有了
一个表中可以: 单列做主键 多列做主键(复合主键) 但一个表内只能有一个主键primary key
定义单个主键:
- 当没有声明主键时,第一个not null+unique默认是主键
- 某一个字段后加primary key
- 单独定义 constraint pk_name primary key(id); #创建主键并为其命名pk_name
定义多个主键:
- 单独定义 primary key(ip, port)
自增约束:
auto_incerment
偏移量:auto_increment_offset默认为1
- 设置自增的时候以10开头
-
create table dep1( id int primary key auto_increment, )auto_increment = 10;
a -
uto_increment_increment:
- 自增步长,默认为1
-
create table dep3( id int primary key auto_increment, name char(10) ); # 会话:通过客户端连到服务端(一次链接称为一次会话) set session auto_increment_increment = 2; #会话级,只对当前会话有效 set global auto_increment_increment=2; #全局,对所有的会话都有效 insert into dep3(name) values(\'IT\'),(\'HR\'),(\'SALE\'),(\'Boss\');
- show variables like \'%auto_in%\';#查看变量。只要包含auto_in就都查出来了
外键约束:
两表之间有关系,
先建张部门表(被关联表)主表 create table dep( id int not null unique, name varchar(50), comment varchar(100) );
再建张员工表(关联表)子表 create table emp_info( id int primary key auto_increment, name varchar(20), dep_id int, constraint FK_depid_id foreign key(dep_id) references dep(id) #references :关联 on delete cascade #关联的表删了,被关联的表也删了 on update cascade #关联的表修改了,被关联的表也修改了 );
以上是关于约束条件的主要内容,如果未能解决你的问题,请参考以下文章