跳至主要內容

MySQL基础(五)

Yaien Blog原创大约 2 分钟DBMySQL基础

MySQL基础(五)

MySQL基础笔记系列

关联关系

外键:用于建立关系的字段称为外键

一对一

  • 什么是一对一: 有AB两张表,A表中一条数据对应B表中的一条数据,同时B表中一条也对应A表中的一条

  • 应用场景: 为了提高查询效率 把原有一张表的数据拆成两张表如:商品表和商品详情表 、 用户表和用户信息扩展表

一对多

  • 什么是一对多:有AB两张表,A表中一条数据对应B表多条数据,同时B表一条对应A表一条,称为一对多。
  • 应用场景: 员工表和部门表 商品表和商品分类表 用户表和地址表
  • 如何建立关系: 在多的表中添加外键指向另外一张表的主键

多对多

  • 什么是多对多: 有AB两张表,A表中一条数据对应B表中的多条数据,同时B表中一体数据对应A表中的多条。
  • 应用场景: 用户表和权限表 老师表和学生表
  • 如何建立关系: 创建关系表,在关系表中添加两个外键指向另外两个表的主键

视图(view)

  • 什么是视图:数据库中表和视图都是其内部的对象,视图本质其实是取代了一段SQL查询语句,视图没有自己独立的数据,数据来自于原表
  • 视图的作用: 1. 重用SQL,提高开发效率 2. 隐藏敏感字段
 create view 视图名 as (子查询);

分类

  • 简单视图: 创建视图的子查询中不包含去重,分组,关联查询,聚合函数的视图称为简单视图,可以对视图中的数据进行增删改查操作
  • 复杂视图: 和简单视图相反,只能对视图中的数据进行查询操作

使用

  1. 创建查询每个部门平均工资,最高工资,最低工资,工资总和,部门人数的视图
create view v_emp_info as (select deptno,avg(sal),max(sal),min(sal),sum(sal),count(*) from emp group by deptno);
  1. 创建一个10号部门的视图
create view v_emp_10 as(select * from emp where deptno=10);
  1. 创建一个没有工资的员工表视图
create view v_emp_nosal as(select empno,ename,deptno from emp);
上次编辑于:
贡献者: yanggl