山西响应式网站建设设计,网站开发中安全性的防范,海尔电子商务网站建设,wordpress网站后台要怎么登陆一、多表查询【1】什么是多表查询#xff1f;即#xff0c;从多个表中获取数据。注意#xff1a; 在多表查询是#xff0c;如果列明在两个表中都有#xff0c;那么列名前需要加上表名sql优化#xff1a;列名前最好加上表名#xff0c;尤其在多表查询时SELECT employees.…一、多表查询【1】什么是多表查询即从多个表中获取数据。注意 在多表查询是如果列明在两个表中都有那么列名前需要加上表名sql优化列名前最好加上表名尤其在多表查询时SELECT employees.first_name,employees.department_iddepartments.department_id,departments.department_nameFROM employees,departments -- 错误缺少连接条件-- 发生了笛卡尔集错误-- 愿因 缺少多表之间的连接条件或者连接条件错误SELECT e.first_name,e.department_id,-- 可以使用表的别名d.department_id,d.department_nameFROM employees e, departments d -- 错误缺少连接条件【2】关于笛卡尔集 笛卡尔集会在下面条件下产生:省略连接条件连接条件无效所有表中的所有行互相连接为了避免笛卡尔集 可以在 WHERE 加入有效的连接条件。【3】使用笛卡尔集与不使用的对比①查出所有数据SELECT * FROM employeesSELECT * FROM departments②不使用笛卡尔集的普通子查询(MySQL连接)在 WHERE 子句中写入连接条件。在表中有相同列时在列名之前加上表名前缀-- 需求 查询每个员工所在部门的名称SELECT employees.first_name,employees.department_id,departments.department_id,departments.department_nameFROM employees,departmentsWHERE employees.department_id departments.department_id③使用JOIN ON 实现多表查询解决笛卡尔集的问题-- sq199规定了多表查询的规则-- 使用 join on-- 注意 如果有n个表需要连表查询那么至少得有n-12个连接条件SELECT e.first_name,d.department_id,l.cityFROM employees e JOIN departments dON e.department_id d.department_idJOIN locations lON d.location_id l.location_idMySQL 连接【1】自连接非自链接-- 自连接需求 查找员工和员工的领导SELECT e.first_name,m.first_nameFROM employees e JOIN employees mON e.manager_id m.employee_id-- 非自连接两张不同的表进行连接查询-- 等值连接非等值连接-- 等值连接案例SELECT e.first_name,d.department_nameFROM employees e JOIN departments dON e.department_id d.department_id-- 非等值连接需求 查看所有员工薪水的等级SELECT e.first_name,e.salary,j.gradeFROM employees e JOIN job_grades jON e.salary j.lowest_sal AND e.salary j.highest_sal【2】 内连接外连接-- 内连接合并具有同一列的两个以上的表的行结果集中不包含一个表与另一个表不匹配的行-- 外连接 左外连接 VS 右外连接-- 左外连接 两个表在连接过程中除了返回满足连接条件的行以外还返回左表中不满足条件的行-- 这种连接成为左外连接SELECT e.first_name,e.department_id,d.department_nameFROM employees e LEFT OUTER JOIN departments dON e.department_id d.department_id-- 右外连接两个表在连接过程中除了返回满足连接条件的行意外还返回右表中不满足条件的行-- 这种连接成为右外连接SELECT e.first_name,e.department_id,d.department_id,d.department_nameFROM employees e RIGHT OUTER JOIN departments dON e.department_id d.department_id-- 满外连接 full join (mysql不支持)