数据库架构

sql数据库7年前 (2018)发布 admin
448 0

SQL Server数据库实现
SQL Server数据库把schema译作“架构”。架构是数据库中对象的容器。架构是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。默认架构DBO。访问默认架构中的对象时,不需要指定架构的名称。微软建议使用两段式对象名称:

架构名.对象名

创建架构的语句举例

 CREATE SCHEMA mySchema AUTHORIZATION user1
      CREATE TABLE myTable1(source int, cost int, partnumber int)
      GRANT SELECT TO user2
      Deny SELECT TO AnotherUser3;

上述语句创建一个架构mySchema,所有者为user1,包含表myTable1,授予user2以SELECT权限,拒绝给AnotherUser3以SELECT权限。

授予/撤销用户对架构的所有权:

GRANT INSERT ON SCHEMA ::mySchema1 To myUser2;
REVOKE INSERT ON SCHEMA ::mySchema1 To myUser2;

把对象从一个架构移动到另一个架构(必须同个数据库):

ALTER SCHEMA mySchema2 TRANSFER mySchema1.myTable1;

删除一个架构,该架构不能包含对象:

DROP SCHEMA mySchema3;

以下示例将创建一个名为 Chains 的架构,然后创建名为 Sizes 的表。

CREATE SCHEMA Chains;
GO
CREATE TABLE Chains.Sizes (ChainID int, width dec(10,2));

可在单个语句中执行的其他选项。 下面的示例将创建由 Annik 所有、包含表 NineProngs 的 Sprockets 架构。 该语句向 Mandar 授予 SELECT 权限,而对 Prasanna 拒绝授予 SELECT 权限。

CREATE SCHEMA Sprockets AUTHORIZATION Annik  
    CREATE TABLE NineProngs (source int, cost int, partnumber int)  
    GRANT SELECT ON SCHEMA::Sprockets TO Mandar  
    DENY SELECT ON SCHEMA::Sprockets TO Prasanna;  
GO  

执行以下语句,查看此数据库中的架构:

SELECT * FROM sys.schemas;

资料来源
https://zh.wikipedia.org/wiki/Schema_(%E6%95%B0%E6%8D%AE%E5%BA%93)
https://docs.microsoft.com/zh-cn/sql/relational-databases/security/authentication-access/create-a-database-schema?view=sql-server-2017

© 版权声明

相关文章