mysql - 字段约束条件

primary key(主键->not null unique)
  • 单一唯一:不为空且唯一
    create table user(
    	id int primary key, #写法一
    	no int,
    	primary key(no) #写法二
    );
    
  • 复合主键
    create table service(
    	ip char(15),
    	port int,
    	primary key(ip,port)
    );
    
unique(唯一)
  • 单一唯一:
    create table department (
    	id int unique, #写法一
    	no int,
    	unique(no) #写法二
    );
    
  • 联合唯一:unique(字段1,字段2) 字段1和字段2联合起来唯一
    create table servers (
    	id int, 
    	ip char(15),
    	port int,
    	unique(ip,port)
    );
    
not null(不为空) default(默认值)
  • not null / default
    create table user(
    	id int primary key,
    	name char(16) not null,
    	age int default 1
    );
    
auto_increment(自增长)
```
create table user(
	id int primary key auto_increment,
	name char(16)
);
```
foreign(外键:用于建立表之间的关系)
  • 外键的主要作用是保持数据的一致性、完整性、和两表自己的关联性
    • 外键字段值来源固定(对应表的主键)
    • 级联删除
    • 级联更新
  • foreign key(字段) references 被关联表名(被关联字段名)
  • 先创建被关联的表,且被关联字段唯一(unique)
    create table department(
    	id int unique,
    	name char(15),
    	comm char(20)
    );
    
  • 再创建关联表
    create table employee(
    	id int primary key auto_increment,
    	name char(10),
    	sex enum("man","woman") not null default "man",
    	dep_id int,
    	foreign key(dep_id) references department(id) on delete cascade on update cascade
    	#on delete cascade  级联删除(被关联表的记录删除本关联表关联的记录也跟着删除)
    	#on update cascade  级联更新(被关联表的记录更新本关联表关联的记录外键也跟着更新)
    );
    ps:因为foreign key的方式使得两张表之间的关系变得耦合性/关联性高,删除/更新都会有影响。
    故一般正常项目开发尽量不使用fk方式。使用正常的字段关联关系的方式即可。
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值