java mysql数据库回退_MySQL数据库:第十三章:常见约束

#常见约束

理解:约束是用于限定表的字段的,为了保证数据表的完整性

常见约束:★

(not null)NOT NULL 非空:用于限定某字段为必填项,比如姓名、id等

(default)DEFAULT 默认:用于限定某字段如果没有显式的插入值,默认存储的选项,比如性别、成绩等

(primary key)PRIMARY KEY主键:用于限定某字段是唯一的、非空的,比如学号

(unique)UNIQUE 唯一:用于限定某字段是唯一的,可以为空,比如:座位号

(check)CHECK检查:用于限定某字段必须满足指定条件,比如

check (gender = ‘男’ or gender =‘女’)

但是:mysql不支持

(foreign key)FOREIGN KEY外键:用于限定两个表的关系,比如学员信息表和专业表通过专业编号关联

【面试题】主键和唯一的对比

主键:唯一、非空、一个表至多有一个主键

唯一:唯一、可以为空、一个表可以有多个唯一键

#一、创建表时添加约束 √

分类:

列级约束:直接放在字段的后面,对当前字段有效

not null、default、unique、primary key

表级约束:放在所有字段的下面,对显式指定的字段有效

primary key、unique、foreign key

二者的区别:

①表级约束可以起名,语法:

【constraint 约束名】 约束类型(字段)

其中主键起名后,也无效!

②列级约束不能起名

语法:

create table 表名(

字段名 字段类型 约束类型,

字段名 字段类型 约束类型,

约束

)

#示例1:主键和唯一放在列级约束上

CREATE TABLE grade(

id INT PRIMARY KEY,

gradename VARCHAR(20)

)

CREATE TABLE testTab1(

id INT PRIMARY KEY,#主键

tname VARCHAR(20) NOT NULL,#非空

gender CHAR DEFAULT '男',#默认

seat INT UNIQUE NOT NULL,#唯一+非空

gradeId INT ,

FOREIGN KEY(gradeid) REFERENCES grade(id)

);

#示例2:主键和唯一放在表级约束上

DROP TABLE IF EXISTS testTab1;

CREATE TABLE testTab1(

id INT ,#主键

tname VARCHAR(20) NOT NULL,#非空

gender CHAR DEFAULT '男',#默认

seat INT ,#唯一+非空

gradeId INT ,

FOREIGN KEY(gradeid) REFERENCES grade(id),

PRIMARY KEY(id),

UNIQUE(seat)

);

#二、修改表时添加约束【了解】

DROP TABLE IF EXISTS testTab1;

CREATE TABLE testTab1(

id INT ,

tname VARCHAR(20) ,

gender CHAR,

seat INT ,

gradeId INT

);

#1、添加非空

ALTER TABLE testTab1 MODIFY COLUMN tname VARCHAR(20) NOT NULL;

#2、添加默认

ALTER TABLE testTab1 MODIFY COLUMN gender CHAR DEFAULT ‘女’;

#3、添加唯一

#列级约束的方式

#ALTER TABLE testTab1 MODIFY COLUMN seat int unique;

#表级约束的方式

ALTER TABLE testTab1 ADD CONSTRAINT uq UNIQUE(seat);

#4、添加主键

#列级约束的方式

ALTER TABLE testTab1 MODIFY COLUMN id INT PRIMARY KEY;

#表级约束的方式

#ALTER TABLE testTab1 ADD primary key(id);

#5、添加外键

ALTER TABLE testTab1 ADD CONSTRAINT fk_t_g FOREIGN KEY(gradeid) REFERENCES grade(id);

#三、修改表时删除约束【了解】

#1、删除非空

ALTER TABLE testTab1 MODIFY COLUMN tname VARCHAR(20) NULL;

#2、删除默认

ALTER TABLE testtab1 MODIFY COLUMN gender CHAR;

#3、删除唯一(唯一约束的名字默认和字段名一致)

ALTER TABLE testtab1 DROP INDEX seat;

#4、删除主键

ALTER TABLE testtab1 DROP PRIMARY KEY;

#5、删除外键

ALTER TABLE testtab1 DROP FOREIGN KEY fk_t_g;

SHOW INDEX FROM testtab1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值