最近面試時,被問到關於數據庫查詢問題。因爲長時間沒接觸被問了個措手不及,所以又重新回顧了一下。
1.創建模式
CREATE SCHEMA <模式名> AUTHORIZATION <用戶名>;
CREATE SCHEMA “S_Order" AUTHORIZATION WAN; //爲用戶WAN定義一個用戶訂單的模式 S_Order
CREATE SCHEMA AUTHORIZATION WAN; // 未指定模式名,模式名默認爲用戶名
* 定義模式實際上是定義一個命名空間,在這個空間中可以進一步定義該模式包含的數據庫對象,例如:基本表,視圖,索引 等.....
CREATE SCHEMA <模式名> AUTHORIZATION <用戶名> [ <表定義>|<視圖定義>|<授權定義>];
CREATE SCHEMA S_TEST AUTHORIZATION WAN //爲用戶WAN創建一個模式S_TEST,並定義一個表T_TABLE
CREATE TABLE T_TABLE (
COL INT,
COL2 CHAR(20)
);
2.刪除模式
DROP SCHEMA <模式名> < CASCADE | RESTRICT >
CASCADE :級聯刪除。即:刪除模式的同時把模式中所有的數據庫對象(模式中定義的下屬數據庫對象)全部刪除
RESTRICT:限制刪除。即:刪除模式時,如果模式中已定義下屬數據庫對象,則拒絕刪除。
3.模式與表------ 每一個基本表都屬於某一個模式,一個模式包含多個基本表
定義基本表時一般有三種方法定義它所屬模式:
第一種: CREATE TABLE ”S_Order".TABLE_NAME();
第二種:創建模式語句時同時創建表
第三種:設置所屬模式。
* 當用戶創建基本表時若沒有指定模式,系統根據搜索路徑(search path ) 來確定該對象所屬模式。搜索路徑一般包含一組模式列表,關係型數據庫管理系統會使用模式列表中第一個存在的模式作爲數據庫對象的模式名稱。若搜索路經中的模式名都不存在,系統將給出錯誤。
SHOW search_path; //顯示搜索路徑
SET search_path TO "S_ORDER" ,PUBLIC; //設置搜索路徑