1. 程式人生 > >《SQL資料庫視訊》之玩轉SELECT語句(一)

《SQL資料庫視訊》之玩轉SELECT語句(一)

         敲機房收費系統的時候,感覺我的SELECT語句總是千篇一律,txtSQL=”select* from talbel _source where search_condition ”這怎麼可以,把整個系統敲完也沒有把最基本的select語句格式用到自己的程式碼中,不僅收穫會很少,到了複雜的地方只能建立N多個記錄集mrc N來救場,還費了事。不行,我得回頭去充充電。

                                                                                                                                                                                              -------前言

    SELECT語句的功能有:資料查詢(精確or模糊)、統計、分組、排序等。我們常用的功能是資料查詢,對於其他三方面的運用比較少,下面就對其進行整理。

 

如上圖是對資料庫操作的簡單分類,通過對其中的學習,完全可以把它的四個主要功能涉及到,首先我先對“獲取簡單資料”進行總結,這樣在機房系統中就可以做到玩轉SELECT了,好了不囉嗦了,直奔主題。

1SELECT [ALL|DISTINCT]  select_list

2[INTO  new _table]

3FROM  table_source (as 別名)

4[WHERE  search_condition] (比較、邏輯、範圍、列表、字元、未知)

5[GROUP BY group_by_expression]

6[HAVING search_conditions]

7[ORDER BY  order_expression][ASC|DESC]

SELECT的經典語句結構中共有5個子句,分別是SELECT\FROM\WHERE\GROUPBY\ORDERBY  其中select和from為必選,其餘為可選,語句順序不能變,其實我認為要玩轉SELECT語句,最重要的是玩轉以where條件子句為中心的和其他語句的混搭。掌握了它的一些技巧,再次遇到它就不會犯難了。

  首先說一下where子句,search_condition可以為比較、邏輯

、範圍、列表、字元、未知運算子,在此主要說明邏輯和列表運算子,下面先說列表運算子,WHERE expression [Not] IN value_list,

例如:機房收費中查詢學號除012034以外所有人的資訊時,

SELECT * FROM student_Infowhere stdNo not in (‘012’,’034’)就可以了。

再舉個例子就是今天做自考題時遇到的一個問題,

設學生社團管理資料庫有三個關係:

S(SnoSnameAgeSexDept)

A(AnoAnameLocationManager)

SA(SnoAnoDate)

其中表S的屬性分別表示學號、姓名、年齡、性別和所在系;表A的屬性分別表示會員編號、協會名、協會 的辦公地點和負責人(負責人為學號);表SA描述了學生參加社團的情況,其屬性分別表示學號、協會編號 、加入協會時間。

試用SQL語言查詢參加籃球”協會的學生姓名和所在系。

只要你會用WHERE子句的列表運算子便可輕輕鬆鬆搞定:

    SELECTSname,Dept

    FROM S

    WHERE Sno IN (

        SELECT Sno FROM  SA

        WHERE Ano IN(

             SELECT  Ano FROM A WHERE A.Aname='籃球'));

回到話題其中我認為邏輯運算子要比其他四類高一個級別,可以將其他的四種進行組合,比如where Age>10 and sex=’M’, 邏輯運算子AND ORNO 起到了連線多個search condition的作用,但是需要注意:

1、NOT僅用於簡單條件,不能用於包含AND和OR的複合條件,例如NOT(sex=’M’ AND age>10)是錯的。

2、AND用於合併簡單條件和包含NOT的條件,但這些條件不允許包含OR,例如sex=’M’ AND (NOT age>10)是正確的,但是sex=’M’ AND(age>10 OR age<5)是錯誤的。

3、OR可以使用AND和NOT合併的所有複合條件。

4、優先順序NOT>AND>OR,處理時系統先處理優先順序高的,再處理優先順序低的。    

對於SELECT語句的其他4條子句,都是比較常用的,就不做說明了。

對於利用SEL語句進行多表操作,將會在下一篇部落格中提到哦~~~