摘要:select-from-where一.基本結(jié)構(gòu)在SQL語言中,只提供了一個動詞Select用來進行數(shù)據(jù)查詢操作,但這個動詞的參數(shù)十分復(fù)雜,且能嵌套使用,所以,考試時往往就考這個功能。其通用格式如下:Select[All|Distinct]<目標(biāo)列表達式>[,<目標(biāo)列表達式>]…From<表名或視圖名>[,<表名或視圖名>]…[Where<條件
select-from-where
一.基本結(jié)構(gòu)
在SQL語言中,只提供了一個動詞Select用來進行數(shù)據(jù)查詢操作,但這個動詞的參數(shù)十分復(fù)雜,且能嵌套使用,所以,考試時往往就考這個功能。其通用格式如下:
Select[All|Distinct]<目標(biāo)列表達式>[,<目標(biāo)列表達式>]…
From<表名或視圖名>[,<表名或視圖名>]…
[Where<條件表達式>]
[Group by <列名1>[Having<條件表達式>]]
[Order by <列名2>[Asc|Desc]];
1.select子句
SQL查詢語句的結(jié)果也是一個關(guān)系,例如:
Select branch-name from loan
找出了關(guān)系loan中所有分支機構(gòu)的名稱。
關(guān)系代數(shù)中基于關(guān)系是一個集合這樣的數(shù)學(xué)概念,因此,重復(fù)的元組不會在關(guān)系中出現(xiàn)。但在實踐當(dāng)中,要刪除查詢結(jié)果中的重復(fù)元組是相當(dāng)費時的!所以在商用數(shù)據(jù)庫產(chǎn)品中,允許在關(guān)系和SQL表達式的結(jié)果中出現(xiàn)重復(fù)元組。對于select子句,還需要特別注意以下事情:
⑴ 是否要去除結(jié)果中的重復(fù)元組可以選用all和distinct選項,例如:
select [all | distinct] branch-name from loan
其中all表示保留所有重復(fù)元組,而distinct表示要去掉重復(fù)元組;
⑵可以用*代替關(guān)系中的所有屬性,如loan.*或*:
select * from loan
⑶select子句中還可以出現(xiàn)算術(shù)表達式,這與關(guān)系代數(shù)中的廣義投影運算對應(yīng):
select branch-name, loan-number, amount*100 from loan
2. where子句
從一個例子開始,例如:
select loan-number from loan
where branch-name = "Perryridge" and amount>1200
這個SQL語句的含義是什么呢?請大家自己思考。
需要注意的是where子句中的邏輯運算符使用and、or和not,而不是∧、∨和?。比較運算符有<、<=、>、>=、=和<>。
3. from子句
from子句本身定義了子句中關(guān)系的笛卡爾積。由于自然連接是用笛卡爾積、選擇和投影來定義的,因此為自然連接寫SQL表達式還是相對簡單的。例如:
關(guān)系代數(shù)表達式:Πcustomer-name, loan-number(borrowerloan)對應(yīng)的SQL表達式如下所示:
select customer-name, borrower.loan-number
from borrower, loan
where borrower.loan-number = loan.loan-number
4. order by子句
用order by子句對查詢的結(jié)果進行排序,具體的語法格式如下:order by 屬性名 [asc | desc][,屬性名 [asc | desc], ...]例如:
select * from loan
order by amount desc, loan-number
軟考備考資料免費領(lǐng)取
去領(lǐng)取