目录
一.约束
二.数据库设计
1.数据库设计的概念
2.数据库设计的步骤
3.表关系
三.多表查询
1.内连接和外连接
2.子查询
四.事务
1.简介
2.事务语法
3.事务四大特征
一.约束
1.约束的概念
约束是作用于表中列上的规则,用于限制加入表的数据约束的存在保证了数据库中数据的正确性、有效性和完整性2.约束的分类
约束名称 描述 关键字
非空约束 保证列中所有数据不能有null值 NOT NULL
唯一约束 保证列中所有数据各不相同 UNIQUE
主键约束 主键是一行数据的唯一标识,要求非空且唯一 PRIMARY KEY
检查约束 保证列中的值满足某一条件 CHECK
默认约束 保存数据时,未指定值则采用默认值 DEFAULT
外键约束 外键用来让两个表的数据之建立链接,保证数据的一致性和完整性 FOREIGN KEY
注意: MySQL不支持检查约束外键约束演示:
二.数据库设计
1.数据库设计的概念
数据库设计就是根据业务系统的具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型
建立数据库中的表结构以及表与表之间的关联关系的过程2.数据库设计的步骤
(1)需求分析(数据是什么?数据具有哪些属性?数据与属性的特点是什么)
(2)逻辑分析(通过ER图对数据库进行逻辑建模,不需要考虑我们所选用的数据库管理系统)
(3)物理设计 (根据数据库自身的特点把逻辑设计转换为物理设计)
(4)维护设计 (1.对新的需求进行建表;2.表优化)3.表关系
一对一:
如: 人 和 身份证
实现方式: 在任意一方建立外键,关联对方主键,并设置外键唯一
一对多(多对一):
如: 部门 和 员工
一个部门对应多个员工, 一个员工对应一个部门
实现方式: 在多的一方建立外键关联一的一方主键
多对多:
如: 商品 和 买家
一个商品对应多个买家, 一个买家对应多个商品
实现方式: 建立第三张中间表中间表至少包含2个外键,分别关联双方主键
三.多表查询
笛卡尔积:取A,B集合所有组合情况
多表查询:从多张表查询数据
1.连接查询
(1)内连接: 相当于查询AB交集数据
(2)外连接:左外连接:相当于查询A表所有数据和交集部分数据右外连接:相当于查询B表所有 数据和交集部分数据
2.子查询1.内连接和外连接
内连接
内连接查询语法:
隐式内连接
SELECT 字段列表 FROM 表1, 表2 ... WHERE 条件;
显式内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;
外连接
外连接查询语法
左外连接
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件:
右外连接
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;
左外连接:相当于查询A表所有数据和交集部分数据
右外连接:相当于查询B表所有数据和交集部分数据2.子查询
子查询
子查询概念: 查询中嵌套查询,称嵌套查询为子查询
1.子查询根据查询结果不同,作用不同
单行单列: 作为条件值,使用 =! = >< 等进行条件判断
SELECT 字段列表 FROM 表 WHERE字段名 = (子查询);
多行单列: 作为条件值,使用 in 等关键字进行条件判断SELECT 字段列表 FROM 表 WHERE 字段名 in (子查询);
多行多列: 作为虚拟表
SELECT 字段列表 FROM (子查询) WHERE 条件;
四.事务
1.简介
(1)数据库的事务 (Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令
(2)事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败
(3)事务是一个不可分割的工作逻辑单元2.事务语法
开启事务(开启事务后数据的变化是临时的变化,只在当前查询中可以看到)
START TRANSACTION;
或者 BEGIN;
提交事务(提交事务后临时数据的变化会变成永久的数据变化)
COMMIT;
回滚事务(撤回临时数据的变化的操作)
ROLLBACK;3.事务四大特征
(1)原子性(Atomicity): 事务是不可分割的最小操作单位,要么同时成功,要么同时失败
(2)一致性(Consistency): 事务完成时,必须使所有的数据都保持一致状态
(3)隔离性 (lsolation): 多个事务之间,操作的可见性
(4)持久性 (Durability): 事务一旦提交或回滚,它对数据库中的数据的改变就是永久的