创建、修改和删除模式


创建模式

模式基本上是数据库的逻辑表示。存在一个名为 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 次查看

启动您的 职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.