建立、修改和刪除模式
建立模式
模式基本上是資料庫的邏輯表示。存在一個名為 dbo 的預設模式。使用“create schema”語句時,物件會在模式內建立。為了在建立模式後向其他使用者提供訪問許可權,我們需要模擬許可權。
語法:建立模式的語法如下:
Create schema schema_name
在這裡,我們建立了一個名為 schema_name 的模式。
示例 1:授予許可權
在這個例子中,我們將建立一個模式並授予訪問許可權。
演算法
步驟 1 - 建立模式。
步驟 2 - 建立表。
步驟 3 - 分配是否授予或拒絕許可權。
步驟 4 - 以已授予使用者的身份執行
步驟 5 - 使用 select 獲取輸出
輸入
員工
員工ID |
姓名 |
部門名稱 |
薪水 |
---|---|---|---|
1 |
Monu |
IT |
50000 |
2 |
Sonu |
人力資源 |
60000 |
3 |
Golu |
保安 |
70000 |
程式碼
Create Schema account#schema is created authorization amrendra#authorization is given grant select on schema ::account to x#granting access to x Execute as user=’x’; #x is using the schema now Select * from employee; #data selected deny select on schema::account to y;denying access to y.
輸出
員工ID |
姓名 |
部門名稱 |
薪水 |
---|---|---|---|
1 |
Monu |
IT |
50000 |
2 |
Sonu |
人力資源 |
60000 |
3 |
Golu |
保安 |
70000 |
示例 2:在模式中建立模式和表。
在這個例子中,我們將建立一個模式,然後在該模式中建立一個表。
演算法
步驟 1 - 建立模式
步驟 2 - 使用 schema_name.table_name 在模式內建立表。
步驟 3 - 使用 select 語句提取模式內的表
輸入
員工
員工ID |
員工姓名 |
部門名稱 |
薪水 |
---|---|---|---|
1 |
Rahul |
開發者 |
40000 |
2 |
Monu |
人力資源 |
50000 |
3 |
Aman |
諮詢 |
60000 |
4 |
Naman |
經理 |
70000 |
程式碼
Create Schema account;#schema is created Create table account.employee(employee_id int,employee_name char(50),department_name char(50),salary int);#table is created Select * from account.employee;#extracting the table data
輸出
員工
員工ID |
員工姓名 |
部門名稱 |
薪水 |
---|---|---|---|
1 |
Rahul |
開發者 |
40000 |
2 |
Monu |
人力資源 |
50000 |
3 |
Aman |
諮詢 |
60000 |
4 |
Naman |
經理 |
70000 |
示例 3:模式的所有者
在這個例子中,我們將建立一個模式並設定其所有者。
演算法
步驟 1 - 建立模式
步驟 2 - 透過設定所有者來提供授權
步驟 3 - 以所有者的身份執行模式
步驟 4 - 使用 select 獲取輸出
輸入
員工
員工ID |
姓名 |
部門名稱 |
薪水 |
---|---|---|---|
1 |
Monu |
IT |
50000 |
2 |
Sonu |
人力資源 |
60000 |
3 |
Golu |
保安 |
70000 |
程式碼
Create schema account #schema named account is created authorization [amrendra] #The schema is owned by amrendra. Execute as user = ‘amrendra’ #amrendra is using the schema now Select * from account;#data selected
輸出
員工ID |
姓名 |
部門名稱 |
薪水 |
---|---|---|---|
1 |
Monu |
IT |
50000 |
2 |
Sonu |
人力資源 |
60000 |
3 |
Golu |
保安 |
70000 |
修改模式
在這裡,我們將更改模式,這會導致將內容從一個模式轉移到同一資料庫中的另一個模式。
語法
alter schema schema_name Transfer[entity_type::] securable_name
schema_name 是應將內容移動到的目標模式。
securable_name 是預先存在的模式名稱。
示例
在這個例子中,我們將透過將表地址從一個模式轉移到另一個模式來轉移表的擁有權。
演算法
步驟 1 - 建立一個使用預設模式的表。
步驟 2 - 建立要轉移到的模式。
步驟 3 - 使用將表內容轉移到新模式。
輸入
員工
員工ID |
姓名 |
部門名稱 |
薪水 |
---|---|---|---|
1 |
Monu |
IT |
50000 |
2 |
Sonu |
人力資源 |
60000 |
3 |
Golu |
保安 |
70000 |
程式碼
Create table dbo.employee(employee_id int,employee_name char(50),department_name char(50),salary int); #table is created in default schema Create schema patel;#new schema created ALTER SCHEMA patel TRANSFER object::dbo.employee; # table objects are transferred in the new schema.
輸出
Patel
員工ID |
姓名 |
部門名稱 |
薪水 |
---|---|---|---|
1 |
Monu |
IT |
50000 |
2 |
Sonu |
人力資源 |
60000 |
3 |
Golu |
保安 |
70000 |
刪除模式
在這裡,我們將瞭解如何刪除模式。當我們需要完全刪除模式時,使用 drop schema。
語法
Drop schema [if exists] schema_name schema_name is the name of the schema which will be dropped. Note that this query will successfully execute only if the schema already exists.
示例
在這個例子中,我們將看到如何刪除現有的模式及其包含的表。
演算法
步驟 1 - 建立一個模式並指定其所有者
步驟 2 - 在模式中建立表
步驟 3 - 刪除模式中的表
步驟 4 - 刪除模式。
步驟 5 - 使用 select 語句進行交叉檢查
輸入
員工ID |
姓名 |
部門名稱 |
薪水 |
---|---|---|---|
1 |
Monu |
IT |
50000 |
2 |
Sonu |
人力資源 |
60000 |
3 |
Golu |
保安 |
70000 |
程式碼
Create Schema account authorization amrendra#schema created with its owner. create table employee(employee_id int,employee_name char(50),department_name char(50),salary int); #table is created in schema drop table account.employee; #table is droppeddrop schema account; #schema is dropped Select * from account;#data selected
輸出
No data found
結論
這裡執行了三個與 SQL 相關的操作。第一個操作是建立模式,並透過三個示例進行了解釋:第一個是授予模式許可權;第二個是建立模式包含的表;第三個是為建立的模式提供特定成員的授權。第二個操作是更改模式,將內容從一個模式轉移到另一個模式。第三個操作是刪除模式,其中我們刪除了模式及其表。