SQL入門之條件表達式


   where子句和having子句主要是用來篩選符合條件的元組,其后緊跟的即為條件表達式。

0.and, or條件的連接

   用法和一般編程語言一樣,主要用於條件的拼接。and兩邊都為真,則結果為真。or兩邊只要一個為真,則結果為真。

   如果,where子句需要3個或者更多的條件,且同時使用了andor操作符,那么應該用圓括號來明確意圖,以便數據庫或者日后自己或他人能夠理解代碼,增強可讀性。如:

select emp_id
from employee
where end_date is null and (title='Teller' or start_date<'2007-01-01');

1.not條件的否定

   not即為非運算,它使條件取反。

2.相等條件

 形式為‘column=expression',例如:

  • title = 'Teller'
  • fed_id = '111-111'
  • ...

 這些條件被成為相等條件,因為它們將一個表達式等於另一個表達式。

select pt.name product_type, p.name product
from product p inner join product_type pt
on p.product_type_cd = pt.product_type_cd
where pt.name = 'Customer Accounts';

選出name為Customer Accounts的產品。

3.不等條件

這個是用來判斷兩個表達式不相等的。操作符為'<>'或'!='。例如,選取name不為Customer Accounts的產品:

select pt.name product_type, p.name product
from product p inner join product_type pt
on p.product_type_cd = pt.product_type_cd
where pt.name <> 'Customer Accounts';

4.范圍條件

常見的能夠表示范圍的有:<, >, <=, >=, between...and...。重點說明的是between...and...,所選條件包括符合兩個端點的元組(范圍上下限閉合),並且一定要確定好上下界,下限在between后面,上限在and后面,錯誤的使用將造成問題,這是因為between...and...在數據庫執行時被轉化為<=>=兩個操作條件。如:

正確使用:

而錯誤的使用:

這里數據庫實際執行的是一下語句:

select emp_id,  fname, lname, start_date
from employee
where start_date >= '2007-01-01' and start_date <= '2005-01-01';

因為不存在某個日期大於2007-01-01,卻又小於2005-01-01,所以結果當然是空值。

對於數字或者日期的范圍,結果能夠很輕易的看出來,但是對於一般字符串的范圍,結果就不那么容易了,必需知道所使用字符集中個字符的字典順序。

5.成員條件

對於一個條件:where product_cd = 'CHK' or product_cd='SAV' or product_cd='CD' or product_cd='MM';顯然這樣書寫非常麻煩,這里僅僅包含了4個條件,但當條件有幾十個的話,這樣的書寫非常令人乏味。這時可以使用in操作符。上面的可以寫成:

select account_id, product_cd, cust_id, avail_balance
from account
where product_cd in ('CHK', 'SAV', 'CD', 'MM');

產生的效果,和第一種是相同的,但簡便了許多。

6.匹配條件

通常情況下,經常使用通配符去進行匹配操作。對於SQL提供的一些內置函數雖然可以完成任務,但靈活性相對差一些。通配符如下:

  • _:匹配一個字符
  • %:匹配任意個字符(包括0個字符)
select lname
from employee
where lname like '_a%e%';

這段代碼的目的是從employee表中,選取lname中第一個字符為任意,第二個必須為a和e可以出現在后面任意位置的lname。

還有一種是通過正則表達式,以后學習。感覺路好長啊。。。。


免責聲明!

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



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