- 王珊《數據庫系統概論》(第4版)【教材精講+考研真題解析】講義與視頻課程【28小時高清視頻】
- 圣才電子書
- 1711字
- 2021-06-04 18:05:02
3.3 數據定義

視頻二維碼(掃碼觀看)
SQL的數據定義功能:模式定義、表定義、視圖和索引的定義。

3.3.1 模式的定義與刪除
一、定義模式
【例1】定義一個學生-課程模式S-T
CREATE SCHEMA“S-T”AUTHORIZATION WANG;
為用戶WANG定義了一個模式S-T
【例2】CREATE SCHEMA AUTHORIZATION WANG;
<模式名>隱含為用戶名WANG
·如果沒有指定<模式名>,那么<模式名>隱含為<用戶名>。
◆定義模式實際上定義了一個命名空間。
◆在這個空間中可以定義該模式包含的數據庫對象,例如基本表、視圖、索引等。
◆在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。
CREATE SCHEMA<模式名>AUTHORIZATION<用戶名>[<表定義子句>|<視圖定義子句>|<授權定義子句>];
【例3】

為用戶ZHANG創建了一個模式TEST,并在其中定義了一個表TAB1。
二、刪除模式
◆DROP SCHEMA <模式名>
<CASCADE|RESTRICT>
CASCADE(級聯)
刪除模式的同時把該模式中所有的數據庫對象全部刪除。
RESTRICT(限制)
如果該模式中定義了下屬的數據庫對象(如表、視圖等),則拒絕該刪除語句的執行。
當該模式中沒有任何下屬的對象時才能執行。
【例4】DROP SCHEMA ZHANG CASCADE;
刪除模式ZHANG,同時該模式中定義的表TAB1也被刪除。
3.3.2 基本表的定義、刪除與修改
一、定義基本表

如果完整性約束條件涉及到該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。
1學生表Student
【例5】建立“學生”表Student,學號是主碼,姓名取值惟一

2課程表Course
【例6】建立一個“課程”表Course

3學生選課表SC
【例7】建立一個“學生選課”表SC

二、數據類型
◆SQL中域的概念用數據類型來實現
◆定義表的屬性時需要指明其數據類型及長度
◆選用哪種數據類型
·取值范圍
·要做哪些運算
表3-2 數據類型及含義

三、模式與表
◆每一個基本表都屬于某一個模式
◆一個模式包含多個基本表
◆定義基本表所屬模式
·方法一:在表名中明顯地給出模式名

·方法二:在創建模式語句中同時創建表
·方法三:設置所屬的模式
◆創建基本表(其他數據庫對象也一樣)時,若沒有指定模式,系統根據搜索路徑來確定該對象所屬的模式。
◆RDBMS會使用模式列表中第一個存在的模式作為數據庫對象的模式名。
◆若搜索路徑中的模式名都不存在,系統將給出錯誤。
◆顯示當前的搜索路徑:
SHOW search_path;
◆搜索路徑的當前默認值是:
$user,PUBLIC;
◆DBA用戶可以設置搜索路徑,然后定義基本表
SET search_path TO “S-T” PUBLIC;
Create table Student(……);
結果建立了S-T.Student基本表。
RDBMS發現搜索路徑中第一個模式名S-T存在,就把該模式作為基本表Student所屬的模式。
四、修改基本表

【例8】向Student表增加“入學時間”列,其數據類型為日期型。
ALTER TABLE Student ADD S_entrance DATE;
◆不論基本表中原來是否已有數據,新增加的列一律為空值。
【例9】將年齡的數據類型由字符型(假設原來的數據類型是字符型)改為整數。
ALTER TABLE Student ALTER COLUMN Sage INT;
【例10】增加課程名稱必須取惟一值的約束條件。
ALTER TABLE Course ADD UNIQUE(Cname);
五、刪除基本表
DROP TABLE <表名>[RESTRICT| CASCADE];
◆RESTRICT:刪除表是有限制的。
欲刪除的基本表不能被其他表的約束所引用
如果存在依賴該表的對象,則此表不能被刪除
◆CASCADE:刪除該表沒有限制。
在刪除基本表的同時,相關的依賴對象一起刪除
【例11】刪除Student表
DROP TABLE Student CASCADE;
◆基本表定義被刪除,數據被刪除
◆表上建立的索引、視圖、觸發器等一般也將被刪除
【例12】若表上建有視圖,選擇RESTRICT時表不能刪除

【例13】如果選擇CASCADE時可以刪除表,視圖也自動被刪除

表3-3 DROP TABLE時,SQL99與3個RDBMS的處理策略比較

3.3.3 索引的建立與刪除
◆建立索引的目的:加快查詢速度。
◆誰可以建立索引:
DBA或表的屬主(即建立表的人);
DBMS一般會自動建立以下列上的索引:
PRIMARY KEY;
UNIQUE;
◆誰維護索引:DBMS自動完成。
◆使用索引:DBMS自動選擇是否使用索引以及使用哪些索引。
一、索引
◆RDBMS中索引一般采用B+樹、HASH索引來實現。
B+樹索引具有動態平衡的優點。
HASH索引具有查找速度快的特點。
◆采用B+樹還是HASH索引則由具體的RDBMS來決定。
◆索引是關系數據庫的內部實現技術,屬于內模式的范疇。
◆CREATE INDEX語句定義索引時,可以定義索引是惟一索引、非惟一索引或聚簇索引。
二、建立索引
◆語句格式
CREATE [UNIQUE] [CLUSTER] INDEX<索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>]]…);
【例14】
CREATE CLUSTER INDEX Stusname ON Student(Sname);
在Student表的Sname(姓名)列上建立一個聚簇索引
◆在最經常查詢的列上建立聚簇索引以提高查詢效率
◆一個基本表上最多只能建立一個聚簇索引
◆經常更新的列不宜建立聚簇索引
【例15】為學生-課程數據庫中的Student,Course,SC三個表建立索引。

Student表按學號升序建惟一索引;
Course表按課程號升序建惟一索引;
SC表按學號升序和課程號降序建惟一索引。
三、刪除索引
DROP INDEX <索引名>;
刪除索引時,系統會從數據字典中刪去有關該索引的描述。
【例16】刪除Student表的Stusname索引
DROP INDEX Stusname;
- 2015年國際貨運代理《國際海上貨運代理理論與實務》章節練習題詳解
- 張雷聲《馬克思主義基本原理概論》配套題庫【名校考研真題+課后習題+章節題庫+模擬試題】
- 吳大正《信號與線性系統分析》(第4版)筆記和課后習題(含考研真題)詳解
- 蘇號朋《民法學》筆記和考研真題詳解
- 2020年社會工作碩士(MSW)考試專用教材
- 武漢大學《分析化學》(第5版)(下冊)筆記和課后習題(含考研真題)詳解
- 2015年經濟師《農業經濟專業知識與實務(中級)》過關必做1000題(含歷年真題)
- 華東師范大學外語學院812翻譯歷年考研真題及詳解
- 2016考研政治分析題必備黃金模板23例
- 2015年法律碩士聯考大串講
- 2020年環境科學考點歸納與典型題(含考研真題)詳解
- 閩南師范大學馬克思主義學院914馬克思主義政治經濟學原理歷年考研真題及詳解
- 晁福林《中國古代史(上冊)》筆記和典型題(含考研真題)詳解
- 武漢大學信息管理學院441出版專業基礎[專業碩士]歷年考研真題及詳解
- 張培基《英漢翻譯教程》筆記和課后習題(含考研真題)詳解