資料庫複習⑦ 2016年6月18日 20:03 Main DDL & DML & Views 數據定義語言、數據操縱語言、視圖 DDL數據定義語言 1.聲明一個關係表和刪除一個關係表 Simplest form is: CREATE TABLE <name> ( <list of elements> ...
資料庫複習⑦
2016年6月18日
20:03
Main DDL & DML & Views 數據定義語言、數據操縱語言、視圖
=============DDL數據定義語言=============
1.聲明一個關係表和刪除一個關係表
Simplest form is:
CREATE TABLE <name> (
<list of elements>
);
And you may remove a relation from the database schema by:
DROP TABLE <name>;
常用的數據類型:
INT
REAL or FLOAT
CHAR(n) = 定長字元串有n個字元
VARCHAR(n) = 變長字元串最多有n個字元
DATE: 'yyyy-mm-dd'
TIME:'hh:mm:ss'
一個關係表中最多有一個PRIMARY KEY主鍵但是UNIQUE屬性列可以有多個;
主鍵要求非空NULL,UNIQUE 可以有NULL值存在
2.向已有表中添加屬性列
ALTER TABLE<name> ADD
<attribute declaration>
舉例說明:
ALTER TABLE Bars ADD
phone CHAR(16)DEFAULT ‘unlisted’;
3.刪除某一屬性列
ALTER TABLE<name>
DROP <attribute>
舉例說明: ALTER TABLE Bars DROP license;
==========================================
=============DML數據操縱語言=============
4.插入一個或多個元組值 Insert
INSERT INTO <relation>
VALUES (<list of values>);
舉例說明:
5.刪除滿足某些條件的元組
DELETE FROM <relation>
WHERE <condition>;
刪除所有元組 Delete all Tuples
DELETE FROM <relation>
6.更新關係表
更新某些元組值語句:
UPDATE <relation>
SET <list of attribute assignments>
WHERE <condition on tuples>
更新多個元組值:
==========================================
=================Views 視圖================
7.創建視圖
CREATE VIEW <name> AS <query>;
舉例說明:
使用視圖進行相關查詢操作
8.使用視圖進行查詢操作
視圖其實就是關係表,不過視圖並不在物理空間上存儲。
使用上述視圖進行查詢操作:
9.更新視圖
(1)若視圖的欄位是來自欄位表達式或常數,則不允許對此視圖執行INSERT、UPDATE操作,允許執行DELETE操作;
(2)若視圖的欄位是來自庫函數,則此視圖不允許更新;
(3)若視圖的定義中有GROUP BY子句或聚集函數時,則此視圖不允許更新;
(4)若視圖的定義中有DISTINCT任選項,則此視圖不允許更新;
(5)若視圖的定義中有嵌套查詢,並且嵌套查詢的FROM子句中涉及的表也是導出該視圖的基表,則此視圖不允許更新;
(6)若視圖是由兩個以上的基表導出的,此視圖不允許更新;
(7)一個不允許更新的視圖上定義的視圖也不允許更新;
(8)由一個基表定義的視圖,只含有基表的主鍵或候補鍵,並且視圖中沒有用表達式或函數定義的屬性,才允許更新。
10.WITH CHECK OPTION的視圖
為視圖添加with check option,可以在通過視圖進行增刪改操作時,不破壞視圖定義中的謂詞條件(即子查詢中的條件表達式)
CREATE VIEW
F_Student1(stdnum,name,sex,age,dept) AS
SELECT * FROM Student
WHERE Ssex='女';
進行以下更新操作:
UPDATE F_Student1
SET Ssex = '男'
WHERE age = 18
結果會將18歲的女生性別改為男
SELECT *
FROM F_Student1
結果和之前的數據相比,那些18歲的女生都不見了。
因此需要加上Check約束。
11.建立與刪除索引
在一個基本表上最多只能建立一個聚簇索引。
聚簇索引的用途:對於基於聚簇索引列的 查詢(特別是範圍查詢),可以提高查詢 效率
聚簇索引的適用範圍:
聚簇索引列存在大量非重覆值
很少對基表進行增刪操作
很少對其中的變長列進行修改操作
CREATE [ UNIQUE ] [CLUSTER] INDEX <索引名>
ON < 表名 >(< 列名 > [ 次序 ][, 列名 ][< 次序 >] )
用<表名>指定要建索引的基本表名字;
索引可以建立在該表的一列或多列上,各列名之間用逗號分隔
用 <次序>指定索引值的排列次序,升序:ASC,降序:DESC。預設值:ASC
UNIQUE表明此索引的每一個索引值只對應唯一的數據記錄 CLUSTER表示要建立的索引是聚簇索引