目錄
條件查詢
一、條件查詢結構
select 查詢內容 from 數據來源 where 行記錄條件
查詢我們班所有男同學信息
select 同學信息 from 學生表 where 性別= ‘男’
二、 解析過程
- from 學生信息表
- 判斷性別是否為 男
- 根據判斷的結果,將滿足條件的記錄在select中指定的信息 進行存放(結果集當中)
三、條件運算
條件運算,本質上是對數據源過濾、篩選
> -- 大於
< -- 小於
>= -- 大於等於
<= -- 小於等於
<> -- 不等於
!= -- 不等於
between and -- 在什么什么之間 (范圍)
-- 查詢 工資在2000~4000的
select * from 表名 where 工資 between 2000 and 4000
in -- 包含什么什么 (范圍)
-- 查詢10、30、40
select * from 表名 where 字段 in (10,30,40)
四、連接條件運算
當查詢 條件有多個時,可能需要同時滿足,或者只滿足其中一個,或者不滿足某個條件,則需要用到或。且。非
and -- 並且 必須同時滿足
-- 查詢出30部門的員工,並且工資等於8000的
select * from 員工表 where 部門=30 and 工資= 8000
or -- 或者 滿足其中一個即可
-- 查詢出20部門的員工,以及工資大於1500的員工信息
select * from 員工表 where 部門= 20 or 工資>1500
not -- 非 反轉
-- 查詢工資不等於6000的員工信息
select * from 員工表 where not 工資=6000
五、Null運算Nvl()
對於Null 是特別的,Null也有對應的處理方式
-- is not null
-- 查詢出獎金不為空的員工信息
select * from 員工表 where 獎金 is not null
-- is null
-- 查詢出獎金為空的員工信息
select * from 員工表 where 獎金 is null
-- nvl(x,p) 用法:x:代表本身,p代表舍得的值
-- 需求:查詢獎金 小於等於0的員工信息
select * from 員工表 where nvl(獎金,0) <=0
六、模糊查詢
模糊查詢通常是用戶輸入一個關鍵詞,我們通過關鍵詞匹配用戶真實需求的值,這時候可以使用like
6.1 常規使用
-- 查詢名詞為 包含有 s 的員工信息
select * from 員工 where 名字 like '%s%'
-- 查詢 員工名詞以 A 開頭的員工信息
select * from 員工 where 名字 like 'A%'
-- 查詢 名稱中第二個單詞為A的員工信息
select * from 員工 where 名字 like '_A%'
-- 查詢名稱中 倒數第二個字母為 I 的員工信息
select * from 員工 where 名字 like '%I_'
6.2 特殊使用
-- 查詢員工名詞包含%的員工信息
-- a在這里只是代表一個標識符,他會去匹配a后面跟着的%也好_也好
select *from 員工 where 名字 like '%a%%' escape('a')
-- 如果我想查出 員工包含 a% 以上就不行了,因為上面的是查詢出包含%的(改造)
select *from 員工 where 名字 like '%aaa%%' escape('a')
解析
- 第一個a代表標識
- 第二個a就是要匹配的a
- 第三個a是標識
- 第四個%則是匹配的%
- 最終匹配a%
七、子查詢
判斷條件不能直接得到,需要計算和過濾的
select * from xxx where xx = ()
7.1 執行過程
- from
- where
- from
- where
- select
7.2案例
-- 查詢部門 名稱為 SALES的員工信息
- 確認要查詢的數據(員工信息)
- 確認數據源(emp)
- 篩選條件是否確認?
- 是
- 否
- 確認要查詢數據 (部門編號)
- 確認數據源(dept)
- 篩選條件是否確認?
- 是 (deptName='SALES')
- select
- 是(emp.deptid = id)
- select
select * from 員工表 where 員工所屬部門id = (select id from 部門 where 名稱 = ‘SALES’)