一、约束
(1)概念:
- 是作用于表中列上的规则,用于限制加入表的数据
- 约束的存在保证了数据库中数据的正确性、有效性和完整性
(2)约束的分类
注:MySQL不支持检查约束
- 外键约束:
二、数据库设计
(1)数据库设计简介
- 软件研发步骤
2. 数据库设计概念
- 根据业务系统的具体需求,结合所用的DBMS,为这个业务系统构造出最优的数据存储模型
- 建立数据库中的表结构以及表之间的关联关系的过程
- 数据库设计步骤
- 需求分析(数据是什么,哪些属性,数据与属性的特点)
- 逻辑分析(ER图对数据库进行逻辑建模)
- 物理设计(根据数据库自身的特点把逻辑设计转换为物理设计)
- 维护设计(1.对新需求建表 2.表优化)
(2)表关系
- 一对一
- 用户与用户详情
- 用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另外一张表
- 实现方式:在任意一方加入外键,关联另一方的主键,并设置外键为唯一
- 一对多(多对一)
- 部门和员工
- 在多的一方建立外键关联一的一方主键
- 多对多
- 商品和订单
- 借助于第三张中间表,中间表至少包含两个外键,分别关联两方主键
三、多表查询
- 简介
-- 多表查询
select * from emp, dept;
-- 笛卡尔积:有A,B两个集合,取A、B所有的组合情况
-- 消除无效数据
-- 查询emp和dept的数据,emp.dep_id = dept.did
select * from emp, dept where emp.dep_id = dept.did;
- 内连接
-- 隐式内连接
select * from emp, dept where emp.dep_id = dept.did;
-- 查询emp的name,gender,dept表的dname
select emp.name,emp.gender, dept.dname from emp,dept where emp.dep_id = dept.did;
-- 给表起别名
select t1.name,t1.gender, t2.dname from emp t1,dept t2 where t1.dep_id = t2.did;
-- 显示内连接
select * from emp inner join dept on emp.dep_id = dept.did;
- 外连接
-- 左外连接
-- 查询emp表所有数据和对应的部门信息
select * from emp left join dept on emp.dep_id = dept.did;
-- 右外连接
-- 查询dept表所有数据和对应的员工信息
select * from emp right join dept on emp.dep_id = dept.did;
- 子查询
- 查询中嵌套查询,称嵌套查询为子查询
- 子查询根据查询结果不同,作用不同:单行单列、多行单列、多行多列
四、事务
1.简介
- 一种机制,一个操作序列,包含了一组数据库操作命令
- 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这组数据库命令要么同时成功,要么同时失败
- 事务是一个不可分割的工作逻辑单元
2.事务的四大特征
- 原子性A:事务是不可分割的最小操作单位,要么同时成功,要么同时失败;
- 一致性C:事务完成时,必须使所有的数据保持一致状态
- 隔离性I:多个事务之间,操作的可见性
- 持久性D:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的