建立、修改和刪除模式


建立模式

模式基本上是資料庫的邏輯表示。存在一個名為 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 相關的操作。第一個操作是建立模式,並透過三個示例進行了解釋:第一個是授予模式許可權;第二個是建立模式包含的表;第三個是為建立的模式提供特定成員的授權。第二個操作是更改模式,將內容從一個模式轉移到另一個模式。第三個操作是刪除模式,其中我們刪除了模式及其表。

更新於:2023年8月22日

136 次檢視

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告