博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
非空 默认 男 mysql_MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束...
阅读量:4678 次
发布时间:2019-06-09

本文共 2670 字,大约阅读时间需要 8 分钟。

/*MySQL进阶13

常见六大约束:

1.not null 非空

2.default :默认值,用于保证该字段的默认值 ; 比如年龄:1900-10-10

3.primary key : 主键,用于保证该字段的值具有唯一性,并且非空

4.unique : 唯一约束,保证该字段的值可以为空,具有唯一性

5.check : 检查约束[mysql不支持,不报错,没有实际效果]

6.foreign key : 外键约束; 用于限制两个表的关系, 用于保证该字段的值必须来自于主表的关联列的值;

在从表中添加外键约束,用于引用主表中的某列的值;

比如: 学生表的专业编号,员工表的部门编号,员工表的工种编号;

添加约束的时机:

1.创建表时

2.修改表时

----------

约束的添加分类:

列级约束 : 六大约束语法上都支持,但外键没有效果!!

表级约束 :

除了非空,默认, 其他的都支持!

语法 : constraint 约束名 约束类型(字段名)

主键和唯一:

都可以组合!

#二. 修改表的时候

添加列级约束

alter table 表名 modify column 字段名 字段类型 新类型;

添加表级约束

alter table 表名 add [constraint 约束名] 约束类型(字段名) [外键的引用];

#********添加表名

# alter table 表名 add column 字段名 字段类型;*/

CREATE TABLE表名(

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

字段名 字段类型,

表级约束

);

#一: 创建表时添加约束CREATE DATABASEstudents;

#1.添加列级约束USEstudents;CREATE TABLEstuinfo(

idINT PRIMARY KEY, #主键

stuNameVARCHAR(20) NOT NULL, #非空

genderCHAR(1) CHECK(gender IN ('男','女')), #检查约束

seatINT UNIQUE, #唯一

ageINT DEFAULT 18, #默认约束

majorIdINT REFERENCESmajor(id) #设置为外键

);DESCstuinfo;CREATE TABLEmajor(

idINT PRIMARY KEY,

majorNameVARCHAR(20)

);

#2添加表级约束DROP TABLE IF EXISTSstuinfo;CREATE TABLEstuinfo(

idINT, #主键

stuNameVARCHAR(20), #非空

genderCHAR(1), #检查约束

seatINT, #唯一

ageINT, #默认约束

majoridINT,CONSTRAINT pk PRIMARY KEY(id), #设置主键CONSTRAINT uq UNIQUE(seat), #唯一键CONSTRAINT ck CHECK(gender ='男' OR gender ='女'), #检查CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCESmajor(id) #外键

);

SHOWINDEX FROMstuinfo;

#组合写法,更常用! 主键和唯一:都可以组合!DROP TABLE IF EXISTSstuinfo;CREATE TABLEstuinfo(

idINT, #主键

stuNameVARCHAR(20), #非空

genderCHAR(1), #检查约束

seatINT, #唯一

ageINT, #默认约束

majoridINT,PRIMARY KEY(id,stuName), #设置主键UNIQUE(seat), #唯一键CHECK(gender ='男' OR gender ='女'), #检查CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCESmajor(id) #外键

);

#二. 修改表的时候添加约束DROP TABLE IF EXISTSstuinfo;CREATE TABLEstuinfo(

idINT,

stuNameVARCHAR(20),

genderCHAR(1),

seatINT,

ageINT,

majoridINT);DESCstuinfo;

#1.添加非空约束ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;

#2添加默认约束ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;

#3添加主键:1)列级约束ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;

#2) 表级约束ALTER TABLE stuinfo ADD PRIMARY KEY(id);

#4.添加唯一

#1.列级约束ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;

#2) 表级约束ALTER TABLE stuinfo ADD UNIQUE(id);

#5.添加外键ALTER TABLE stuinfo ADD FOREIGN KEY(majorid) REFERENCESmajor(id);ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCESmajor(id);

#三 .删除约束

#1.删除非空约束ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;

#2删除默认约束ALTER TABLE stuinfo MODIFY COLUMN age INT;

#3删除主键ALTER TABLE stuinfo DROP PRIMARY KEY;

#4删除唯一ALTER TABLE stuinfo DROP INDEXseat;

#5.删除外键ALTER TABLE stuinfo DROP FOREIGN KEYfk_stuinfo_major;DESC stuinfo;

转载地址:http://rtfkp.baihongyu.com/

你可能感兴趣的文章
团队作业
查看>>
如何避免在简单业务逻辑上面的细节上面出错
查看>>
大型网站高并发的架构演变图-摘自网络
查看>>
8丶运行及总结
查看>>
如何理解一台服务器可以绑定多个ip,一个ip可以绑定多个域名
查看>>
改进delphi中的RoundTo函数
查看>>
Microsoft Visual SourceSafe使用经验
查看>>
威尔逊定理及证明
查看>>
[LeetCode] Peeking Iterator
查看>>
Understanding Unix/Linux Programming-用户程序play_again4.c
查看>>
算法总结
查看>>
WPF中使用USERCONTROL
查看>>
图片,base64 互转
查看>>
cache—主存—辅存三级调度模拟
查看>>
Java线程的定义
查看>>
Python-面向对象(组合、封装与多态)
查看>>
Mininet
查看>>
COSC2531 Programming Fundamentals
查看>>
设计模式系列 - 访问者模式
查看>>
20180507小测
查看>>