完整性,模式,建表,建索引
1. 關係的完整性有三種:實體完整性,參照完整性和使用者定義的完整性。
1. 實體完整性:若屬性A是基本關係R的主屬性,那麼A不能取空值(就是“不知道”或“不存在”的值)。理解的就是主鍵不能為空。
2. 參照完整性:設F是基本屬性R的一個或一組屬性,但不是關係R的碼,K是基本關係S的主碼。如果F和K相對應,那麼F是S的外碼,並稱基本關係R為參照關係,基本關係S為被參照關係。關係R和關係S不一定是不同的關係。那麼對於R中F屬性值必須和S對應的元組的主碼值相等。
3. 使用者定義完整性:針對某一個具體關係資料庫的約束條件,它反映某一具體應用涉及的資料必須滿足的語義要求。
2. 沒有一個數據庫系統能支援所有SQL標準的所有概念和特性。
3. 模式的定義和刪除。
基於書本,要建立模式,呼叫該命令必須擁有資料庫管理員的許可權或者獲得了建立模式的許可權。於是嘗試一下。
為什麼?首先schema就是資料庫物件的集合,這個集合包含了各種物件如:表、檢視、儲存過程、索引等。為了區分不同的集合,就需要給不同的集合起不同的名字。如果把database看作是一個倉庫,倉庫很多房間(schema),一個schema代表一個房間,table可以看作是每個房間中的儲物櫃,user是每個schema的主人,有操作資料庫中每個房間的權利,就是說每個資料庫對映的user有每個schema(房間)的鑰匙。
但是在Oracle資料庫中不能新建一個schema,要想建立一個schema,只能通過建立一個使用者的方法解決,在建立一個使用者的同時為這個使用者建立一個與使用者名稱同名的schem並作為該使用者的預設shcema。即schema的個數同user的個數相同,而且schema名字同user名字一一 對應並且相同。
4. 表的定義,刪除和修改。
定義表基本格式:
CREATE TABLE <表名> (
<列名><資料型別>[列級完整性約束條件],
<列名><資料型別>[列級完整性約束條件],
. .....
[表級完整性約束條件])
如果主碼由幾個屬性構成,那麼必須作為表級完整性定義。
可以看下面的例子
create table T_major_J122
(
mno char(2) primary key,
mname varchar(20),
loc varchar(20) check(loc in('主校區','南校區','新校區','鐵道校區','湘雅校區')),
mdean varchar(20)
);
create table T_stud_J122
(
sno char(10) primary key,
sname varchar(20),
--列級完整性
sex varchar(10) check(sex in('男','女','其它','其他')),
tel varchar(15),
email varchar(20) check(email like '%@%.%'),
birthday date check((TO_CHAR('yyyymmdd'))>='19990731'),
--表級完整性
mno char(10) references T_stud_J122(sno),
majorno char(2) references T_major_J122(mno)
);
修改基本表:
ALERT TABLE <表名>
[ADD <列名><資料型別>][ 完整性約束 ]; 增加列
[ADD <表級完整性約束> ]; 增加完整性約束
[DROP <列名> [CASCADE | RESTRICT] ]; 刪除列
[DROP CONSTRAINT<完整性約束名>[CASCADE | RESTRICT]]; 刪除完整性約束
[ALERT COLUMN <列名> <資料型別>]; 修改列
刪除基本表
DROP TABLE <表名>[CASCADE | RESTRICT];
CASCADE | RESTRICT:如果指定了CASCADE,則自動刪除引用了該列的其他的物件,比方說檢視,如果是RESTRICT,則如果被其他的物件引用,則拒絕刪除該列或者該表。
5. 資料型別
直接去W3school看一下就行http://www.w3school.com.cn/sql/sql_datatypes.asp
6. 建立索引
當表的資料量非常大的時候,查詢到操作會比較耗時,建立索引是加快查詢速度的有效手段,但是也會佔用一定的儲存空間。
常見的索引包括順序檔案上的索引,B+數索引,hash索引,點陣圖索引。
順序檔案上的索引是針對按指定屬性值升序或者降序儲存的關係,在該屬性上建立一個順序索引檔案,索引檔案有屬性值和相應的元組指標組成。
B+樹索引是將索引屬性組織成B+樹形式,B+樹的葉節點為屬性值和相應的元組指標。
雜湊索引是家裡若干桶,將索引屬性按照雜湊函式值對映到桶中,桶中儲存索引的屬性值和相應的元組指標。
點陣圖索引是用位向量記錄索引屬性中可能出現的值,每個位向量對應一個可能值。
建立索引:
CREATE [UNIQUE | CLUSTER] INDEX <索引名> ON <表名>(<列名> [<次序>] [,<列名> [<次序>]...);
修改索引:
ALTER INDEX <舊索引名> RENAME TO <新索引名>;
刪除索引:
DROP INDEX <索引名>;