至少在我的本地实例上,当我创建表时,它们都带有“dbo.”前缀。为什么呢?
dbo是SQL Server的默认模式。您可以创建自己的模式,以便更好地管理对象名称空间。
如果您正在使用Sql Server Management Studio,您可以通过浏览“数据库-您的数据库-安全性-模式”创建自己的模式。
使用脚本创建一个简单的方法如下(例如):
CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]
您可以使用它们对表进行逻辑分组,例如为“财务”信息创建一个模式,为“个人”数据创建另一个模式。你的表格将显示为:
而不是使用dbo的默认模式。
它是SQL 2005的新特性,提供了一种简化的对象分组方法,特别是为了保护“组”中的对象。
下面的链接更深入地解释了它是什么,为什么我们要使用它:
理解SQL Server中owner和schema的区别
微软在2005年版引入了模式。对于那些不了解模式的人,以及那些不在乎的人,对象被放入默认模式dbo中。
dbo
dbo代表数据库所有者,但这并不重要。
把模式想象成文件的文件夹:
通常可以从任何模式访问任何对象。但是,可以控制哪些用户拥有对特定模式的访问权限,因此可以在安全模型中使用模式。
因为dbo是默认值,所以通常不需要在单个数据库中指定它:
SELECT * FROM customers; SELECT * FROM dbo.customers;
意思相同。
我倾向于不同意总是使用dbo.前缀的概念,因为你的代码中不必要的细节越多,它就越难阅读和管理。
dbo.
在大多数情况下,您可以忽略模式。然而,在以下情况下,模式会很明显:
database.schema.table
SELECT * FROM bookshop.dbo.customers;
CREATE FUNCTION tax(@amount DECIMAL(6,2) RETURNS DECIMAL(6,2) AS BEGIN RETURN @amount * 0.1; END; GO SELECT total, dbo.tax(total) FROM pricelist;
这不适用于其他对象,如表函数、过程和视图。
您可以使用模式来克服命名冲突。例如,如果每个用户都有一个个人模式,他们可以创建额外的对象,而不必与其他用户争夺名称。
微软中的内容(文档)
sysadmin
sa
db_owner
DBO是SQL Server的默认模式。您可以创建自己的模式,以便更好地管理对象名称空间。作为最佳实践,我总是加上“DBO”。即使没有必要也要加上前缀。在SQL中,大多数情况下显式是很好的。