mysql 约束基本概念 主键约束 外键约束
constraint 约束数据(对表中数据的限制条件)
四种条件约束:非空 唯一性 主键约束 外键约束
- 非空约束(not null)约束的字段不能为空值,必须赋具体的数据
CREATE TABLE t_user (
id INT (4),
NAME VARCHAR(32) NOT NULL,
class BIGINT(1000)
);
这里的ID不可以是空值
- 唯一性约束(unique)约束的字段具有唯一性,不可重复
- 列级约束
CREATE TABLE t_user (
id INT (4)unique,
NAME VARCHAR(32) ,
class BIGINT(1000)
);
- 表级约束(多个字段联合进行约束)
CREATE TABLE t_user (
id INT (4),
NAME VARCHAR(32) ,
class BIGINT(1000)
unique(id,name)
//多个字段的联合唯一性约束 constraint 表名 _ 字段名 _约束字段名
);
- 非空性约束与联合性唯一约束的联合应用(既不能重复且唯一使用)
CREATE TABLE t_stu(
NO INT (4) NOT NULL UNIQUE
NAME VARCHAR(128)
);
主键约束
primary ky(pk)
主键约束 主键字段 主键值
表中某个字段被添加主键约束后,该字段被称为主键字段,主键字段中出现的每一个数据都称为主键值
主见约束的作用;
添加主见约束的字段既不能为空,也不能重复。。。。效果与not null unique 相同,但是默认添加了一个"索引 -----index"(
提高了检索效率)
一张表应该有主键,主键的值不能修改,及时两个数据完全相同但是他们的主键值不同,也认为他们是不同索引
根据个数分类,单一主键和复合主键
列级写法
CREATE TABLE t_stu(
NO INT (4) PRIMARY KEY
NAME VARCHAR(32) NOT NULL
);
表级写法
CREATE TABLE t_stu(
NO INT (4),
NAME VARCHAR(32) NOT NULL
PRIMARY KEY(id)
);
对于复合主键,只要有一个字段值不同就认为不符合
2.根据业务逻辑分为:自然主键和业务主键
自然主键:若是一个自然数,则这个自然数和业务没有任何关系
业务主键:主键值和当前的业务紧密相关,
mysql自动生成主键值AUTO_INCREMENT
mysql提供一个自增数字auto_increment,默认从1开始自增。
CREATE TABLE t_students(
id INT (4) PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(32) NOT NULL
);
外键约束(foreign key)(外键在同一个表中可以有多个)
外键约束,外键字段,外键值:
单一外键:给一个字段添加外键约束
DROP TABLE IF exits t_class;
CREATE TABLE t_class (
cno INT(4) PRIMARY KEY,
cname VARCHAR(32)
);
DROP TABLE IF exits t_stdent;
CREATE TABLE t_student(
sno INT(4)PRIMARY KEY AUTO_INCREMENT,
sname INT (4),
classno INT(4),
CONSTRAINT t_stdent_class_fk FOREIGN KEY(classno) REFERENCES t_class(cno)
);
首先避免了数据冗余,其次添加了外键约束
以上的表中产生了父子关系,先有父的数据,才有子 ,创建表时应该先创建父表数据再创建字表数据。
外键字段可以为null,外键为空的数据称为孤儿数据
被应用字段必须具有唯一性约束,
外键约束应该注意:
分成两张表来存储,可以减少数据的冗余
典型的一对多的关系,在多的一方要添加外键
SELECT s.sname,c,cname
FROM t_student
JOIN t_class
ON s.cno = c.classno;
查询学生做对应的班级名称。
级联更新与级联删除(在外键约束的基础之上来使用)
在外键约束后面添加关键字(谨慎使用)
级联删除:
alter table t_student add constraint t_student_classno_fk foreign key(classno) reference t_class(cno);
级联更新:
alter table t_student add constraint t_student_classno_fk foreign key(classno) reference t_class(cno) on update cascade;(及时更新与之相关的数据)
复合外键:给多个字段添加外键约束
mysql 约束基本概念 主键约束 外键约束相关推荐
- MySQL设置主键、联合主键、外键、唯一约束、非空约束、默认约束
MySQL登录.查看记录等基本操作 MySQL设置表的属性值自动增加 auto_increment 1.主键.联合主键.外键 1.什么是主键 主键是在多条记录中用于确定一条记录时使用的标识符.主键具备 ...
- MySQL的几个概念:主键,外键,索引,唯一索引
一.概念: 1.主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录 ...
- 数据库元数据数据字典查询_5_列出给定表的主键、外键约束
列出给定表的主键.外键约束 需求描述 需求:查询出给定的表emp的外键约束信息. 解决方法:通过各个数据库里提供的与外键约束相关的数据字典进行查询. 注: 数据库数据集SQL脚本详见如下链接地址 员工 ...
- mysql外键_MySQL外键约束(FOREIGN KEY)
MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用.对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表). 外键用 ...
- SQL的主键和外键约束
SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...
- SQL数据库语言基础之SqlServer数据表的六大约束(主键、外键、检查、非空、唯一性、默认值约束)的创建
文章目录 一.主键约束(primary key) 二.外键约束(foreign key) 三.检查约束(check) 四.非空约束(not null) 五.唯一性约束(unique) 六.默认值约束( ...
- templet 显示字段外键对应名_主外键和外键约束
主外键和外键约束 主键 主键(primary key):一列(或一组列),其值能够唯一区分表中每个行 . 外键 外键(foreign key) 外键为某个表中的一列,它包含另一个表的主键值,定义了两个 ...
- mysql存在外键的连接_MySQL(外连接、自然连接、新增-追加-删除外键、外键条件-约束)...
外连接(outer join) left join:左外连接(左连接),以左表为主表 right join:右外连接(右连接),以右表为主表 基本语法:左表 left/right join 右表 on ...
- SQL Server的主键与外键约束
SQL Server的主键与外键约束SQL Server有许多的重要知识,开始也说过许多的SQL知识了.SQL Server中的约束也是一个重要性的知识,下面我来说说关于SQL Server约束的知识 ...
最新文章
- 5、找出100到1000内的不含9的素数,存到result.txt文件中
- Kubernetes — 容器与镜像
- JZOJ 5463. 【NOIP2017提高A组冲刺11.8】证书
- 【原创视频】docker pull和docker run运行原理分析
- 【无套路送书】架构师是怎样炼成的?
- android监听动画完成,android判断动画已结束示例代码
- 联想y430完全拆机图解_联想Y430P笔记本拆机加内存和SSD图文教程
- 网络安全——病毒详解以及批处理01(自启动,修改密码 定时关机,蓝屏,进程关闭)
- drcom linux最新版,Drcom-client.org 上线暨新版 PUM v1.0 发布
- 40079 钉钉_钉钉获取免登陆授权码CODE,返回:不存在的临时授权码40078
- 跨平台第三方平台登录和单点登录
- ICPC 2018 焦作 C题 Supreme Command
- C中strchr()函数用法
- 怎么把视频转换成音频
- 蓝懿学习记录,今天又学到了很多
- 大唐“痴情”男女-白居易-湘灵
- 虚拟机RedHatEenterpriseLinux5安装及Oracle10.2.0安装手记收藏
- 抄小米策略,纽曼你成吗?
- 优秀员工的十八个习惯
- 【XJTUSE计算机图形学】第三章 几何造型技术(2)——Bezier 曲线与曲面
热门文章
- 我的心得:数据中心运维管理(二)
- 王者荣耀s14服务器维护时间,王者荣耀s14开始时间常见问题 王者荣耀一个赛季一般有多久?...
- 华为IP基础快速入门-P5-IP路由选择原理
- 指向函数的指针及应用
- 解决华硕主板使用机箱前侧面板无声音问题
- Integer比较不要使用==使用equals()或Integer.intValue()
- 四舍五入C语言(愚人节快乐)
- 儿童编程什么语言需求
- 2019-12 试卷中的生词(04)
- Visual Basic-手机归属查询