本文目录一览

1,在关系型数据库中数据表的结构包含什么

关系型数据库个人感觉应该这样解释:一是关系型数据库在表现出来的时候就是一张表格,不过这张表格有一些要求,一定是不可分的表格,就是基本单元是二元的没有表中表。这个也就是你说的数据表; 表是有横列有竖列的。字段就是相当于其中竖列上写的内容,记录就是其中横列上的内容,有几条记录即使表中有几行内容。
表结构就是指一个个的属性,也就是字段,是表的框架。表是由表结构【(字段名称)(数据类型)(字段的属性)】和表内容(记录,也就是元组)构成的

在关系型数据库中数据表的结构包含什么

2,SQL Server 2005中都有哪些数据库对象

表视图触发器存储过程函数
在microsoft sql server 2005中,用于数据存储的实用工具是数据库。数据库的物理表现是操作系统文件,即在物理上,一个数据库由一个或多个磁盘上的文件组成。这种物理表现只对数据库管理员是可见的,而对用户是透明的。逻辑上,一个数据库由若干个用户可视的组件构成,如表、视图、角色等,这些组件称为数据库对象。用户利用这些逻辑数据库的数据库对象存储或读取数据库中的数据,也直接或间接地利用这些对象在不同应用程序中完成存储、操作和检索等工作。逻辑数据库的数据库对象可以从企业管理器中查看. 每个sql server 2005数据库(无论是系统数据库还是用户数据库)在物理上都由至少一个数据文件和至少一个日志文件组成。出于分配和管理目的,可以将数据库文件分成不同的文件组。 数据文件:分为主要数据文件和次要数据文件两种形式。每个数据库都有且只有一个主要数据文件。主要数据文件的默认文件扩展名是.mdf。它将数据存储在表和索引中,包含数据库的启动信息,还包含一些系统表,这些表记载数据库对象及其他文件的位置信息。次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的默认文件扩展名是.ndf。 日志文件:sql server具有事务功能,以保证数据库操作的一致性和完整性。所谓事务就是一个单元的工作,该单元的工作要么全部完成,要么全部不完成。日志文件用来记录数据库中已发生的所有修改和执行每次修改的事务。sql server是遵守先写日志再执行数据库修改的数据库系统,因此如果出现数据库系统崩溃,数据库管理员(dba)可以通过日志文件完成数据库的修复与重建。每个数据库必须至少有一个日志文件,但可以 不止一个。日志文件的默认文件扩展名是.1df。建立数据库时,sqi。server会自动建立数据库的日志文件。 文件组:一些系统可以通过控制在特定磁盘驱动器上放置的数据和索引来提高自身的性能。文件组可以对此进程提供帮助。系统管理员可以为每个磁盘驱动器创建文件组,然后将特定的表、索引、或表中的text、ntext或image数据指派给特定的文件组。 sqi.server有两种类型的文件组:主文件组和用户定义文件组。主文件组包含主要数据文件和任何没有明确指派给其他文件组的文件,系统表的所有页均分配在主文件组中;用户定义文件组是在cr e_ate data_base或ai,ter data.base语句中,使用fii,egroup关键字指定的文件组。sqt.server 2005在没有文件组时也能有效地工作,因此许多系统不需要指定用户定义文件组。在这种情况下,所有文件都包含在主文件组中,而且sqi。server 2005可以在数据库内的任何位置分配数据。 每个数据库中都有一个文件组作为默认文件组运行。当sqi。server给创建时没有为其指定文件组的表或索引分配页时,将从默认文件组中进行分配。一次只能有一个文件组作为默认文件组。如果没有指定默认的文件组,主文件组则成为默认的文件组。

SQL Server 2005中都有哪些数据库对象

3,什么是数据库

定义1  严格地说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个"数据仓库"我们就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现财务、仓库、生产的自动化管理。   J.Martin给数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。定义2  数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。定义3  (伯尔尼公约议定书专家委员会的观点)   所有的信息(数据事实等)的编纂物,不论其是以印刷形式,计算机存储单元形式,还是其它形式存在,都应视为“数据库”。   数字化内容选择的原因有很多,概括起来主要有:   (1)存储空间的原因。数字化的产品是通过网络被广大用户存取利用,而大家都知道数字化产品是存放在磁盘阵列上的,磁盘阵列由服务器来管理,磁盘空间是有限的,服务器的能力也是有限的,不可能无限量地存入数字资源,这就需要我们对文献资源数字化内容进行选择。   (2)解决数字化生产高成本和图书馆经费有限性之间矛盾的需要。几乎没有图书馆有充足的资源来对整个馆藏进行数字化,内容选择不可避免。   (3)数字资源管理的需要。技术的快速发展使数字化项目所生成的数字资源的生命周期越来越短,投入巨资进行数字迁移是延长数字资源生命的1个重要途径,昂贵的维护成本就必须考虑数字化的内容选择。   数据库发展史数据库技术从诞生到现在,在不到半个世纪的时间里,形成了坚实的理论基础、成熟的商业产品和广泛的应用领域,吸引越来越多的研究者加入。数据库的诞生和发展给计算机信息管理带来了一场巨大的革命。三十多年来,国内外已经开发建设了成千上万个数据库,它已成为企业、部门乃至个人日常工作、生产和生活的基础设施。同时,随着应用的扩展与深入,数据库的数量和规模越来越大,数据库的研究领域也已经大大地拓广和深化了。30年间数据库领域获得了三次计算机图灵奖(C.W. Bachman,E.F.Codd, J.Gray),更加充分地说明了数据库是一个充满活力和创新精神的领域。就让我们沿着历史的轨迹,追溯一下数据库的发展历程。   传统上,为了确保企业持续扩大的IT系统稳定运行,一般用户信息中心往往不仅要不断更新更大容量的IT运维软硬件设备,极大浪费企业资源;更要长期维持一支由数据库维护、服务器维护、机房值班等各种维护人员组成的运维大军,维护成本也随之节节高升。为此,企业IT决策者开始思考:能不能像拧水龙头一样按需调节的使用IT运维服务?而不是不断增加已经价格不菲的运维成本。定义4  数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统。数据库的概念实际包括两层意思:   (1)数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。   (2)数据库是数据管理的新方法和技
数据库简单来说就是一些数据的的集合。

什么是数据库

4,数据库的类型

ASP数据库类型DBFDBCMDBExcelSQLServer数据库是在计算机存储设备上按一定方式,合理组织并存储的相互有关联的数据的集合,是计算机技术和信息检索技术相结合的产物,是电子信息资源的主体,是信息检索系统的核心部分之一。按所提供的信息内容,数据库主要可分为参考数据库和源数据库。1.参考数据库主要存储一系列描述性信息内容,指引用户到另一信息源以获得完整的原始信息的一类数据库,主要包括书目数据库和指南数据库。(1)书目数据库 存储描述如目录、题录、文摘等书目线索的数据库,又称二次文献信息数据库。如各种图书馆目录数据库、题录数据库和文摘数据库等属于此类,它的作用是为用户指出了获取原始信息的线索。图书馆目录数据库,又称机读目录,其数据内容详细,除描述标题、作者、出版项等书目信息外,还提供用户索取原始信息的馆藏信息。题录、文摘数据库描述的数据内容与印刷型的题录、文摘相似,它提供了论文信息或专利信息等确定的信息来源,供用户检索。(2)指南数据库 存储描述关于机构、人物、产品、活动等对象的数据库。与其它数据库相比,指南数据库为用户提供的不仅仅是有关信息,还包括各种类型的实体,多采用名称进行检索。如存储生产与经营活动信息的机构名录数据库、存储人物信息的人物传记数据库、存储产品或商品信息的产品指南数据库、存储基金信息的基金数据库等属于此类,它的作用指引用户从其它有关信息源获取更详细的信息。2.源数据库主要存储全文、数值、结构式等信息,能直接提供原始信息或具体数据,用户不必再转查其它信息源的数据库。它主要包括全文数据库和数值数据库。(1)全文数据库 存储原始信息全文或主要部分的一种源数据库。如期刊全文数据库、专利全文数据库、百科全书全文数据库,用户使用某一词汇或短语,便可直接检索出含有该词汇或短语的原始信息的全文。(2)数值数据库 存储以数值表示信息为主的一种源数据库,和它类似的有文本-数值数据库。与书目数据库比较,数值数据库是对信息进行深加工的产物,可以直接提供所需的数据信息。如各种统计数据库、科学技术数据库等。数值数据库除了一般的检索功能外,还具有准确数据运算功能、数据分析功能、图形处理功能及对检索输出的数据进行排序和重新组织等方面的功能。4.2.2 数据库结构1.书目数据库的结构书目数据库是以文档形式组织一系列数据,这些数据被称为记录,一个记录又包含若干字段。(1)记录与字段 记录是作为一个单位来处理有关数据的集合,是组成文档的基本数据单位。记录中所包含的若干字段,则是组成记录的基本数据单位。在书目数据库中,一个记录相当于一条题录或文摘,因此,一个记录通常由标题字段、作者字段、来源字段、文摘字段、主题词字段、分类号字段、语种字段等组成。在有些字段中,又包含多个子字段,子字段是字段的下级数据单位。如,主题词字段含有多个主题词。按照字段所代表记录的性质不同,字段通常分为基本字段和辅助字段两类。常见的字段名称及代码见表4-1。表4-1 字段名称及代码基本字段 辅助字段字段名称 字段代码 字段名称 字段代码标 题 TI 记录号 DN文 摘 AB 作 者 AU叙 词 DE 作者单位 CS标识词 ID 期刊名称 JN出版年 PY出版国 CO语 种 LA(2)文档 按一定结构组织的相关记录的集合。文档是书目数据库数据组织的基本形式,文档的组织方式与检索系统的硬件和软件功能密切相关。在书目数据库中,文档结构主要分为顺排文档和倒排文档。1)顺排文档 记录按顺序存放,记录之间的逻辑顺序与物理顺序是一致的,相当于印刷型工具中文摘的排列顺序,是一种线形文档。顺排文档是构成数据库的主体部分,但其主题词等特征的标识呈无序状态,直接检索时,必须以完整的记录作为检索单元,从头至尾查询,检索时间长,实用性较差。2)倒排文档 将顺排文档中各个记录中含有主题性质的字段(如主题词字段、标题字段、叙词字段等)和非主题性质字段(如作者字段、机构字段、来源字段等)分别提取出来,按某种顺序重新组织得到的一种文档。具有主题性质的倒排档,称基本索引档,非主题性质的倒排档,称辅助索引档。综上所述,顺排档和倒排档的主要区别是:顺排档以完整的记录为处理和检索单元,是主文档,倒排档以记录中的字段为处理和检索单元,是索引文档。计算机进行检索时,先进入倒排档查找有关信息的存取号,然后再进入顺排档按存取号查找记录。2.全文数据库的结构一般的全文数据库结构与书目数据库相似,全文数据库的一个记录就是一个全文文本,记录分成若干字段。其主文档是以顺排形式组织的文本文档,倒排档是对应于记录可检字段的索引文档。3.数值数据库的结构数值数据库的结构要综合考虑数据库的内容及检索目的,即,在内容上,数值数据库的主要内容是数值信息,但不排除含有必要的说明性的文本信息,在检索上,便于单项检索和综合检索,还能对数值进行准确数据运算、数据分析、图形处理及对检索输出的数据进行排序和重新组织。数值数据库的数据结构可以是单元式,也可以是表册形式。前者是对原始数据的模拟,后者则是对统计表格的机读模拟。数值数据库通常有多种文档,如顺排挡、倒排挡、索引文档等。顺排挡是由数值数据组成,为主文档,另有相应的索引文档,为便于存取,索引文档采用基本直接存取结构的组织形式。倒排挡也有相应的索引文档,索引文档采取分级组织形式。数值数据库的文档结构,使所有文档都可以用于检索,所有数据都可用来运算,构成了数值数据库的特点。4.指南数据库的结构指南数据库的结构兼有书目数据库、全文数据库和数值数据库的特点,有顺排档、倒排档、索引文档和数据字典。一般而言,对涉及主题领域较多,内容综合性较强的大型指南数据库,顺排挡(主文档)可采用多子文档的结构,对单一主题领域和内容较专的,则采用单一主文档和不定长、多字段的记录格式为宜。
模糊数据库 指能够处理模糊数据的数据库。一般的数据库都是以二直逻辑和精确的数据工具为基础的,不能表示许多模糊不清的 事情。随着模糊数学理论体系的建立,人们可以用数量来描述模糊事件并能进行模糊运算。这样就可以把不完全性、不确定性、模糊性引入数据库系统中,从而形成模糊数据库。模糊数据库研究主要有两方面,首先是如何在数据库中存放模糊数据;其次是定义各种运算建立模糊数据上的函数。模糊数的表示主要有模糊区间数、模糊中心数、模糊集合数和隶属函数等。 统计数据库 管理统计数据的数据库系统。这类数据库包含有大量的数据记录,但其目的是向用户提供各种统计汇总信息,而不是提供单个记录的信息。 网状数据库 处理以记录类型为结点的网状数据模型的数据库。处理方法是将网状结构分解成若干棵二级树结构,称为系。系类型 是二个或二个以上的记录类型之间联系的一种描述。在一个系类型中,有一个记录类型处于主导地位,称为系主记录类 型,其它称为成员记录类型。系主和成员之间的联系是一对多的联系。网状数据库的代表是dbtg系统。1969年美国的 codasyl组织提出了一份“dbtg报告”,以后,根据dbtg报告实现的系统一般称 为dbtg系统。现有的网状数据库系统大都是采用dbtg方案的。dbtg系统是典型的三级结构体系:子模式、模式、存储模式。相应的数据定义语言分别称为子模式定义语言ssddl,模式定义语言sddl,设备介质控制语言dmcl。另外还有数据操纵语言dml。 演绎数据库 是指具有演绎推理能力的数据库。一般地,它用一个数据库管理系统和一个规则管理系统来实现。将推理用的事实数据存放在数据库中,称为外延数据库;用逻辑规则定义要导出的事实,称为内涵数据库。主要研究内容为,如何有效地计 算逻辑规则推理。具体为:递归查询的优化、规则的一致性维护

5,数据库中的Schema和Database的区别

数据库中User和Schema的关系假如我们想了解数据库中的User和Schema究竟是什么关系,首先必须了解一下数据库中User和Schema到底是什么概念。  在SQL Server2000中,由于架构的原因,User和Schema总有一层隐含的关系,让我们很少意识到其实User和Schema是两种完全不同的概念,不过在SQL Server2005中这种架构被打破了,User和Schema也被分开了。 首先我来做一个比喻,什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User?我们可以可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table(床)就被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了J。,然后床上可以放置很多物品,就好比Table上可以放置很多列和行一样,数据库中存储数据的基本单元是Table,现实中每个仓库放置物品的基本单位就是床, User就是每个Schema的主人,(所以Schema包含的是Object,而不是User),其实User是对应与数据库的(即User是每个对应数据库的主人),既然有操作数据库(仓库)的权利,就肯定有操作数据库中每个Schema(房间)的权利,就是说每个数据库映射的User有每个Schema(房间)的钥匙,换句话说,如果他是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是他的(包括房间),他有完全的操作权,可以扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间,呵呵,和现实也太相似了吧。我还可以给User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了,至于分配权限的问题,我留在以后单独的blog中详述。比喻到这里,相信大家都清楚了吧。  在SQL Server2000中,假如我们在某一个数据库中创建了用户Bosco,按么此时后台也为我们默认地创建了默认Schema 【Bosco】。Schema的名字和User的名字相同,这也是我们分不清楚用户和Schema的原因。 在SQL Server2005中,为了向后兼容,当你用sp_adduser 存储过程创建一个用户的时候,SQL Server2005同时也创建了一个和用户名相同的Schema,然而这个存储过程是为了向后兼容才保留的,我们应该逐渐熟悉用新的DDL语言Create User和Create Schema来操作数据库。在SQL Server2005中,当我们用Create User创建数据库用户时,我们可以为该用户指定一个已经存在的Schema作为默认Schema,如果我们不指定,则该用户所默认的Schema即为dbo Schema,dbo 房间(Schema)好比一个大的公共房间,在当前登录用户没有默认Schema的前提下,如果你在大仓库中进行一些操作,比如Create Tabe,如果没有指定特定的房间(Schema),那么你的物品就只好放进公共的dbo房间(Schema)了。但是如果当前登录用户有默认的Schema,那么所做的一切操作都是在默认Schema上进行(比如当前登录用户为login1,该用户的默认Schema为login1,那么所做的所有操作都是在这个login1默认Schema上进行的。实验已经证明的确如此)。估计此时你会有一点晕,为什么呢?我刚才说dbo是一个Schema,但是你可以在数据库中查看到,dbo同时也是一个user,晕了吧,呵呵。  在SQL Server2005中创建一个数据库的时候,会有一些Schema包括进去,被包括进去的Schema有:dbo,INFORMATION_SCHEMA, guest,sys等等(还有一些角色Schema,不提了,有晕了)。 我在上文中已经提到了,在SQL Server2005中当用存储过程sp_adduser创建一个user时,同时SQL Server2005也为我们创建了一个默认的和用户名相同的Schema,这个时候问题出来了,当我们create table A时,如果没有特定的Schema做前缀,这个A表创建在了哪个Schema上,即进入了哪个房间?答案是:  1.如果当前操作数据库的用户(可以用Select current_user查出来)有默认的Schema(在创建用户的时候指定了),那么表A被创建在了默认的Schema上。 2.如果当前操作数据库的用户没有默认的Schema(即在创建User的时候默认为空),但是有一个和用户名同名的Schema,那么表A照样被创建在了dbo Schema上,即使有一个和用户名同名的Schema存在,由于它不是该用户默认的Schema,所以创建表的时候是不会考虑的,当作一般的Schema来处理,别看名字相同,可是没有任何关系哦。  3.如果在创建表A的时候指定了特定的Schema做前缀,则表A被创建在了指定的 Schema上(有权限吗?) 现在问题又出来了,在当前操作数据库的用户(用select current_user可以查看到,再次强调)没有默认Schema的前提下,当我们用Create table A语句时,A表会去寻找dbo Schema,并试图创建在dbo Schema上,但是如果创建A表的用户只有对dbo Schema的只读权限,而没有写的权限呢?这个时候A表既不是建立不成功,这个就是我以后会提及到的Login,User, Role和Schema四者之间的关系。在这里,为了避免混淆和提高操作数据库的速度(在少量数据范围内,对我们肉眼来说几乎看不到差异),我们最好每次在操作数据库对象的时候都显式地指定特定的Schema最为前缀。  现在如果登录的用户为Sue,该用户有一个默认Schema也为Sue,那么如果现在有一条查询语句为Select * from mytable, 那么搜寻每个房间(Schema)的顺序是怎样的呢?顺序如下:  1. 首先搜寻sys.mytable (Sys Schema)  2. 然后搜寻Sue.mytable (Default Schema)  3. 最后搜寻 dbo.mytable (Dbo Schema)  执行的顺序大家既然清楚了,那么以后在查询数据库表中的数据时,最好指定特定的Schema前缀,这样子,数据库就不用去扫描Sys Schema了,当然可以提高查询的速度了。  另外需要提示一下的是,每个数据库在创建后,有4个Schema是必须的(删都删不掉),这4个Schema为:dbo,guest,sys和INFORMATION_SCHEMA,其余的Schema都可以删除。
数据库中user和schema的关系 假如我们想了解数据库中的user和schema究竟是什么关系,首先必须了解一下数据库中user和schema到底是什么概念。 在sql server2000中,由于架构的原因,user和schema总有一层隐含的关系,让我们很少意识到其实user和schema是两种完全不同的概念,不过在sql server2005中这种架构被打破了,user和schema也被分开了。 首先我来做一个比喻,什么是database,什么是schema,什么是table,什么是列,什么是行,什么是user?我们可以可以把 database看作是一个大仓库,仓库分了很多很多的房间,schema就是其中的房间,一个schema代表一个房间,table可以看作是每个 schema中的床,table(床)就被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了j。,然后床上可以放置很多物品,就好比 table上可以放置很多列和行一样,数据库中存储数据的基本单元是table,现实中每个仓库放置物品的基本单位就是床, user就是每个schema的主人,(所以schema包含的是object,而不是user),其实user是对应与数据库的(即user是每个对应 数据库的主人),既然有操作数据库(仓库)的权利,就肯定有操作数据库中每个schema(房间)的权利,就是说每个数据库映射的user有每个 schema(房间)的钥匙,换句话说,如果他是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是他的(包括房间),他有完全的操作权,可以 扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间,呵呵,和现实也太相似了吧。我还可以给user分配具体的权限,也就是他到某一个房间 能做些什么,是只能看(read-only),还是可以像主人一样有所有的控制权(r/w),这个就要看这个user所对应的角色role了,至于分配权 限的问题,我留在以后单独的blog中详述。比喻到这里,相信大家都清楚了吧。 在sql server2000中,假如我们在某一个数据库中创建了用户bosco,按么此时后台也为我们默认地创建了默认schema 【bosco】。schema的名字和user的名字相同,这也是我们分不清楚用户和schema的原因。 在sql server2005中,为了向后兼容,当你用sp_adduser 存储过程创建一个用户的时候,sql server2005同时也创建了一个和用户名相同的schema,然而这个存储过程是为了向后兼容才保留的,我们应该逐渐熟悉用新的ddl语言 create user和create schema来操作数据库。在sql server2005中,当我们用create user创建数据库用户时,我们可以为该用户指定一个已经存在的schema作为默认schema,如果我们不指定,则该用户所默认的schema即为 dbo schema,dbo 房间(schema)好比一个大的公共房间,在当前登录用户没有默认schema的前提下,如果你在大仓库中进行一些操作,比如create tabe,如果没有指定特定的房间(schema),那么你的物品就只好放进公共的dbo房间(schema)了。但是如果当前登录用户有默认的 schema,那么所做的一切操作都是在默认schema上进行(比如当前登录用户为login1,该用户的默认schema为login1,那么所做的 所有操作都是在这个login1默认schema上进行的。实验已经证明的确如此)。估计此时你会有一点晕,为什么呢?我刚才说dbo是一个 schema,但是你可以在数据库中查看到,dbo同时也是一个user,晕了吧,呵呵。 在sql server2005中创建一个数据库的时候,会有一些schema包括进去,被包括进去的schema有:dbo,information_schema, guest,sys等等(还有一些角色schema,不提了,有晕了)。 我在上文中已经提到了,在sql server2005中当用存储过程sp_adduser创建一个user时,同时sql server2005也为我们创建了一个默认的和用户名相同的schema,这个时候问题出来了,当我们create table a时,如果没有特定的schema做前缀,这个a表创建在了哪个schema上,即进入了哪个房间?答案是: 1.如果当前操作数据库的用户(可以用select current_user查出来)有默认的schema(在创建用户的时候指定了),那么表a被创建在了默认的schema上。 2.如果当前操作数据库的用户没有默认的schema(即在创建user的时候默认为空),但是有一个和用户名同名的schema,那么表a照样被创建 在了dbo schema上,即使有一个和用户名同名的schema存在,由于它不是该用户默认的schema,所以创建表的时候是不会考虑的,当作一般的 schema来处理,别看名字相同,可是没有任何关系哦。 3.如果在创建表a的时候指定了特定的schema做前缀,则表a被创建在了指定的 schema上(有权限吗?) 现在问题又出来了,在当前操作数据库的用户(用select current_user可以查看到,再次强调)没有默认schema的前提下,当我们用create table a语句时,a表会去寻找dbo schema,并试图创建在dbo schema上,但是如果创建a表的用户只有对dbo schema的只读权限,而没有写的权限呢?这个时候a表既不是建立不成功,这个就是我以后会提及到的login,user, role和schema四者之间的关系。在这里,为了避免混淆和提高操作数据库的速度(在少量数据范围内,对我们肉眼来说几乎看不到差异),我们最好每次 在操作数据库对象的时候都显式地指定特定的schema最为前缀。 现在如果登录的用户为sue,该用户有一个默认schema也为sue,那么如果现在有一条查询语句为select * from mytable, 那么搜寻每个房间(schema)的顺序是怎样的呢?顺序如下: 1. 首先搜寻sys.mytable (sys schema) 2. 然后搜寻sue.mytable (default schema) 3. 最后搜寻 dbo.mytable (dbo schema) 执行的顺序大家既然清楚了,那么以后在查询数据库表中的数据时,最好指定特定的schema前缀,这样子,数据库就不用去扫描sys schema了,当然可以提高查询的速度了。 另外需要提示一下的是,每个数据库在创建后,有4个schema是必须的(删都删不掉),这4个schema为:dbo,guest,sys和information_schema,其余的schema都可以删除。

文章TAG:数据  数据库  单元  哪些  数据库的单元有哪些  
下一篇