• 约束
  • 数据库设计
  • 多表查询

    约束的概念:

    约束是作用于表中列上的规则 ,用于限制加入表的数据
    约束的存在保证了数据库中数据的正确性,有效性和完整性捕获.PNG
    约束案列:
    —演示主键约束:非空且唯一
    主键其实就是给一个字段指定它为主键 让它非空且唯一

多表查询:

多张表查询数据
— 多表查询
SELECT FROM dept,emp;
直接查询会导致数据重复会出现笛卡尔积现象出现
*那么我如何解决这个问题?

根据业务规则来消除的 去找关系

查询emp和dept的数据 要擅长发现两张表的关系
SELECT * FROM dept,emp WHERE emp.dep_id=dept.did;
这样查出来的数据才算数有效数据
这个就是所谓的连接查询

多表查询有两种:
捕获.PNG

内连接查询:

  1. 基本查询语法:![捕获.PNG](https://cdn.nlark.com/yuque/0/2022/png/27093912/1649943696470-d528f41f-0901-475c-ab11-1c919b25ea9b.png#clientId=uf4064de5-f13d-4&crop=0&crop=0&crop=1&crop=1&from=drop&id=ue6dd9911&margin=%5Bobject%20Object%5D&name=%E6%8D%95%E8%8E%B7.PNG&originHeight=450&originWidth=923&originalType=binary&ratio=1&rotation=0&showTitle=false&size=88345&status=done&style=none&taskId=u29c39759-34f0-4465-83b4-db15ff43338&title=)INNER JOIN 内部关联<br />**隐试内连接:**<br />查询emp 表的name ,gender 。dept表的name<br /> SELECT<br /> emp. NAME,<br /> emp.gender,<br /> dept.dname<br />FROM<br /> dept,<br /> emp<br />WHERE<br /> emp.dep_id = dept.did;<br />**显示内连接:**<br />显示内连接:<br />SELECT * from emp INNER JOIN dept ON emp.dep_id=dept.did;

外连接:

捕获.PNG
— 左外连接
查询emp表所有数据和对应的部门信息
SELECT * FROM emp LEFT JOIN dept ON emp.dep_id = dept.did;

— 右外连接
查询dept表所有数据和对应的员工信息

SELECT * FROM dept RIGHT JOIN emp ON emp.dep_id = dept.did;

子查询:

子查询概念:
查询中嵌套查询 称嵌套查询为子查询
子查询根根据查询结果不同 作用不同
单行单列
多行单列
多行多列
查询工资高于猪八戒的员工信息

— 先查猪八件的工资吗
SELECT salary FROM emp WHERE NAME = ‘猪八戒’;

再去查高于猪八戒的员工信息

SELECT
*
FROM
emp
WHERE
emp.salary > (
SELECT
salary
FROM
emp
WHERE
NAME = ‘猪八戒’
);

子查询的三种方式:

  1. 单行单列<br /> 多行单列<br /> 多行多列

捕获.PNG
案列:

查询 财务部 和市场部 所有员工信息
SELECT did FROM dept where dname = “财务部” OR dname = “市场部”;

SELECT FROM emp WHERE dep_id in(2,3);
*多行多列:

查询日期是在 2011 - 11 - 11之后的员工信息和部门信息

SELECT

FROM
(
SELECT

FROM
emp
WHERE
join_date > ‘2011-11-11’
)t1,dept WHERE t1.dep_id = dept.did;

多表查询案列: