- 约束
- 数据库设计
- 多表查询
约束的概念:
约束是作用于表中列上的规则 ,用于限制加入表的数据
约束的存在保证了数据库中数据的正确性,有效性和完整性
约束案列:
—演示主键约束:非空且唯一
主键其实就是给一个字段指定它为主键 让它非空且唯一
多表查询:
多张表查询数据
— 多表查询
SELECT FROM dept,emp;
直接查询会导致数据重复会出现笛卡尔积现象出现
*那么我如何解决这个问题?
根据业务规则来消除的 去找关系
查询emp和dept的数据 要擅长发现两张表的关系
SELECT * FROM dept,emp WHERE emp.dep_id=dept.did;
这样查出来的数据才算数有效数据
这个就是所谓的连接查询
多表查询有两种:
内连接查询:
基本查询语法: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;
外连接:

— 左外连接
查询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 = ‘猪八戒’
);
子查询的三种方式:
单行单列<br /> 多行单列<br /> 多行多列

案列:
查询 财务部 和市场部 所有员工信息
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;
