內(nèi)外連接

-- 有些時(shí)候where后會(huì)有多個(gè)條件(邏輯關(guān)系 and or not)
-- AND邏輯與 X and y:同時(shí)滿足為TRUE
-- 查詢?cè)?0號(hào)部門且工資不低于2500的員工信息

select * from emp where deptno =10 and sal>=2500
select * from emp where deptno =10 or deptno=20

-- AND 和 OR 的優(yōu)先級(jí)
select * from emp where (deptno=10 or sal<2500) and deptno=20

-- 特殊比較運(yùn)算符

-- 1.BETWEEN AND 表示在某個(gè)區(qū)間(A,B) 一般情況下:B大于A
-- 查詢工資在[2000,2500]區(qū)間員工的信息
select * from emp where sal between 2000 and 2500
-- 查詢?cè)?0號(hào)部門入職日期在1994年員工信息
select * from emp where hiredate between '1994-01-01' and '1994-12-31' and deptno=20

-- 2.LIKE(模糊查詢):只適用與文本查詢 特殊的符號(hào)
-- 語(yǔ)法規(guī)則:
-- ename like 'A'
-- 查詢ename中含有A字母的 ename like '%A%' %表示此處可能有[0,n]個(gè)字符
-- 查詢ename中倒數(shù)第二個(gè)字符是A字母 ename like '%A_' _表示一個(gè)字符
select * from emp where ename not like '%A%'
select * from emp where ename like '%O%'

-- 3.in(集合):相當(dāng)于or的關(guān)系 注意:如果in中的數(shù)據(jù)有null,null值是不能查詢出來(lái)的
select * from emp where deptno in(10,20) and job='CLERK';

-- 查詢員工SMITH或AMY的員工的信息
select *from emp where name='SMITH' and name='AMY'
select * from emp where ename in('SMITH','AMY')
-- 查詢?cè)谀骋粋€(gè)日期(1992-01-15,1994-12-22,1994-07-05)員工入職的信息
select *from emp where hiredate in('1992-01-15','1994-12-22','1994-07-05')

-- 4.專門針對(duì)null值進(jìn)行篩選的 is null
-- 查詢所有沒有獎(jiǎng)金的員工信息

select * from emp where comm is null
select * from emp where sal

-- 5.not 表示特殊比較運(yùn)算符的邏輯取反

select * from emp where comm is not null
select * from emp where sal not between 2000 and 2500

-- 排序(升序ASC:由小到大 降序DEsc:由大到小)
-- 語(yǔ)法:select.....from.......where......ORDER BY
-- 也可以按多列進(jìn)行排序
-- order by 列1 排序方式,列1 排序方式,列n 排序方式
-- 規(guī)則:它是在列1的基礎(chǔ)上進(jìn)行列2的排序

-- 查詢所有員工信息,按月編號(hào)進(jìn)行升序排序,再按

select * from emp order by deptno asc,sal desc
-- 查詢20號(hào)部門員工的姓名,工資,獎(jiǎng)金,月收入降序
select ename,sal,comm,sal+ifnull(comm,0) income from emp where deptno=20
order by income desc
-- 查詢所有員工信息,按月工資進(jìn)行升序排序

select * from emp order by sal
select * from emp order by sal desc

-- 查詢語(yǔ)句的編寫順序和執(zhí)行的順序
-- 編寫順序 select......from......where.....order by
-- 執(zhí)行順序:from....where...select.....order by

-- 多表查詢
select * from emp
select * from dept
select * from location
-- 查詢員工表中的編號(hào),姓名,職位,工資以及部門表中的編號(hào)以及部門名稱
-- A{a,b,c}
-- B{d,e,f,g}
-- A*B{ad,ae,af,ag,bd,be,bf,bg,cd,ce,cf,cg}

-- 兩個(gè)表來(lái)連接查詢的話,一定要加上兩個(gè)表的關(guān)聯(lián)條件(讓兩個(gè)表的數(shù)據(jù)一一對(duì)應(yīng))
-- 只會(huì)將符合條件的數(shù)據(jù)顯示出來(lái),因?yàn)閑mp中有一個(gè)員工沒有部門(不符合條件數(shù)據(jù),不會(huì)顯示)
select * from emp,dept where emp.deptno=dept.deptno
select empno,ename,sal,e.deptno,dname from emp e,dept d where e.deptno=d.deptno

-- 連接查詢
-- 1.等值連接(連接條件使用=)
-- 查詢?cè)鹿べY高于3000的員工的姓名,月工資,所在部門

select ename,sal+IFNULL(comm,0),dname from emp,dept where emp.deptno=dept.deptno and sal+IFNULL(comm,0)>3000

-- 2.內(nèi)鏈接 inner join....on(寫關(guān)聯(lián)條件)他是SQL99標(biāo)準(zhǔn)的規(guī)范寫法,在任何關(guān)系型數(shù)據(jù)庫(kù)中都是用

select e.ename,e.sal,d.dname
from emp e inner join dept d
on e.deptno=d.deptno where sal>3000

-- 查詢員工的姓名,部門的名稱和地址(adress)
select e.ename,d.dname,l.adress from emp e,dept d,location l where e.deptno=d.deptno and d.loc=l.locid

select e.ename,d.dname,l.adress from dept d inner join emp e on e.deptno=d.deptno inner join location l on
d.loc=l.locid

-- 3.外連接
-- 左外鏈接left outer join :將左表中符合與不符合條件的全部輸出
-- 右外連接 right outer join :將右表中符合與不符合條件的全部輸出
-- 全外連接 full outer join:將右表與左表中符合與不符合條件的全部輸出
-- 查詢所有員工信息(員工的姓名和所在部門)包含沒有部門的員工信息

select e.ename,d.dname from emp e left outer join dept d on d.deptno=e.deptno

select e.ename,d.dname from dept d right outer join emp e on d.deptno=e.deptno

-- 4.自連接(將一張表當(dāng)成兩張表來(lái)看)要求數(shù)據(jù)有一定的規(guī)律
-- 查詢員工的編號(hào),姓名,經(jīng)理的編號(hào)以及姓名
select * from emp
select e1.empno,e1.ename,e2.empno,e2.ename from emp e1 left OUTER JOIN emp e2 on e1.mgr=e2.empno

--
-- 1、選擇部門30中的雇員
select * from emp where deptno=30

-- 2、列出所有辦事員的姓名、編號(hào)和部門
select e.ename,e.empno,d.deptno from emp e,dept d where e.deptno=d.deptno

-- 3、找出傭金高于薪金的雇員
select * from emp where comm>sal

-- 4、找出傭金高于薪金60%的雇員
select * from emp where comm>sal*0.6
-- 5、找出部門10中所有經(jīng)理(MANAGER)和部門20中的所有辦事員(CLERK)的詳細(xì)資料
select * from emp where deptno=10 and job='MANAGER' or deptno=20 and job='CLERK'
-- 6、找出部門10中所有經(jīng)理、部門20中所有辦事員,既不是經(jīng)理又不是辦事員但其薪金>=2000的所有雇員的詳細(xì)資料
select * from emp where deptno=10 and job='MANAGER' or deptno=20 and job='CLERK' or not (job='MANAGER' and 'CLERK') and sal>=2000
-- 7、顯示正好為6個(gè)字符的雇員姓名

-- 8、顯示不帶有'R'的雇員姓名
select ename from emp where ename not like '%R%'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容