
自己搜索一下就是了,我给你copy一段:
为了提供完善的数据库管理机制,SQL Server 设计了严格的命名规则。在创建或引用数据库实体,如表、索引、约束等时,必须遵守SQL Server 的命名规则,否则有可能发生一些难以预料和检查的错误。
本文将讲述:标识符的分类和格式规定;数据库对象的命名规定与使用原则。希望对您会有所帮助。
标识符分类
SQL Server的所有对象,包括服务器、数据库以及数据库对象,如表、视图、列、索引、触发器、存储过程、规则、默认值和约束等都可以有一个标识符。对绝大多数对象来说,标识符是必不可少的,但对某些对象如约束来说,是否规定标识符是可选的。对象的标识符一般在创建对象时定义,作为引用对象的工具使用。
例如下面的SQL语句:
Create table student
(
id int primary key,
name varchar(20)
)
这个例子创建了一个表格,表格的名字是一个标识符:student;表格中定义了两列,列的名字分别是id,name,他们都是合法的标识符。这个例子还定义另外一个未命名的主键约束。
SQL Server一共定义了两种类型的标识符:规则标识符(Regular identifier)和界定标识符(Delimited identifier)。
规则标识符
规则标识符严格遵守标识符有关格式的规定。所以在T-SQL语句中凡是规则标识符都不必使用界定符,如[]和‘’,来进行界定。
如上述例子中使用的表名student 就是一个规则标识符,在student上不必添加界定符。
界定标识符
界定标识符是那些使用了如[]和‘’等界定符号来进行位置限定的标识符,使用了界定标识符,既可以遵守标识符命名规则,也可以不遵守标识符命名规则。
Select from [student] 是要从student 表格中查询出所有的数据与
Select from student 等效。
为什么呢?因为在“[]”中的标识符遵守标识符命名规则,“[]”被忽略不计。
但如果是不遵守标识符命名规则的标识符,那么在T-SQL语句中必须使用界定符号加以限定,如:
Select from [my table]
Where [order]=10
在这个例子中,必须使用界定标识符,因为在from子句中的标识符my talbe中含有空格,而where子句中的标识符order 是系统保留字(在查询分析器里“order”变蓝色)。这两个标识符都不遵守标识符命名规则,必须使用界定符,否则无法通过代码编译。
标识符格式
标识符格式的规定,其具体内容如下:
标识符的首字母必须是以下两种情况之一:
所有在统一码(Unicode)20标准规定的字符,包括26个英文字母a-z和A-Z,以及其他一些语言字符,如汉字。例如可以给一个表格命名为“学生基本情况”。下划线“-”、“@”或“#”。
标识符首字母后的字符可以是:
所有在统一码(Unicode)20标准规定的字符,包括26个英文字母a-z和A-Z,以及其他一些语言字符,如汉字。下划线“-”、“@”、“$”或“#”。
0,1,2,3,4,5,6,7,8,9。
标识符不允许是T-SQL的保留字。
由于T-SQL不区分大小写,所以无论是保留字的大写还是小写都不允许使用。
标识符内部不允许有空格或特殊字符。
Select from stu[de]nt –编译器将返回错误信息。因为在标识符stu[de]nt中包含了特殊字符“[”和“]”,所以在编译上述语句时出错。
以某些特殊符号开头的标识符在SQL Server系统中具有特定的含义。如“@”开头的标识符表示这是一个局部变量或是一个函数的参数;以“#”开头的标识符表示这是一个临时表或存储过程;一个以“##”开头的标识符表示这是一个全局的临时数据库对象。T-SQL的全局变量以标志“@@”开头。为避免同这些全局变量混淆,建议不要使用“@@”作为标识符的开始。
无论是界定标识符还是规则标识符都最多只能容纳128个字符,对于本地的临时表最多可以有116个字符。
对象命名规则
SQL Server 2000 的数据库对象名字由1-128个字符组成,不区分大小写。在一个数据库中创建了一个数据库对象后,数据库对象的全名应该由服务器名、数据库名、拥有者名和对象名这四个部分组成,格式如下:
[[[server][database]][owner_name]]object_name 命名必须都要符合标识符的规定。
在实际引用对象时,可以省略其中某部分的名称,只留下空白的位置。
实例的命名习惯
在SQL Server 2000中默认实例的名字采用计算机名,实例的名字一般由计算机名字和实例名字两部分组成。
总之,正确掌握数据库的命名和引用方式是用好SQL Server 2000的前提,也有助于用户理解SQL Server 2000中的其他内容。
DBO是每个数据库的默认用户,具有所有者权限,即DbOwner
通过用DBO作为所有者来定义对象,能够使数据库中的任何用户引用而不必提供所有者名称。
比如:你以User1登录进去并建表Table,而未指定DBO,
当用户User2登进去想访问Table时就得知道这个Table是你User1建立的,要写上User1Table,如果他不知道是你建的,则访问会有问题。
如果你建表时把所有者指给了Dbo,则别的用户进来时写上DboTable就行了,不必知道User1。
不光表是如此,视图等等数据库对象建立时也要如此才算是好。
建表、存储过程、视图等数据库对象时,其对应的所有者是创建它的用户。则除了该用户其他登录用户要引用这些东东时,都要加上前缀,很是麻烦。而且,程序因此易出错,你查来查去问题确出在这,浪费你时间。
一:表中应该避免可为空的列;
二:表不应该有重复的值或者列;
三: 表中记录应该有一个唯一的标识符
四:数据库对象要有统一的前缀名
五:尽量只存储单一实体类型的数据
简介
Active Server Page (ASP) 应用程序的成功常常取决于对体系结构和设计这两方面的取舍 考虑到 ASP 技术的范围之广和当前应用程序固有的复杂性 这种取舍是非常困难的 本文中 我将为您提供一些特定的指导方针 以助您成功开发基于 ASP 的应用程序
我已将指导方针整理成一组开发原则 在评估解决方案和技术时 可以应用以下原则帮助您做出决策 以下原则是我长期以来从成功的开发模式所得的经验积累
原则 采用标准方法
建立命名约定并使目录结构标准化 可以帮助您大大提高 ASP 应用程序的可读性和可维护性 虽然目前尚无 ASP 应用程序的正式标准 许多开发人员还是建立了一些通用方式 在此 我将与您共享一些更为通用的方式
因为 ASP 技术依靠脚本引擎进行工作 而且脚本具有类型不严密的天性 命名约定也很模糊 在类型非常严密的语言中 变量将按照它的实际类型进行声明 在使用 ASP 技术时 通常按照处理变量的方式(而不是其实际数据类型)在 ASP 代码中声明变量 例如 在使用 Visual Basic(R) Scripting Edition (VBScript) 时 尽管所有的 VBScript 变量都是 Variant 你还是会将成功标志声明为 bSuccess(b 代表布尔型) 而不是 vSuccess(v 代表 Variant)
下表是一些通行的命名约定
变量前缀
前缀 使用的变量 变量示例
b or bln Boolean bSuccess
c or cur Currency cAmount
d or dbl Double dblQuantity
dt or dat Date and Time dtDate
f or flt Float fRatio
l or lng Long lMilliseconds
i or int Integer iCounter
s or str String sName
a or arr Array aUsers()
o or obj Object oPipeline
数据库对象的变量前缀
前缀 使用的变量 变量示例
cnn Connection cnnPubs
rst Recordset rstAuthors
cmd Command cmdEmployee
fld Field fldLastName
范围及前缀的用法
前缀 说明
g_ 创建于 Global asa
m_ 对于 ASP 页或在 Include 文件中是局部的
(没有前缀) 非静态变量 对于过程来说前缀是局部的
Knowledge Base (KB) 中的一篇文章 Q INFO: Microsoft Consulting Services Naming Conventions for Visual Basic (英文)对命名约定提供了真知灼见
尽可能采用目录结构为您的各个应用程序部件提供始终如一的位置 您应用程序的实际目录结构当然由您自己决定 但通常是将图像 文档 include 文件和组件分别放置在单独的目录中 以下是简单 ASP 应用程序目录结构示例
目录结构示例
\SimpleAspApp
\Docs
\Images
\Includes
一个好的目录结构允许您有选择地应用 NTFS 权限 您还可以从 ASP 应用程序内部使用相对路径 例如 可以使用以下代码 从位于 SimpleAspApp 目录的 default asp 页 引用 Includes 目录中的 include 文件 top asp
/includes/top asp
注意我的 include 文件的扩展名是 asp 而不是 inc 这样做是出于安全方面的考虑 而且使用 asp 扩展名(而不是 inc) 还能够在 Visual InterDev(R) 中使用彩色编码
有关结构化 ASP 应用程序的其他一些提示和技巧 请参阅文章 ASP Conventions (英文)
原则 设计为在服务下运行
ASP 将在服务下运行 设计 ASP 应用程序时 您马上会面临在桌面应用程序中不会遇到的安全环境和线程问题 在桌面环境中 通常只处理作为交互式用户运行的单线程执行 而且有权访问当前的桌面系统 在 Internet 信息服务 (IIS) 中 模拟不同用户环境的多个客户机线程调用您的应用程序 而且您的应用程序被限于 系统 桌面
这对您来说意味着什么?请学习 IIS 的安全模式 还要提醒您 仅因为某些东西能在 Visual Basic IDE 下能够正常运行 并不意味着它就能在 ASP 技术中安全运行 Visual Basic IDE 并没有准确地模拟运行时环境 常见的设计错误包括 在 ASP 技术中使用需要用户界面的 OCX 控件 使用对线程来说不安全的组件 和使用要求特殊的用户上下文的组件 要避免的一个最简单的问题 就是从应用程序中试图访问 HKEY_CURRENT_USER (HKCU) 注册表项(例如 不要调用 Visual Basic 的 GetSetting 和 SaveSetting 函数 它们都依赖于 HKCU) 同样 不要出现需要用户进行人机交互的消息框或其他对话框
以下文章是有关 ASP 技术中的安全和验证问题的相当不错的入门读物
Authentication and Security for Internet Developers (英文)
Q INFO: Security Issues with Objects in ASP and ISAPI Extensions (英文)
原则 封装业务逻辑
ASP 技术通过生成 HTML 输出提供了表示服务 简而言之 它会生成用户界面 您需要将商务逻辑从 ASP 表示脚本中分隔开来 即使您不使用 组件将业务逻辑从 ASP 代码中分隔开来 至少也要将业务逻辑分隔到函数和 include 文件中 以提高可维护性 可读性和可重用性 在需要排除故障和隔离问题时 您还能体会模块化设计方法的好处
调用脚本内部调用函数和方法 可避免代码乱作一团 并能在 ASP 应用程序中添加结构 下面举例说明从 ASP 代码中 将逻辑分离到方法调用中
lt;% Main()
MyBizMethod()
Sub Main()
GetData()
DisplayData()
End Sub
%>
在使用包含 ASP 功能的技术时 可以应用这一原则 下面举一个使用 Visual Basic WebClass 时的例子 说明如何使用这一原则
因为 WebClass 本身引用 ASP 代码生成 HTML 所以您不要将业务逻辑直接置于 WebClass 内 因为这是您的表示层 不在 MTS/+ 下直接运行 WebClass
从 WebClass 可以调用能运行在 MTS/+ 中的单独业务组件
您可以决定创建自己的 具有对 ASP 引用的 组件 而不是依赖于 WebClass 框架结构和额外的 WebClass 运行时开销 — 您也可以使用 ASP 脚本直接将业务组件自动化
原则 尽晚获取资源 尽早释放资源
常见的问题是 从桌面系统到服务器的过渡 许多具有桌面系统背景的开发人员从来没有为服务器的一些问题和资源共享担心过 在传统的桌面应用程序中 连接到服务器是个耗时的过程 为了改善用户的体验 通常采用尽早获取资源和推迟释放资源的方法 例如 许多应用程序会在它的整个运行时间内始终连接着数据库
这种方式在传统的桌面应用程序中能够正常工作 其原因是用户数量非常明确 容易加以控制 并且后端与前端紧密连接 然而 对于当前的 Web 应用程序 这种方式已经不可行了 其原因是有限的服务器资源将面对越来越多的用户 为了使您的应用程序能够应付用户的增加 您需要尽晚获取资源 尽早释放资源
共用有助于增加这一方式的有效性 通过共用 多个用户能够共享资源 而且等待时间最少 对服务器的影响也最小 例如 在处理数据库时 ODBC 连接共用和 OLEDB 资源共用可以实现从共用池中选择连接 最大程度地减少连接数据库的开销
有关共用 ADO 的详细信息 请参阅 Pooling in Microsoft Data Access Components (英文)
原则 使用数据库维护复杂的状态
尽管 >
DB2数据库的性能与稳定性直接跟数据库对象的多少、大小有关。如果对象很少,不复杂,那么就算不怎么规划,也能够达到比较高的性能。如果对象数据比较多、比较大的话,那么就需要在数据库设计之前好好的规划,否则会在很大程度上影响数据库的性能与稳定性。
一、选择合适的语言与数据库字符集。
在企业中部署数据库的时候,首先需要在 *** 作系统上安装数据库。而在安装数据库的时候,需要选择安装的语言环境。即是以中文状态下安装数据库还是以英文状态安装数据库。如在启动安装程序的时,可以利用/i language选项来指定安装过程中所采用的语言。到目前为止,DB2数据库已经支持很多种语言。那么数据库在安装过程中,该采用什么语言呢?笔者建议,只要数据库管理员有一点英语基础,最好能够采用英文语言环境来进行安装。虽然说现在DB2数据库的中文语言环境已经设计的比较完善,但是笔者仍然担心其有一些不知名的漏洞。为此笔者在安装DB2数据库的时候,基本上都采用的是英文语言环境来进行安装。即将语言设置为“EN”,表示英文。提高DB2数据备份与恢复的效率。
另外如果DB2 数据库中要保存英文以外的数据,或者说用户会使用不同的字符集访问数据库时,还需要在数据库安装过程中选择特定的数据库字符集。DB2数据库中的所有字符数据,包括数据字典中的数据,都是存储在数据库字符集中的。如果用户使用不同的字符集访问数据库时,数据库管理员就需要选择包含所有这些用户的字符集的超集。只有如此,才能够确保系统能够很方便的使用替代字符完成字符的转换,从而提高数据库的性能。如果用户选择的字符集不对,有可能会出现一些莫名其妙的问题。如一次用户在安装数据库过程中,没有选择合适的字符集。虽然在使用的过程中,其存储中文字符没有问题。但是当对数据库采取还原 *** 作时,却发现还原后的数据库中有些原来是中文字符的地方,尽然出现了乱码。这主要就是没有选择合适的字符集惹的祸。有时候如果字符集选择不当的话,从外部数据源(如Excel表格)导入数据的时候,中文数据也会无法顺利导入。所以,数据库管理员在安装数据库的时候,需要根据实际企业,来选择合适的字符集。
二、评估数据库对象的大小、数量。
DB2数据库的性能与稳定性直接跟数据库对象的多少、大小有关。如果对象很少,不复杂,那么就算不怎么规划,也能够达到比较高的性能。如果对象数据比较多、比较大的话,那么就需要在数据库设计之前好好的规划,否则会在很大程度上影响数据库的性能与稳定性。其实DB2 数据库就好像一个仓库,数据库中的对象(如索引、数据表、表空间)等等就好像仓库中的货物。如果货物比较少,那么随便放放,仓库都显得很空旷。货物寻找起来也会很方便。但是如果货物数量比较多、比较大,就必须要对其存储空间进行合理规划。只有如此才能够让仓库的空间利用率达到最佳状态。并且货物的存放有序,在查找起来也特别的方便。笔者这里就以仓库管理为例,说话该如何做好数据库对象大小、数量等方便的评估,以及他们对于数据库性能与稳定性的影响。
1、根据对象大小来规划存储空间。在仓库货物的摆放上,要根据货物的大小来规划存储空间。或者说要首先防止大的货物。只有如此空间的利用率才会最高。其实在规划DB2对象的时候,也是如此。如某些表可能会包含的记录比较多,属于大表。此时数据库管理员就需要考虑,是否将其放置在一个独立的表空间或者硬盘空间上,以提高数据 *** 作的性能。大表所对应的索引往往也是比较大的。为此在硬件条件允许的情况下,将索引表与数据表分别存放在不同的硬盘上,可以提高数据库的性能。而对于一些比较小的对象(如数据表),可以将它们存放在一个表空间中。其实这个表空间就好像仓库中的一个个纸盒子。将小的对象放入到这个“纸盒子”中,不但不占空间,而且也容易管理。
2、根据对象的使用频率来规划存放空间。在仓库中摆放物品的时候,往往会把近期就要用到的货物或者频繁需要用到的东西放在仓库门口或者容易拿到的地方。如此在拿这些货物时就会比较便捷,也不会对其他货物产生影响。对于DB2数据库中的对象来说,也是这么一回事。可以将那些访问量比较大的对象,如索引、数据表,存放在性能比较好的硬盘上或者单独的硬盘中。此时访问这些数据,就不会与其它对象产生I/O冲突, *** 作起来速度就会比较快。而将不怎么用到的对象,存放在一起。由于他们不怎么被用到,所以即使存放在性能比较低的硬盘上,其对数据库性能产生的负面影响也是非常有限的。 在DB2数据库里面如何更新执行计划
3、根据类别来存放数据库对象。在仓库中存放货物的时候,还会对其进行分类。然后根据类别来进行存放。这有利于货物的管理与检索。其实在数据库对象存储空间设计时,也需要考虑这个因素。如现在应用软件在设计的时候,很多都是根据模块来设计。那么在数据库对象设计时,也需要根据这个模块来设计存储的空间。如将同一个模块的数据库对象存放在同一个表空间内。不过这可能会跟上面的两个建立相违背。此时最好是在对象的命名上做文章。如可以根据模块的不同,分别给数据库对象取一个相同的前缀或者后缀。如即使同一块模块要用到多个表空间,此时就可以给表空间一个相同的前缀。如此在管理数据库对象的时候,根据表空间的前缀就可以判断其所属的模块了。如果再加上一个后缀来表示其数据库对象的分类,那么就更合理了。为此在管理数据库对象的时候,要执行分类管理。不仅要从技术上对其进行分类,如分为索引、数据表、关键字等等。还需要从功能上进行分类,如按应用程序的模块来进行分类等等。
三、设计好数据库备份与还原的方案。
在数据库交付生产使用之后,往往需要进行大量的测试。但是在测试过程中往往又会产生很多的垃圾数据。可是交给企业应用的,肯定是一个干净的数据库系统。为此在数据库设计的时候,就需要想好如果减少测试过程中的垃圾数据。或者采取什么样的方式来实现在交互时自动清除垃圾数据的机制。
一般来说,想要一个数据库备份与还原的方案,减少数据库测试所产生的垃圾数据。如现在在给企业部署数据库的时候,往往是先安装一个干净的数据库系统。当然字符集这些需要预先设置好。然后再利用数据库还原功能将预先定义好的数据库模型还原出来。
另外有些时候需要两个方案互为补充。如在数据库初始化的过程中,采用数据库还原的方式来创建数据库对象。但是在应用软件升级的时候,由于此时已经有了用户的数据,为此不能够在使用数据库还原的方法。而是通过应用程序来执行某些SQL代码,来调整或者增加部分数据库对象。无论采用哪一种方式,需要遵循的一个原则就是在给企业创建数据库对象时要最大限度的减少测试。而要做到这一点,就是需要先在测试服务器上创建对象并测试对象可用。然后直接将相关的SQL代码在投入使用的数据库服务器上执行。
在MySQL中创建一个Schema好像就跟创建一个Database是一样的效果,在SQL Server和Orcal数据库中好像又不一样 目前我只能理解,在mysql中 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 首先搜寻sysmytable (Sys Schema)
2 然后搜寻Suemytable (Default Schema)
3 最后搜寻 dbomytable (Dbo Schema)
执行的顺序大家既然清楚了,那么以后在查询数据库表中的数据时,最好指定特定的Schema前缀,这样子,数据库就不用去扫描Sys Schem
这样是不行的~~对于常量不能像使用变量那样直接放在里面,不能被PHP解释。需要老老实实的用。进行连接字符串才成。$sql="selectfrom"DB_PRE"admin";
以上就是关于sql server的对象命名规则是什么全部的内容,包括:sql server的对象命名规则是什么、简单问题 SqlServer中的dbo是什么东西、数据库设计规范化的五个要求等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)