前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL常见约束条件「建议收藏」

MySQL常见约束条件「建议收藏」

作者头像
全栈程序员站长
发布2022-11-04 10:10:37
1.5K0
发布2022-11-04 10:10:37
举报

约束条件:限制表中的数据,保证添加到数据表中的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败! 约束条件在创建表时可以使用, 也可以修改表的时候添加约束条件

1、约束条件分类: 1)not null :非空约束,保证字段的值不能为空 s_name VARCHAR(10) NOT NULL, #非空

2)default:默认约束,保证字段总会有值,即使没有插入值,都会有默认值! age INT DEFAULT 18, #默认约束

3)unique:唯一,保证唯一性但是可以为空,比如座位号 s_seat INT UNIQUE,#唯一约束

4)check:检查性约束【MySQL不支持,语法不报错,但无效】 s_sex CHAR(1) CHECK(s_sex=’男’ OR s_sex=’女’),#检查约束(Mysql无效)

5)primary key :主建约束,同时保证唯一性和非空 id INT PRIMARY KEY,#主建约束(唯一性,非空)

6)foreign key:外键约束,用于限制两个表的关系,保证从表该字段的值来自于主表相关联的字段的值! teacher_id INT REFERENCES teacher(id) #这是外键,写在列级,Mysql无效

注意 1. 列级约束 上面6种约束都可以写,语法都支持,不报错,但外键约束写了mysql无效不起作用 2. 表级约束 非空、默认不支持,其他都可以!

语法:

其他: 【constraint 约束名】 约束类型(字段名称) ,

外键: 【constraint 约束名】 约束类型(字段名称) foreign key(字段名称) references 关联表名(其字段名),

代码语言:javascript
复制
DROP TABLE IF EXISTS students;
CREATE TABLE students(
id INT ,
s_name VARCHAR(10) not null,# 非空约束
s_sex CHAR(1) default '男',  # 默认约束
s_seat INT,
age INT ,
teacher_id INT , 

#上面是列级约束,下面有表级约束

CONSTRAINT pk PRIMARY KEY(id), #主建约束,pk是起的名,后面一样
CONSTRAINT uq UNIQUE(s_seat),  #唯一约束
CONSTRAINT ck CHECK(s_sex='男' OR s_sex='女'), #检查约束
CONSTRAINT fk_students_teacher FOREIGN KEY(teacher_id) REFERENCES teacher(id)  #外键约束
);

2、MySQL修改表时添加或删除约束

即修改表字段的数据类型或约束

外键删除约束: ALTER TABLE 表名 DROP CONSTRAINT 约束名称

1) 非空约束 alter table students modify column s_name varchar(20) not null; # 添加 alter table students modify column s_name varchar(20) ; # 删除 不写约束条件

2)默认约束 alter table students modify column age int default 18; #添加 alter table students modify column age; #删除

3)唯一键约束 alter table students modify column seat int unique; #添加 alter table students drop index seat; #删除 show index from students; #查看唯一约束

4)主键约束 alter table students modify column id int primary key; #添加 alter table students drop primary key; #删除 约束名称

5)外键约束 alter table students add foreign key(major_id) references majors(id); #添加 alter table students drop foreign key fk_students_teacher; #删除 约束名称

3、自增长列 auto_increment

id int primary key auto_increment,

一个表中有且只能有一个自增长列,自增长列一般和主键搭配

修改表的时候添加自增长列: alter table t_indentity modify column id int primary key auto_increment;

删除自增长列: alter table t_indentity modify column id int;

修改自增id的初始值:

ALTER TABLE 表名 AUTO_INCREMENT=6;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182278.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年10月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档