数据库约束【mysql】
数据库约束
约束就是让数据库帮助程序员更好的检查数据是否正确!
1、not null
NOT NULL指定某列不能存储NULL值
2、unique
UNI保证某列的每行必须有唯一的值
数据库是如何判断这条记录是重复的,先查找再插入,如果没有重复的就插入,重复了不允许插入。
约束是可以组合在一起使用的,同时加上not null和unique
PRI = primary key4
主键约束就是not null和unique
主键也同样是在插入记录的时候先查找再插入的
正因为主键和unique都有先查询的过程,mysql就会默认给primary key 和 unique 这样的列,自动添加索引来提高查询的速度
- 实际开发中,大部分的表一般都会带一个主键,主键往往是一个整数表示的id
- 在mysql中,一个表里只能有一个主键,不能有多个
- 虽然主键不能有多个,mysql允许把多个列放到一起共同作为一个主键(联合主键)
- 主键另外一个非常常用的方法,就是使用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、一对一
教务系统中,一个学生对应一个账号
- 把学生和账号放到同一个表里
- 学生和账号放在不同的表里,相互关联
2、一对多
教务系统中,班级和学生的关系
学生和班级放在不同的表里,相互关联
3、多对多
教务系统中,课程和学生的关系
三张表:
4、没关系
如果两个实体往上述三个关系中都套不进去,就是没关系
如何通过关系建表:
- 找实体,给每个实体都安排个表(需求中的关键字)
- 明确实体的关系(往固定造句格式中套)
- 根据这些关系使用固定的方法来建表
数据库约束【mysql】相关推荐
- 【数据库】MySQL数据库约束(六大约束)
目录 1.数据库约束 1.1约束类型 1.2 非空约束(NOT NULL ) 1.3 唯一约束(UNIQUE) 1.4默认值约束(DEFAULT ) 1.5主键约束(PRIMARY KEY) 1.6外 ...
- MySQL数据库约束,表的设计
Author: 老九 个人博客:老九的CSDN博客 ?? 个人名言:不可控之事 乐观面对 ?? 系列专栏:MySQL通关系列 文章目录 数据库约束 not null unique default pr ...
- MySQL 表的增删改查(进阶篇①)· 数据库约束 · 表的设计 · 新增查询结果 · 聚合查询 · 聚合函数 · group by · having · 笛卡尔积
一.数据库约束 1.1 约束类型 1.2 非空约束 not null 1.3 唯一约束 unique 1.4 默认约束 default 1.5 主键约束 primary key 1.6 自增主键 pr ...
- MySQL 数据库约束、聚合查询、多表查询
一.数据库约束 约束就是数据库在使用的时候,对于里面能够存的数据提出的要求和限制,程序猿就可以借助约束来完成更好的校验 1.约束类型 ① NULL约束 NOT NULL - 指示某列不能存储 NULL ...
- MySQL数据库(数据库约束)
目录 数据库约束 数据库约束的类型: null约束 : unique约束(唯一约束): default约束(默认值约束): primary key约束(主键约束): foreign key约束(外键约 ...
- python3 django配置数据库(mysql)
python3 django配置数据库(mysql)http://www.bieryun.com/3311.html python3 下的mysql驱动 django 连接mysql默认驱动是MySQ ...
- 数据库之MySQL基本操作命令
目录 数据库结构 常用的数据类型 查看数据库结构 查看当前服务器中的数据库 查看数据库中包含的表 查看表的结构(字段) SQL 语句 DDL(数据定义语言) 创建新的数据库 创建新的表 删除指定数据表 ...
- 数据库(mysql)之用户管理
目录 一.mysql中常见的的约束/规则 1.主键和外键的关系 2.主键和外键表的创建 二.数据表的操作 1.克隆表 2.清空表 2.1方法一:delete 2.2方法二:truncate 3.临时表 ...
- 数据库(Mysql)学习
视图 创建视图 CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]VIEW view_name [(column_lis ...
最新文章
- gtest简介及简单使用
- cesium 3dtiles 加载本地数据_记一次Cesium地形数据生成过程
- 2010年06月12日
- java 飞行记录器_Java 11功能– Java飞行记录器
- python列表存储乱码_python 列表中文乱码
- 从ip_queue到nfnetlink_queue(上)
- 虚拟化发展历程及原理
- Filter_Listener:过滤器和监听器
- itext 生成pdf、pdf模板生成pdf
- PDF限制复制怎么办?怎么解决这个问题?
- openstack项目中遇到的各种问题总结 其二(云主机迁移、ceph及扩展分区)
- 小布老师_Oracle11g SQL基础入门
- TFT LCD液晶屏显示原理
- 网站实时监控系统的设计与实现
- 辛苦编码好几年,一朝栽在算法前
- 笔记本启动显示0xc000014c错误--提示缺失win10/system32内部文件
- 数据库理论——概念模型、逻辑模型、物理模型
- 使用GHOST对Windows操作系统进行备份和还原
- 实验一:inode耗尽导致磁盘故障
- HDU-2094(产生冠军)