建立表空間、檢視索引、序列、約束
表空間 建立表空間:如果要進行非系統表空間的建立,可以使用如下語法完成。 CREATE [TEMPORARY] TABLESPACE 表空間名稱 [DATAFILE | TEMPFILE 表空間檔案儲存路徑 …] [SIZE 數字[K | M]] [AUTOEXTEND ON | OFF] [NEXT 數字 [K|M]] [LOGGING | NOLOGGING] ;
本程式各個建立子句的相關說明如下所示: DATAFILE:儲存表空間的磁碟路徑,可以設定多個儲存路徑; TEMPFILE:儲存臨時表空間的磁碟路徑; SIZE:開闢的空間大小,其單位有K(位元組)和M(兆); AUTOEXTEND:是否為自動擴充套件表空間,如果為ON表示可以自動擴充套件表空間大小,反之為OFF;NEXT:可以定義表空間的增長量; LOGGING | NOLOGGING:是否需要對DML進行日誌記錄,記錄下的日誌可以用於資料恢復。
例: CREATE TABLESPACE vdata_data DATAFILE ‘d:\vdata\mldn_data01.dbf’ SIZE 50M , ‘e:\vdata\vdata_data02.dbf’ SIZE 50M AUTOEXTEND on NEXT 2M LOGGING ;
使用表空間:在建立表的時候在最後加入TABLESPACE 表空間名稱 語句
檢視 建立檢視: CREATE [FORCE|NOFORCE] [OR REPLACE] VIEW 檢視名稱 [(別名1,別名2,…)]AS 子查詢 子查詢中使用聚合函式需要加入列別名。 可以使用 select * from tab 檢視當前使用者下所有的表和檢視 select * from user_views; 檢視所有的檢視 查詢的內容檢視可以增刪改,但僅限簡單檢視(僅包含一個表),且對原表有影響。可以通過新增約束的方法限制對檢視的更改,如在建立的時候加入with check opinion在就修改前檢查子查詢條件是否更改;加入with read only讓檢視只讀。
索引 建立索引:CREATE INDEX [使用者名稱.][索引名稱] ON [使用者名稱.]表名稱(列名稱[ASC|DESC]) 索引分b樹索引(oracle預設)、點陣圖索引、函式索引、降序索引 點陣圖索引建立語法: CREATE BITMAP INDEX [使用者名稱.]表名稱 (列名稱[ASC|DESC],…); 刪除索引: DROP INDEX emp_sal_ind ;
序列 可以自動增長的列,建立語法: CREATE SEQUENCE 序列名稱 [INCREMNET BY 步長] [START WITH 開始值] [MAXVALUE 最大值 | NOMAXVALUE] [MINVALUE 最小值 | NOMINVALUE] [CYCLE|NOCYCLE] [CACHE 快取大小|NOCACHE] 例:CREATE SEQUENCE myseqSTART WITH 1INCREMENT BY 2 MAXVALUE 9 MINVALUE 1 CYCLECACHE 3 ; 修改序列: 將create改為alter,但不能改start with SELECT myseq.nextval FROM dual ;呼叫序列,序列進行增長 SELECT myseq.currval FROM dual ;檢視序列當前值 INSERT INTO member (mid,name) VALUES (myseq.nextval,‘vdata’) ; 向表中新增序號
約束 在開發之中可以使用以下的五種約束進行定義: 非空約束:如果使用了非空約束的話,則以後此欄位的內容不允許設定成null;(not null) 唯一約束:即:此列的內容不允許出現重複;(unique) 主鍵約束:表示一個唯一的標識,例如:人員ID不能重複,且不能為空;(PRIMARY KEY) 檢查約束:使用者自行編寫設定內容的檢查條件;(CHECK) 主-外來鍵約束(參照完整性約束):是在兩張表上進行的關聯約束,加入關聯約束之後就產生父子的關係。( FOREIGN KEY(列名) REFERENCES 外表(列名)) 例: CREATE TABLE member (mid NUMBER ,name VARCHAR2(200) NOT NULL , email VARCHAR2(50) ,age NUMBER CHECK (age BETWEEN 0 AND 200) , sex VARCHAR2(10) , CONSTRAINT pk_mid_name PRIMARY KEY (mid,name) , CONSTRAINT uk_email UNIQUE (email) , CONSTRAINT ck_sex CHECK (sex IN (‘男’,‘女’))) ;
例2: CONSTRAINT fk_mid FOREIGN KEY(mid) REFERENCES member(mid)) ; 設定外來鍵約束 刪除父表資料時,需要先刪掉子表中的資料,可以使用級聯操作,在建立約束的最後部分新增 【級聯操作一】級聯刪除(ON DELETE CASCADE) 【級聯操作二】級聯設定NULL(ON DELETE SET NULL)
刪除約束: ALTER TABLE 表名稱 DROP CONSTRAINT 約束名稱 [CASCADE]; 增加約束: ALTER TABLE 表名稱 ADD CONSTRAINT 約束名稱 PRIMARY KEY(約束欄位); 或者: alter table grade modify(constraint fk_itmid FOREIGN KEY(itemid) REFERENCES item(itemid) on delete CASCADE);