4.约束条件

六大约束

1.NOT NULL : 非空

2.DEFAULT: 默认值

3.PRIMARY KEY:主键

4.UNIQUE:保证唯一性,可以为空

5.CHECK:检查约束 [mysql中不支持]

6.FOREIGN KEY: 外键约束,用于保证该字段的值必须来自于主表关联列的值。

添加约束的时机:(数据添加之前)

​ 1.创建表时

​ 2.修改表时

	CREATE TABLE 表名(

​	字段名 字段类型 列级约束 #外键约束无效果

​	字段名 字段类型

​	表级约束 #非空、默认无效

)
CREATE TABLE stuinfo(
	id INT PRIMARY KEY,									
    stuName VARCHAR(20) NOT NULL,
    gender CHAR(1) CHECK(gender='男' OR gender = '女'),
    seat INT UNIQUE,
    age INT DEFAULT 18,
    #majorId INT REFERENCES major(id)                                   #外键
   
    #或者:
    #CONSTRAINT pk PRIMARY KEY(id),         #不起名不需要CONSTRAINT
    #CONSTRAINT ug UNIQUE(seat),
    #CONSTRAINT ck CHECK(gender='男' OR gender = '女'),
    CONSTRAINT fk_stuinfo_major FOREIGN KEY(major) REFERENCES major(id) #外键
)

CREATE TABLE major(
	id INT PRIMARY KEY,
    majorName VARCHAR(20)
);

#联合主键 / 联合唯一    -不推荐
PRIMARY KEY(id,name),# id name 都不能重复

#修改表时添加约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL
#添加主键
	#1.列级约束
	ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
	#2.表级约束
	ALTER TABLE stuinfo ADD PRIMARY KEY(id);
#外键
ALTER TABLE stuinfo ADD FOREIGN KEY(major) REFERENCES major(id);

#删除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;
#删除默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT;
#****删除主键****
ALTER TABLE stuinfo DROP PRIMARY KEY;
#****删除唯一****
ALTER TABLE stuinfo DROP INDEX seat;
#****删除外键
ALTER TABLE stuinfo DROP FOREIGN KEY majorid(或别名);

SHOW INDEX FROM stuinfo

PRIMARY 与UNIQUE 对比

  • 相同
1.都保证了唯一性,
2.都可以组合(联合)
  • 不同
3.但主键不能为 NULL,UNIQUE 可以,但也只能有一个NULL。
4.主键只能有一个,UNIQUE则不一样

外键

1.要求在从表设置外键关系
2.主表从表关联列的类型要求一致或兼容,名称无要求
3.主表关联列必须是一个KEY
4.插入数据先插入主表在插入从表,删除则反之
自增长列

1.标识列不一定和主键搭配

如 (2.每个表至多一个)

3.标识列只能是数值型

4.可以设置步长,从插入值处开始增长

CREATE TABLE major(
id INT UNIQUE AUTO_INCREMENT,
majorName VARCHAR(20)
);

删除主表记录
DELETE FROM major WHERE id=2;
1.级联删除

添加外键时追加ON子句

ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE
2.级连置空
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值