创建、修改和删除模式
创建模式
模式基本上是数据库的逻辑表示。存在一个名为 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 相关的操作。第一个操作是创建模式,并通过三个示例进行了解释:第一个是授予模式权限;第二个是创建模式包含的表;第三个是为创建的模式提供特定成员的授权。第二个操作是更改模式,将内容从一个模式转移到另一个模式。第三个操作是删除模式,其中我们删除了模式及其表。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP