蒙恩招生网 蒙恩招生网4
2023-10-30
更新时间:2023-11-17 08:02:09作者:51data
本文将介绍数据库模式在SQL Server中的应用及其优势。
在模式中创建一个新表要创建一个像表这样的对象,我们需要指定将在其中创建对象的模式名。例如,以下脚本以不同的模式[HR]、[Admin]和[Fin]创建[TableA]。
创建TABLEHR。TableA(ID int identity(1,1)主键,[Name] varchar(100))创建表[Admin]。TableA(ID int identity(1,1)主键,[Name] varchar(100))创建表[Fin]。TableA(ID int identity(1,1)主键,[Name] varchar(100))
您可以使用sys.tables和sys.schema系统表来列出表名及其架构。例如,以下代码查询返回[TableA]及其货架模式。
SELECTs.name AS SchemaName,t . name AS tablename from sys . tables tINNER JOIN sys . schemas on t . schema _ id=s . schema _ id where t . name=' TableA '
例子
如果在创建对象时不指定架构,SQL Server将使用默认架构。例如,以下脚本在dbo模式下创建TableA。
创建表TableA(ID int identity(1,1)主键,[Name] varchar(100))
例子
注意:可以在数据库的不同模式中创建名称相似的表。因此,您需要指定表的模式,以便从正确的模式中获取数据。例如,如上所示,我们在所有架构中都有[TableA]。因此,如果您直接选择一条记录而不指定模式,它将在默认的DBO模式中查找该对象。因此,您需要为数据检索或任何操作指定一个模式名,比如SELECT * FROM HR.TableA。
在模式中创建存储过程同样,您可以在指定的模式中创建对象,如存储过程。例如,以下脚本在HR模式下创建一个服务点。
从[HR]创建过程HR.GetEmpDataASBEGINSELECT *。[表a]结束
将对象移动到不同的模式在某些时候,可能需要将对象移动到特定的模式。例如,假设创建了一个新的模式[Org],并且您想要您的[HR]。[TableA]从[HR]架构移到[Org]架构。在这种情况下,可以使用具有以下语法的Alter SCHEMA命令。
ALTER SCHEMA target _ SCHEMA _ name transfer[entity _ type:]secureable _ name;
脚本
创建方案[组织]目标方案组织转移HR.TableA
现在,转移存储过程[HR]。[GetEmpData]到[Org]模式。
更改方案组织转移HR.GetEmpData
执行脚本后,它将以[Org]模式显示存储过程。但是,在SP中,代码仍然指的是[HR]。[TableA]模式。
例子
因此,不应使用ALTER SCHEMA来移动存储过程、函数或视图,因为它可能会引用对象。相反,您可以删除、创建或更改SP,如下所示。
例子
删除架构您可以删除SQL Server数据库中的架构,但该架构不应包含任何对象。例如,如果您尝试删除[Org]模式,它将给出一个错误,说明该模式无法删除,因为GetEmpData对象正在引用它。
例子
因此,您可以将对象转移到不同的模式,或者先删除对象。一旦我们删除或移动了数据库模式中的所有对象,您就可以删除该模式。注意:不能删除系统模式,如dbo、information_schema和sys。
使用数据库模式的优点数据库模式为我们提供了在数据库中创建逻辑对象组的灵活性。如果多个团队使用同一个数据库,我们可以设计不同的模式来分组对象。数据库可以帮助数据库专业人员管理访问,因为可以控制对用户各自模式的访问,而不是提供对整个数据库的访问。您可以更有效地管理数据库,因为它允许多个模式中的相同对象显示为不同的逻辑组。您可以在不同的模式下快速移动对象。模式的所有权可以分配给任何数据库主体或角色,并且所有权也可以转移。它提供了额外的安全层,因为您需要知道正确的对象模式来查询或操作数据。您还可以控制对模式和模式所拥有的对象的访问。