场景

设计数据库表,用来存储学生和班级信息表

第一种情况:

将学生信息和班级信息存储到一张表中

sno     sname      classno      cname
1       周杰伦         001        高三1班
2       林俊杰        002         高三1班
3       詹姆斯        003         高三2班

这种情况会造成数据冗余问题,比如cname字段的数据重复太多,这时候稍微有经验点的就会讲学生信息和班级信息分开成两张表进行存储。

第二种情况:

学生表(添加单一外键)

sno(pk)     sname       classno(fk)
1           周杰伦        001
2           林俊杰        002
3           詹姆斯        003

班级表

cno(pk)     cname
100         高三1班
200         高三2班

为了保证学生表中的classno字段中的数据必须来自于班级表中的cno字段中的数据,有必要给学生表中的classno字段添加外键约束

mysql> drop table if exists t_student;
mysql> drop table if exists t_class;mysql> create table t_class(-> cno int(10) primary key,-> cname varchar(128) not null unique-> );mysql> create table t_student(-> sno int(10) primary key auto_increment,-> sname varchar(32) not null,-> classno int(3),-> foreign key(classno) references t_class(cno)-> );

外键CONSTRAINT的注意点:

  1. 外键值可以为NULL
  2. 外键字段去引用一张表的某个字段的时候,被引用的字段必须有unique约束
  3. 使用外键后,两张表分为父子表:班级表(父表),学生表(子表)
  4. 创建先创建父表
  5. 删除先删除子表数据
  6. 插入先插入父表数据

例子:


# 父表中的deptId,为被引用的字段
CREATE TABLE employ(id INT PRIMARY KEY,ename VARCHAR(20),deptId INT);# 子表使用CONSTRAINT 进行对父表deptId的引用
CREATE TABLE employ(id INT PRIMARY KEY,ename VARCHAR(20),deptId INT,
CONSTRAINT employ_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id));

CREATE TABLE employ(id INT PRIMARY KEY,ename VARCHAR(20),deptId INT, CONSTRAINT employ_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id));


个人网站:http://xudailong.cc

关注「蛇崽网盘教程资源」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。

更多资源请访问:

https://blog.csdn.net/xudailong_blog/article/details/78762262

关注「蛇崽网盘教程资源」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。

在微信后台回复「130个小程序」,即可免费领取享有导入就能跑的微信小程序

一分钟了解CONSTRAINT约束的用法相关推荐

  1. SQL中的CONSTRAINT(约束)用法

    主要就是增加数据约束的. ORACLE支持五种类型的完整性约束 NOT NULL (非空)–防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHEC ...

  2. SQL中的CONSTRAINT(约束)用法总结

    主要就是增加数据约束的. Oracle中的约束简单介绍 约束   Including Constraints 在数据库中使用约束(constraints)是为了在该数据库中实施所谓的"业务规 ...

  3. constraint的一些用法总结

    主要就是增加约束的 以下几种约束 .并 一一列举: 1.主键约束: 要对一个列加主键约束的话,这列就必须要满足的条件就是分空 因为主键约束:就是对一个列进行了约束,约束为(非空.不重复) 以下是代码  ...

  4. constrain用法_SQL中的CONSTRAINT(约束)用法总结

    主要就是增加数据约束的.在sqlite作为数据库时必须加上约束 Oracle中的约束简单介绍 约束   Including Constraints 在数据库中使用约束(constraints)是为了在 ...

  5. Oracle之唯一性约束(UNIQUEConstraint)用法详解

    Oracle | PL/SQL唯一索引(Unique Constraint)用法 1 目标 用示例演示如何创建.删除.禁用和使用唯一性约束. 2 什么是唯一性约束? 唯一性约束指表中一个字段或者多个字 ...

  6. SQL语法之CONSTRAINT约束操作

    CONSTRAINT,约束,即对数据库表中的数据进行约束,以保证数据记录的完整性和有效性. 比较常用的是,创建表时添加约束,但是为了整理记录,这里把所有的用法都写下来,但是大家按照最常见的重点掌握. ...

  7. 关于 Oracle DB CONSTRAINT约束的一些SQL ORA-02292: integrity constraint violated

    ALTER TABLE table_name DISABLE CONSTRAINT constraint_name; select * from all_constraintswhere owner ...

  8. 【机器学习基础】前置知识(二):30分钟掌握常用Jupyter Notebook用法

    相较于Pycharm执行py文件来说,Jupyter Notebook可保存执行过程,添加图表.注释等富文本说明的功能,使其对机器学习的开发者格外友好. 本文包含机器学习环境安装,Jupyter No ...

  9. unionall mysql_5分钟了解MySQL5.7union all用法的黑科技

    wKiom1f8bNajxqWNAAA4eVx2Dz8965.jpg wKioL1f8bNbCZ-bgAAA4pG6yXEQ597.jpg MySQL5.7union all用法的黑科技 union ...

最新文章

  1. Ubuntu 14.04 64位上安装wps office软件
  2. C++,string类的指针,string类数组的指针 string *s
  3. 阿里云HBase发布冷存储特性,助你不改代码,1/3成本轻松搞定冷数据处理
  4. 谷歌地图添加点击事件 Google Maps API V3: Add click event listener to all (multiple) marker
  5. 最长上升子序列_动态规划 最长上升子序列LIS
  6. 终端/Shell 快捷键
  7. Linux文件系统(五)---三大缓冲区之buffer块缓冲区
  8. Java后台基础设施
  9. XSS跨站脚本攻击和预防措施
  10. JWplayer 用法及参数介绍(二)
  11. windows电脑截截屏截图的方法
  12. LeetCode 每日一题 781. 森林中的兔子
  13. 【转】全栈工程师到底有什么用
  14. 思科2960交换机配置命令
  15. 【Vue实用功能】Vue实现tab页多页面切换
  16. 如何准确的向工程师传达动效设计?
  17. Tcp send阻塞问题
  18. nodejs+vue旅游网站设计
  19. unity3d录音播放
  20. hangye5:09年做行业网址导航不如做行业网站联盟

热门文章

  1. 我不想上班,怎么才能成为自由职业…
  2. windows系统golang安装
  3. mysql授权问题:1004 Access denied for user '用户名'@'%' to database
  4. 详细解读 Prometheus 四种指标类型
  5. android如何设置字符编码格式,android studio编码格式设置
  6. 400元左右的蓝牙耳机啥牌子好?400元价位蓝牙耳机推荐
  7. python升级pip失败,失败后导致pip压根不能用,解决方案
  8. adb.exe应用程序无法正常启动,提示0xc000007b错误
  9. vue子组件向父组件传值的三种方式
  10. 组件 —— 子组件向父组件传值