資料庫系統概念(機械工業出版社,第六版)複習——第三章:SQL
第三章 SQL
SQL功能及操作符
資料查詢:select
資料定義:create alter drop
資料操縱:insert update delete
資料控制:grant revoke
SQL的資料定義語句(建立、刪除、修改)
表:create table drop table alter table
檢視:create view drop view
索引:create index drop index
基本資料型別
char(n):固定長度的字串
varchar(n):可變長字串(varchar2)
int:整數(-231~~231-1)
smallint:小整數型別(-215~~215-1)
numeric(p,d):定點數,小數點左邊p位,右邊q位
real:浮點數
double precision:雙精度浮點數
date:日期(年、月、日)
time:時間(小時、分、秒)
常用完整性約束
主碼約束: PRIMARY KEY
唯一性約束:UNIQUE
非空值約束:NOT NULL
參照完整性約束:FOREIGN KEY
撤銷基本表定義(drop)
撤消基本表後,基本表的定義、表中資料、索引都被刪除,由此表匯出的檢視將無法繼續使用。
SQL資料查詢基本結構
SELECT子句:指定要顯示的屬性列。
FROM子句:指定查詢物件(基本表或檢視)。
WHERE子句:指定查詢條件。
GROUP BY子句:對查詢結果按指定列的值分組,該屬性列值相等的元組為一個組。通常會在每組中作用聚集函式。
HAVING短語:篩選出只有滿足指定條件的組。
ORDER BY子句:對查詢結果按指定列值的升序或降序排序。
重複元組處理
預設為保留重複元組,也可用關鍵字all顯式指明。若要去掉重複元組,可用關鍵字distinct或unique指明。
常用查詢條件
查詢條件 |
謂詞 |
比較 |
>,<,=,<>,>=,<=,not+上述運算子 |
確定範圍 |
between … and …,not between …and … |
確定集合 |
in,not in |
判定空集合 |
exists,not exists |
字元匹配 |
like,not like |
空值 |
is null,is not null |
多條件 |
and,or |
聚集函式
平均值:avg
最小值:min
最大值:max
總和:sum
記數:count
聚集函式返回的是一個關係
count(屬性名)和count(*)的區別在於count(*)返回滿足條件的元組的總個數(即使一個元組的所有屬性取值均為null也會被計算在內),count(屬性名)返回該屬性中取值不為null的總個數。
空值null
除is [not]null之外,空值不滿足任何查詢條件。
如果null參與算術運算,則該算術表示式的值為null。
如果null參與比較運算,則結果可視為false。
如果null參與聚集運算,則除count(*)之外其它聚集函式都忽略null。
Where和having
相同:二者均是選擇運算。
不同:二者的作用物件不同,where的作用物件是元組,having的作用物件是分組。
With子句
With子句提供定義一個臨時檢視的方法,這個定義只對於with子句出現的那條查詢有效。