程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> SQL入門之條件表達式,sql入門表達式

SQL入門之條件表達式,sql入門表達式

編輯:MySQL綜合教程

SQL入門之條件表達式,sql入門表達式


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

0.and, or條件的連接

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

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

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。

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved