集合查詢
子查詢
單行子查詢
select * from emp where deptno = (select deptno from emp where ename='smith');
多行子查詢
in:查詢和10號部門的工作相同的雇員的名字,崗位,工資,部門號,但是不包含10自己的
select ename,job,sal,empno from emp where job in
(select distinct job from emp where deptno=10) and deptno<>10;
all:顯示工資比部門30的所有員工的工資高的員工的姓名、工資和部門號
select ename, sal, deptno from emp where sal > all
(select sal from emp where deptno=30);
any:顯示工資比部門30的任意員工的工資高的員工的姓名、工資和部門號
select ename, sal, deptno from emp where sal > any
(select sal from emp where deptno=30);
合併查詢
union:該操作符用於取得兩個結果集的並集,當使用該操作符時,會自動去掉結果集中的重複行
union all:該操作符用於取得兩個結果集的並集,當使用該操作符時,不會去掉結果集中的重複行
表的內連和外連
多表查詢必須進行連線才能進行查詢,不能直接使用where進行查詢
內連線
select 字段 from 表1 inner join 表2 on 連線條件 and 其他條件
前面學習的都是內連線
外連線
左外連線:如果聯合查詢,左側的表完全顯示我們就說是左外連線
select 欄位名 from 表名1 left join 表名2 on 連線條件
右外連線:如果聯合查詢,右側的表完全顯示我們就說是右外連線
select 欄位名 from 表名1 right join 表名2 on 連線條件
連線可以巢狀
eg:
select e.last_name, e.first_name, dm.dept_name
from (employees e left join dept_emp de on e.emp_no = de.emp_no)
left join departments dm on de.dept_no = dm.dept_no;
Mysql內外連線
1.自然連線 natural join 自然連線將表中具有相同名稱的列自動進行匹配,自然連線不必指定任何同等連線條件也不能認為指定哪些列需要被匹配,自然連線得到的結果表中,兩表中名稱相同的列只出現一次。select from employee natural join department 2.內連...
mysql 復合查詢
mysql 的復合查詢或者巢狀查詢,有表兩張,要以 clrtheme 表兩張為表列,將 clrcolor 橫向列出,故選擇巢狀查詢。mysql 復合巢狀查詢命令如下 select from clrtheme as t1,select from clrcolor where sort 0 as c1,...
MySQL復合查詢
實際開發中往往資料來自不同的表,所以需要多表查詢。下面以乙個簡單的公司管理系統,有三張表emp,dept,salgrade來演示如何進行多表查詢。舉例 1.顯示雇員名,雇員工資以及所在部門的名稱。因為要查詢的資料來自兩個表,所以叫做多表查詢。select emp.ename,emp.sal,dept...