dbo是database owner的缩写,是数据库对象所有者。相当于用户名,以所有者身份使用。
dbo是Database Owner(数据库的所有者)的缩写。
它是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。
另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。创建的表前面有dbo。具体对表 *** 作的时候可以忽略它,不用管它,直接对表 *** 作即可。
扩展资料:
结构化查询语言包含6个部分:
1、数据查询语言(DQL:Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。
保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用。
2、数据 *** 作语言(DML:Data Manipulation Language):其语句包括动词INSERT、UPDATE和DELETE。它们分别用于添加、修改和删除。
3、事务控制语言(TCL):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
4、数据控制语言(DCL):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
5、数据定义语言(DDL):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。
6、指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的 *** 作。
参考资料来源:百度百科-sql
理解SQL SERVER中所有者和架构的区别SQL SERVER2005介绍了架构,架构相对于以前版本中的对象所有者。本文将解释这两者的区别,并希望能解开你至今仍对架构一点困惑。
对象所有者
要理解所有者和架构之间的区别,让我们先花点时间来复习一下对象的所有权。在SQL SERVER2000或以前版本中创建一个对象,对象必须要有一个所有者(owner)。大部分情况,所有者为“dbo(数据库所有者)”。一个对象可以被数据库中任何一个用户所拥有。判断一个对象的所有者的方法是在企业管理器或Manager Stdio中浏览表的列表时查看对象的全限定名称(full qualified)。比如,一个由dbo所拥有的表orders其全限定名为dbo.orders。如果该表的所有权转移至用户abc,那么该表现在的全限定名为abc.orders。
对象是如何属于某个所有者的呢?这依赖于创建对象时的用户。 也有可能是db_owner角色成员创建了一个由数据库中任何对象所拥有的对象。缺省情况下,创建对象的用户账号(该账户必须拥有CREATE TABLE的权限)也是对对象的所有者。只有db_owner角色成员可以创建由dbo所拥有的对象。即使那样,在某些情况下,对象的所有者还可能是实际的用户而不是dbo。
使用dbo作为数据库中所有对象的所有者可以简化对象的管理。因为数据库中永远都会有dbo用户的。数据库中的用户只要有权限可以不用指定所有者名称就可以存取由dbo拥有的对象了。如果一个对象不是被dbo所有用,那么该所有者将要被删除时,必须将对象的所有权转移给其他用户。比如有一个非dbo用户ted创建了sales表,该表名称为ted.sales。如果ted以外的用户想使用此表,那么必须使用表的全限定名来指定。如果ted离开了公司或部门,那么他的数据库用户账号必须得删除。在删除前,ted所拥有的对象必须使用存储过程sp_changeobjectowner将所有权转移至其他用户账号。
如果这个表在应用程序或者其他存储过程中使用过,改变表的所有者可能导致所有的代码出错。如果一开始该表就被dbo所拥有,那么即使删除了ted账号也没有关系。代码也不需要使用全限定名——这样可能损失点性能——来指定对象,这被认为是最实用的方法。
架构
我喜欢将架构想象成一个组织对象的容器。如果你看一下adventureworks样例数据库,你会发现表是按照部门或者功能组织起来的,比如“HumanResources”或者“Production”(图一)。这看起来有点像老的拥有者概念,但却拥有许多益处。首先,因为对象不再绑定到用户账号上,所以你根本不用担心当一个账号被删除时需要变换对象的拥有者。另一个好处是使用架构可以简化表和其他的对象的权限管理。每个架构都有其所有者,但是所有者和架构名是不绑定的。所有当一个用户拥有一个架构,并且这个用户必须从数据库中删除时,可以不用破坏任何代码而仅仅是将架构的所有者变一下。如果你不希望用架构来组织数据库中的对象,只用dbo架构就行了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)