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
© 版权声明
文章版权归作者所有,未经允许请勿转载。