数据库管理系统 创建、修改和删除模式
创建模式
模式基本上是数据库的逻辑表示。有一个名为dbo的默认模式。当使用“create schema”语句时,对象将被创建在一个模式内。在创建模式后为其他用户提供访问权限时,需要模拟权限。
语法:创建模式的语法是−
创建模式模式名称
在这里,我们创建了一个名为模式名称的模式。
示例1:授予权限
在这个示例中,我们将创建一个模式并授予访问权限。
步骤
- 第一步 - 创建模式。
-
第二步 - 创建表。
-
第三步 - 分配是否授予或拒绝权限。
-
第四步 - 以授予的用户身份执行
-
第五步 - 使用 select 命令获取输出
输入
Employee
Emp_id | Name | Dept_name | Salary |
---|---|---|---|
1 | Monu | IT | 50000 |
2 | Sonu | HR | 60000 |
3 | Golu | Security | 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.
输出
Emp_id | Name | Dept_name | Salary |
---|---|---|---|
1 | Monu | IT | 50000 |
2 | Sonu | HR | 60000 |
3 | Golu | Security | 70000 |
示例2:在模式中创建模式和表。
在这个例子中,我们要创建一个模式,然后在这个模式中创建一个表。
步骤
- 步骤1 - 创建一个模式
-
步骤2 - 在模式中使用schema_name.table_name创建表。
-
步骤3 - 使用SELECT语句提取模式内的表
输入
Employee
Employee_id | Employee_name | department_name | salary |
---|---|---|---|
1 | Rahul | developer | 40000 |
2 | Monu | hr | 50000 |
3 | Aman | consulting | 60000 |
4 | Naman | manager | 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
输出
Employee
Employee_id | Employee_name | department_name | salary |
---|---|---|---|
1 | Rahul | developer | 40000 |
2 | Monu | hr | 50000 |
3 | Aman | consulting | 60000 |
4 | Naman | manager | 70000 |
示例3:模式所有者
在这个示例中,我们将创建一个模式,然后设置它的所有者。
步骤
- 步骤1 - 创建模式
-
步骤2 - 通过设置所有者提供授权
-
步骤3 - 以所有者的身份执行模式
-
步骤4 - 使用select获取输出
输入
Employee
Emp_id | Name | Dept_name | Salary |
---|---|---|---|
1 | Monu | IT | 50000 |
2 | Sonu | HR | 60000 |
3 | Golu | Security | 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
输出
Emp_id | Name | Dept_name | Salary |
---|---|---|---|
1 | Monu | IT | 50000 |
2 | Sonu | HR | 60000 |
3 | Golu | Security | 70000 |
修改模式
在这里,我们将改变模式,从一个模式转移到同一数据库中的另一个模式。
语法
alter schema schema_name
Transfer[entity_type::] securable_name
- schema_name是要移动内容的目标架构。
-
securable_name是已存在的架构名称。
示例
在此示例中,我们将通过将表地址从一个架构传输到另一个架构来转移表的所有权。
步骤
- 步骤1 - 创建一个使用默认架构的表。
-
步骤2 - 创建要传输的架构。
-
步骤3 - 使用transfer命令将表内容传输到新的架构。
输入
Employee
Emp_id | Name | Dept_name | Salary |
---|---|---|---|
1 | Monu | IT | 50000 |
2 | Sonu | HR | 60000 |
3 | Golu | Security | 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
Emp_id | Name | Dept_name | Salary |
---|---|---|---|
1 | Monu | IT | 50000 |
2 | Sonu | HR | 60000 |
3 | Golu | Security | 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语句进行交叉检查
输入
Emp_id | Name | Dept_name | Salary |
---|---|---|---|
1 | Monu | IT | 50000 |
2 | Sonu | HR | 60000 |
3 | Golu | Security | 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相关的有三个操作。第一个操作是创建模式,通过三个示例进行解释,第一个是授予模式的权限,第二个是创建包含在模式中的表,第三个是为创建的模式提供特定成员的授权。第二个操作是修改模式,其中从一个模式中移动内容到另一个模式中。第三个操作是删除模式,其中我们删除了模式及其表。