论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
SQL-Server
›
【MySQL】表的束缚
【MySQL】表的束缚
祗疼妳一个
金牌会员
|
2024-12-10 02:50:37
|
显示全部楼层
|
阅读模式
楼主
主题
983
|
帖子
983
|
积分
2951
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
目录
一、非空束缚not null
二、默认值束缚default
三、列描述comment
四、填充零zerofill
五、主键primary key
六、自增长auto_increment
七、唯一键unique
八、外键foreign key
一、非空束缚not null
如果不对一个字段做非空束缚,则默认为空。但空数据无法参与运算,而且我们偶然必要克制用户在某些字段中输入空值,所以实际开发时我们常常必要对一些字段进行非空束缚
像这样,在建表时不对字段进行非空束缚,且插入时也没有指定数据,则默认为空
如果要克制某些字段为空,就要像下面这样在数据范例后加上非空束缚
输入
desc 表名
检察表的结构:
NULL属性代表某列数据可否为空。可以看到,到场非空束缚后,对应字段就不允许为空了,
二、默认值束缚default
添加default束缚实际上就是为某列数据设置默认值,当未指定列数据则接纳该默认值
前面已经可以看到,如果不设置default束缚,则字段默认值为NULL。default束缚和非空束缚并不冲突,如果用户插入的数据是NULL,就看是否有非空束缚;如果对应列未插入数据,就看是否有default束缚。
添加default束缚的方式和非空束缚一样:
检察表结构:
可以看到对应字段的Default属性已经被设置为我们指定的默认值了
三、列描述comment
我们在之前已经见过列描述了,其主要用于对一个字段作注释,相当于一个软性的束缚
例如:
列描述用于提示用户对应字段的含义,可以通过
show create table 列名
来检察
四、填充零zerofill
zerofill可以在插入的数据小于设定的长度时在前面自动填充前导0
我们在设置数字范例时,可以在范例的背面加上一个长度,例如:
向表中插入一行数据:
可以看到,设置了zerofill属性的字段a,若数据长度小于我们前面设定的长度10,则会在前面添加前导0直到符合设定长度;如果数据位数比设置的长度更大则正常插入,无需添加
实际上在数据库内部存储的数据还是去除前导0后的原始数据,设置zerofill只能让数据格式化输出
五、主键primary key
主键(primary key)用于束缚某个字段里面的数据
不能重复且不能为空
。例如当插入学号数据时,一般是不允许有重复的学号的,因此就可以将该列数据设置为主键
一张表里最多只能有一个主键,且设置为主键的列通常是整数范例。因此主键也用于标识某行数据的唯一性,例如通过学号标识一个学生的唯一性
将某个字段设置为主键的方式有多种,例如:
建表时直接指定主键
在检察表结构时,对应字段的Key属性如果为PRI则表明该字段是主键
在已创建的表中追加主键束缚
alter table 表名 add primary key(列名);
复制代码
用主键字段列表来创建主键
这种方式可以创建复合主键,例如:
此时id和age共同合成一个复合主键,此时只有这两列数据同时重复才会触发主键冲突,否则都是允许插入的
删除主键的方式:
alter table 表名 drop primary key;
复制代码
可以看到主键束缚已经被删除了
在插入数据时,插入重复的主键数据是不被允许的,例如:
如果一个表中已经存在了若干条数据,且某一列中存在重复数据,此时我们不能再对该列添加主键束缚
六、自增长auto_increment
自增长属于主键的一种,当某个字段设置自增长时,即便我们在插入时不指定该字段的值,系统也会自动从当前字段已有的最大值进行+1操纵得到一个自增长的值。自增长通常与主键搭配使用作为逻辑主键
任何一个字段要做自增长,条件是本身是一个索引,且必须是整数。一张表最多只能有一个自增长字段
例如:
随便插入几个数据,观察自增长字段的变化
我们也可以在插入时指定自增长字段的值,这样在下一次自增时则会以上一次插入的值为基准开始增长
在最初建表时,我们也可以指定自增的初始值
七、唯一键unique
一张表中每每有多个字段都必要保证数据的不重复,但主键只能有一个,因此唯一键就可以解决多个字段必要唯一性束缚的问题。
唯一键与主键互补,主键用于标识单条数据在整个表中的唯一性,唯一键用于保证某个字段中数据在这一列的唯一性。例如我们将用户的姓名作为主键标识用户的唯一性,但用户的电话也是不应该重复的,因此我们可以将电话设置为唯一键
唯一键的本质与主键差不多,但唯一键允许数据为空,且不对空数据做唯一性比较(即唯一键可以有多个空数据)
例如:
随便插入几条数据:
可以看到唯一键不允许重复,但不会对null做检测
八、外键foreign key
外键用于界说主表与从表之间的关系。外键束缚主要在创建从表时界说,而且与主表的主键束缚或唯一键束缚关联
例如我们有一个主表存放学校内全部班级的信息,从表存放学生的信息
先创建主表,将班级的编号设置为主键
再创建从表,将学生学号设置为主键,将学生所属的班级编号与主表中的班级编号进行外键束缚关联
设置外键束缚的语法:
foreign key (从表字段) references 主表名(主表字段)
复制代码
我们先向主表中插入几个班级信息
再向从表中插入几个学生信息
可以看到,当学生所属的class_id在主表中的id字段中存在时,是可以正常插入的,但:
当class_id在主表中的id字段中不存在时克制插入。事实上一个学生也不大概属于一个不存在的班级,因此是符合我们实际业务必要的
外键的数据必要在主表中所关联的对应列中存在,不能插入不存在的数据
但是如果class_id为null,是允许插入的
例如某个学生还没有分配班级,就设置为null
如果某个主键列对应的外键中还有数据,我们是无法直接删除对应的主键数据的,例如:
编号为1的班级中还存在学生的数据,我们就无法把这个班级的数据删除
实际中,许多数据都是存在相关性的。如果两张表在业务上具有相关性,但是没有建立束缚关系,就大概导致出现问题,例如一个学生属于了一个不存在的班级。通过外键我们就可以将差别表的两个字段相关联,建立束缚关系。
完.
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
祗疼妳一个
金牌会员
这个人很懒什么都没写!
楼主热帖
容斥原理
信息收集之 端口扫描
教你30分钟快速搭建直播间
高考是人生旅途的一处驿站
【C++】拷贝构造函数的调用时机 ...
ASP.NET Core依赖注入系统学习教程:Se ...
Java EnumMap get()方法具有什么功能呢 ...
JetBrains RubyMine 2022 for Mac(Ruby ...
多态详解
java运算符(超详细!!!) ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
程序人生
Mysql
快速回复
返回顶部
返回列表