第7講 SQL語言關係代數實現

2021-07-11 15:19:48 字數 2182 閱讀 3490

(1)sql語言集合運算,並union,交intersect,差except

基本語法:     子查詢1

通常下,刪除重複元組不帶all,若要保留重複元素就要帶all

子查詢1的乙個元組出現m次,子查詢2的乙個元組出現n次在,在結果中:

1)子查詢1 union all 子查詢2 出現m+n次

2)子查詢1 intersect all 子查詢2 出現min(m,n)次

3)子查詢1 except 子查詢2 結果出現了max(0,m-n)次

例:查詢既學過002號課程同學又學過003號課程的同學的學號

select s# from sc where c#='002'

union

select s# from sc where c#='003';

上賣弄查詢等價於:

select s# from sc where c#='002' or c#='003';

例:求既學過002號課程,又學過003號課程的同學學號

select s# from sc where c#='002'

intersect

select s# from sc where c#='003';

上面等價於:

select s# from sc where c#='002'

where s# in (

select s# from sc where c#='003');

例:假設所有同學都有選課,求沒學過002號課程的同學的學號

select s# from sc

except

select s# from sc where c#='002';

(2)sql語言對空值的處理

空值檢測:  is [not] null

例:找出年齡值為空的同學的姓名

select sname from student 

where sage is null;

dbms對空值的處理:

1)除了 is [not] null 外,空值不滿足任何查詢條件

2) 如果null 參與了聚集函式的運算。除了count(*)之外,其他的聚集函式將會忽略 null.

(3)sql語言的連線操作

語法: select 列名[...]

from 表1 [natural]

[inner]|[outer] join

4種連線型別:

inner join  內連線

left outer jion 左外連線

right outer jion 右外連線

full outer join  外連線

3中連線條件:

natual 自然連線

on 連線條件

using

1) inner join :關係代數中的theta連線運算

2)表1 left outer join 表2 :則表1的任何元組t都會出現在結果中。如果表2有滿足連線條件的元組s,則t與s連線,否則t與空值連線

3)表1 rightouter join 表2 :則表2的任何元組t都會出現在結果中。如果表1有滿足連線條件的元組s,則t與s連線,否則t與空值連線

4)表1 full outer join 表2 :表示左外右外連線的並

natual連線條件:出現在結果關係的兩個連線關係的元組在公共的屬性上值相等,且公共屬性在結果中只出現一次。

on 連線:出現在結果關係的兩個連線關係的元組取值滿足連線條件,且公共屬性在結果中出現2次

using 連線:兩個表的元組在屬性上取值相等,這些公共屬性在結果中只出現一次。

例:找出所有教師的教師號以及授課情況,並按照教師號從小到大排序

select teacher.t#,cname

from teacher inner join course

on teacher.t#=course.t#

order by teacher.t# asc;

第7講 專案3 算工資

任務和 檔案名字 main.c 完成日期 2015年10月18日 版本號 v1.0 問題描述 某公司工資按周發放,標準是每小時 制20元,若員工周工作時間超過40小時,超出部 分每小時30元。程式設計序輸入一名員工一周的工作 小時數,輸出他的周工資。程式分析 1 定義1個常量,用來表示標準工作時間 ...

SQL語言基礎(7)

使用者自定義函式 不能用於執行一系列改變資料庫狀態的操作,但可以像系統函式一樣在查詢或儲存過程 等程式段中使用,也可以像儲存過程一樣通過execute命令執行。sql server2000中根據函式返回值的不同將使用者定義函式分為3種型別 1 標量型函式 不能返回text ntext image c...

第7講 分支結構程式體驗 練習

練習一 給兩個數,求兩數中的大者,使用雙分支來處理。給兩個數,求兩數中的大者,使用雙分支來處理。author 陳淦森 version 1.0.1 date 2016 01 07 int main else printf d c return 0 總結 使用if語句使程式具有判斷能力,if.else是...