(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是...