数据库约束

约束就是让数据库帮助程序员更好的检查数据是否正确!

1、not null

NOT NULL指定某列不能存储NULL值

2、unique

UNI保证某列的每行必须有唯一的值

数据库是如何判断这条记录是重复的,先查找再插入,如果没有重复的就插入,重复了不允许插入。

约束是可以组合在一起使用的,同时加上not null和unique

PRI = primary key4

主键约束就是not null和unique

主键也同样是在插入记录的时候先查找再插入的

正因为主键和unique都有先查询的过程,mysql就会默认给primary key 和 unique 这样的列,自动添加索引来提高查询的速度

  1. 实际开发中,大部分的表一般都会带一个主键,主键往往是一个整数表示的id
  2. 在mysql中,一个表里只能有一个主键,不能有多个
  3. 虽然主键不能有多个,mysql允许把多个列放到一起共同作为一个主键(联合主键)
  4. 主键另外一个非常常用的方法,就是使用mysql自带的"自增主键"作为主键的值,

插入id的时候,可以手动指定,也可以不动手指定(null),则会有mysql自动生成。

当mysql的数据量比较小,所有的数据都在一个mysql服务器上时,自增主键是可以很好工作的。

如果mysql的数据量很大,一台主机放不下,就需要进行分库分表,使用多个主机来进行存储了。本质上就是把一张大表分成多个小表,每个数据库服务器分别只存储一部分数据。

3、default

default 规定没有给列赋值时的默认值

file:///C:/Users/jinchunyi/Desktop/1107_mysql.png 

4、foreign key

foreign key 外键约束,针对两个表之间产生的约束

此处外键约束的含义就是要求student里的classId务必要在class表的id列中存在。

学生表中的数据要依赖班级表的数据,班级表的数据要对学生表产生约束力(父亲对孩子有约束力),此处起到约束作用的班级表就叫做父表,被约束的表叫做子表

外键约束是父表约束子表,但实际上子表也在约束父表。

我们试图删除class表中id为1的记录,发现删除失败,因为id为1的被子表引用了。

id为3的没有被子表引用,可以删除

如果想删除,那就需要先删除子表,再删除父表

创建外键约束时,一定是先创建父表再创建子表

数据库实体的关系:

1、一对一

教务系统中,一个学生对应一个账号

  1. 把学生和账号放到同一个表里
  2. 学生和账号放在不同的表里,相互关联

2、一对多

教务系统中,班级和学生的关系

学生和班级放在不同的表里,相互关联

3、多对多

教务系统中,课程和学生的关系

三张表:

4、没关系

如果两个实体往上述三个关系中都套不进去,就是没关系

如何通过关系建表:

  1. 找实体,给每个实体都安排个表(需求中的关键字)
  2. 明确实体的关系(往固定造句格式中套)
  3. 根据这些关系使用固定的方法来建表

​ 数据库约束【mysql】相关推荐

  1. 【数据库】MySQL数据库约束(六大约束)

    目录 1.数据库约束 1.1约束类型 1.2 非空约束(NOT NULL ) 1.3 唯一约束(UNIQUE) 1.4默认值约束(DEFAULT ) 1.5主键约束(PRIMARY KEY) 1.6外 ...

  2. MySQL数据库约束,表的设计

    Author: 老九 个人博客:老九的CSDN博客 ?? 个人名言:不可控之事 乐观面对 ?? 系列专栏:MySQL通关系列 文章目录 数据库约束 not null unique default pr ...

  3. MySQL 表的增删改查(进阶篇①)· 数据库约束 · 表的设计 · 新增查询结果 · 聚合查询 · 聚合函数 · group by · having · 笛卡尔积

    一.数据库约束 1.1 约束类型 1.2 非空约束 not null 1.3 唯一约束 unique 1.4 默认约束 default 1.5 主键约束 primary key 1.6 自增主键 pr ...

  4. MySQL 数据库约束、聚合查询、多表查询

    一.数据库约束 约束就是数据库在使用的时候,对于里面能够存的数据提出的要求和限制,程序猿就可以借助约束来完成更好的校验 1.约束类型 ① NULL约束 NOT NULL - 指示某列不能存储 NULL ...

  5. MySQL数据库(数据库约束)

    目录 数据库约束 数据库约束的类型: null约束 : unique约束(唯一约束): default约束(默认值约束): primary key约束(主键约束): foreign key约束(外键约 ...

  6. python3 django配置数据库(mysql)

    python3 django配置数据库(mysql)http://www.bieryun.com/3311.html python3 下的mysql驱动 django 连接mysql默认驱动是MySQ ...

  7. 数据库之MySQL基本操作命令

    目录 数据库结构 常用的数据类型 查看数据库结构 查看当前服务器中的数据库 查看数据库中包含的表 查看表的结构(字段) SQL 语句 DDL(数据定义语言) 创建新的数据库 创建新的表 删除指定数据表 ...

  8. 数据库(mysql)之用户管理

    目录 一.mysql中常见的的约束/规则 1.主键和外键的关系 2.主键和外键表的创建 二.数据表的操作 1.克隆表 2.清空表 2.1方法一:delete 2.2方法二:truncate 3.临时表 ...

  9. 数据库(Mysql)学习

    视图 创建视图 CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]VIEW view_name [(column_lis ...

最新文章

  1. gtest简介及简单使用
  2. cesium 3dtiles 加载本地数据_记一次Cesium地形数据生成过程
  3. 2010年06月12日
  4. java 飞行记录器_Java 11功能– Java飞行记录器
  5. python列表存储乱码_python 列表中文乱码
  6. 从ip_queue到nfnetlink_queue(上)
  7. 虚拟化发展历程及原理
  8. Filter_Listener:过滤器和监听器
  9. itext 生成pdf、pdf模板生成pdf
  10. PDF限制复制怎么办?怎么解决这个问题?
  11. openstack项目中遇到的各种问题总结 其二(云主机迁移、ceph及扩展分区)
  12. 小布老师_Oracle11g SQL基础入门
  13. TFT LCD液晶屏显示原理
  14. 网站实时监控系统的设计与实现
  15. 辛苦编码好几年,一朝栽在算法前
  16. 笔记本启动显示0xc000014c错误--提示缺失win10/system32内部文件
  17. 数据库理论——概念模型、逻辑模型、物理模型
  18. 使用GHOST对Windows操作系统进行备份和还原
  19. 实验一:inode耗尽导致磁盘故障
  20. HDU-2094(产生冠军)

热门文章

  1. 简单的医院挂号排队系统(c语言)
  2. echarts 饼图 逆时针降序排序
  3. 《TCP/IP详解卷1:协议》——第2章:链路层(转载)
  4. Onscripter for Android 04.25 更新!
  5. 怎样翻译文本?这三种翻译方法我经常使用
  6. 服务器线路有几种分类?
  7. jmeter断言(自动判断实际和预期结果是否相符的jmeter组件)
  8. 语音信号的同态处理、倒谱分析和Mel频率倒谱系数
  9. 【语音识别】基于MFCC和MEL倒频系数实现声纹识别附matlab代码
  10. Jedis链接不关闭