【oracle】六、select 條件查詢、子查詢


條件查詢

一、條件查詢結構

select 查詢內容 from 數據來源 where 行記錄條件

查詢我們班所有男同學信息

select 同學信息 from 學生表 where 性別= ‘男’

二、 解析過程

  1. from 學生信息表
  2. 判斷性別是否為 男
  3. 根據判斷的結果,將滿足條件的記錄在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')

解析

  1. 第一個a代表標識
  2. 第二個a就是要匹配的a
  3. 第三個a是標識
  4. 第四個%則是匹配的%
  5. 最終匹配a%

七、子查詢

判斷條件不能直接得到,需要計算和過濾的
select * from xxx where xx = ()

7.1 執行過程

  1. from
  2. where
    1. from
    2. where
  3. select

7.2案例

-- 查詢部門 名稱為 SALES的員工信息
  1. 確認要查詢的數據(員工信息)
  2. 確認數據源(emp)
  3. 篩選條件是否確認?
      1. 確認要查詢數據 (部門編號)
      2. 確認數據源(dept)
      3. 篩選條件是否確認?
        1. 是 (deptName='SALES')
      4. select
    1. 是(emp.deptid = id)
  4. select
select * from 員工表 where 員工所屬部門id = (select id from 部門 where 名稱 = ‘SALES’)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM