Oracle和SQLServer的语法区别(8)
STUDENT_ADMIN.GRADE ( SSN CHAR(9) NOT NULL, SSN CHAR(9) NOT NULL, CCODE VARCHAR(4) NOT NULL, CCODE VARCHAR2(4) NOT NULL, GRADE VARCHAR(2) NULL, GRADE VARCHAR2(2) NULL, CONSTRAINT CONSTRAINT GRADE_SSN_CCODE_PK GRADE_SSN_CCODE_PK PRIMARY KEY (SSN, CCODE) PRIMARY KEY CLUSTERED (SSN, CCODE), CONSTRAINT GRADE_SSN_FK CONSTRAINT GRADE_SSN_FK FOREIGN KEY (SSN) REFERENCES FOREIGN KEY (SSN) REFERENCES STUDENT_ADMIN.STUDENT (SSN), STUDENT_ADMIN.STUDENT (SSN), CONSTRAINT GRADE_CCODE_FK CONSTRAINT GRADE_CCODE_FK FOREIGN KEY (CCODE) REFERENCES FOREIGN KEY (CCODE) REFERENCES DEPT_ADMIN.CLASS (CCODE) DEPT_ADMIN.CLASS (CCODE) ) ) 非聚集索引
在非聚集索引中,索引数据和表数据在物理上是分离的,且表中的行不按照索引的顺序存储。可以把 Oracle 索引定义迁移到 Microsoft SQL Server 非聚集索引定义(如下面例子所示)。但是,出于性能方面的考虑,可能希望选择给定表的一个索引,并把它创建为聚集索引。
Oracle Microsoft SQL Server CREATE INDEX STUDENT_ADMIN.STUDENT_ MAJOR_IDX ON STUDENT_ADMIN.STUDENT CREATE NONCLUSTERED INDEX (MAJOR) STUDENT_MAJOR_IDX TABLESPACE USER_DATA ON USER_DB.STUDENT_ PCTFREE 0 ADMIN.STUDENT (MAJOR) STORAGE (INITIAL 10K NEXT 10K MINEXTENTS 1 MAXEXTENTS UNLIMITED) 索引的语法和命名
在 Oracle 中,索引名在用户帐户中是唯一的。在 Microsoft SQL Server 中,索引名在表名称中必须是唯一的,但在用户帐户或数据库中则不一定是唯一的。因此,在 SQL Server 中创建或删除索引时,必须指明表的名称和索引名称。此外,SQL Server DROP INDEX 语句可以同时删除多个索引。
Oracle CREATE [UNIQUE] INDEX [schema].index_name Microsoft SQL Server CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] ON [schema.]table_name (column_name [, column_name]...) [INITRANS n] [MAXTRANS n] [TABLESPACE tablespace_name] [STORAGE storage_parameters] [PCTFREE n] [NOSORT] DROP INDEX ABC; INDEX index_name ON table (column [,Un]) [WITH [PAD_INDEX] [[,] FILLFACTOR = fillfactor] [[,] IGNORE_DUP_KEY] [[,] DROP_EXISTING] [[,] STATISTICS_NORECOMPUTE] ] [ON filegroup] DROP INDEX USER_DB.STUDENT.DEMO_IDX, USER_DB.GRADE.DEMO_IDX 索引数据存储参数
Microsoft SQL Server 中 FILLFACTOR 选项和 Oracle 中的 PCTFREE 变量的作用基本相同。随着表的增大,索引页就会拆分,以容纳新数据。索引必须重新组织,来容纳新的数据值。填充因子百分比只在索引创建时使用,以后不再维护。
在索引最初创建时,FILLFACTOR 选项(值从 0 到 100 )控制索引页上保留多少空间。如果没有指定,使用默认的填充因子 0 - 这将完全填充索引叶级页,并在每个决定节点页上保留至少一个条目的空间(对于非唯一的聚集索引保留两个)。
使用较低的填充因子值,最初会减少索引页的拆分,并增加 B 树索引结构中级别的数目。使用较高的填充因子值,可更有效地使用索引页空间,访问索引数据需要较少的磁盘 I/O,并减少了 B 树索引结构中级别的数目。
PAD_INDEX 选项指定了,将填充因子应用到索引的决定节点页以及数据页中。
尽管在 Oracle 中,必须调整 PCTFREE 参数来优化性能,但在 CREATE INDEX 语句中,一般不需要加入 FILLFACTOR 选项。填充因子可用于优化性能。仅当使用现有数据在表上创建新索引,并且能够准确预估该数据以后的变化时,填充因子才是有用的。
如果已经把 Oracle 索引的 PCTFREE 设为 0,则考虑使用值为 100 的填充因子。它用于不发生插入和更新的表(只读表)。填充因子设为 100 时,SQL Server 创建每页均百分之百填充的索引。
忽略重复的关键字
对于 Oracle 和 Microsoft SQL Server,用户不能向唯一索引的列插入重复的值。如果这样做,就会产生错识消息。但是,使用 SQL Server,开发人员可以选择 INSERT 或 UPDATE 语句对该错误作出何种反应。
如果在 CREATE INDEX 语句中指定了 IGNORE_DUP_KEY,并执行了产生重复键的 INSERT 或 UPDATE 语句,SQL Server 就会发出一条警告消息,并忽略(不插入)此重复的行。如果没有给索引指定 IGNORE_DUP_KEY,SQL Server 就会发出一个错误信息,并回滚整个 INSERT 语句。有关这些选项的详细信息,请参见 SQL Server Books Online。
Oracle 应用程序可能需要创建只存在很短时间的表。应用程序必须确保,在某些时候可以删除所有为此目的创建的表。如果应用程序做不到这一点,表空间很快就会变得混乱和难以管理。 Microsoft SQL Server 提供了临时表数据库对象,它正是为此目的创建的。这些表总是创建在 tempdb 数据库中。表名称决定了它们在 tempdb 数据库中保留多长时间。
表的名称 说明 此局部临时表只在创建它的用户会话或过程期间存在。当用户注销或创建表过程完成后,该表自动被删除。这#table_name 些表不能在多个用户之间共享。其他数据库用户不能访问此类表。不能授予或撤销此类表的权限。 此全局临时表通常也在创建它的用户会话或过程期间存在。这个表可以在多个用户间共享。最后一个引用它的##table_name 用户会话中断时,它自动被删除。所有其他数据库用户均可访问这个表。不能授予或撤销此类表的权限。 可以给临时表定义索引。仅能在 tempdb 中显式创建且不带有 # 或 ## 前缀的表上定义视图。下面的例子给出了,如何创建一个临时表及其相关索引。用户退出时,表和索引被自动删除。 SELECT SUM(ISNULL(TUITION_PAID,0)) SUM_PAID, MAJOR INTO #SUM_STUDENT FROM USER_DB.STUDENT_ADMIN.STUDENT GROUP BY MAJOR
CREATE UNIQUE INDEX SUM STUDENT IDX ON #SUM STUDENT (MAJOR)
您可能会发现,使用临时表带来了很多优势,完全有理由为此而修改程序代码。
Microsoft SQL Server 有一些比 Oracle 更为强健的数据类型。Oracle 和 SQL Server 数据类型之间有多种转换方式。建议使用 DTS 向导自动创建新的 CREATE TABLE 语句。必要时,可修改这些语句。
Oracle CHAR VARCHAR2 和 LONG RAW 和 LONG RAW Microsoft SQL Server 建议使用 char。因为 char 类型的列使用固定的存储长度,所以,访问时比 varchar 列要快一些。 varchar 或 text。(如果 Oracle 列中数据值的长度为 8000 字节或更少,则使用 varchar;否则,必须使用 text。) varbinary 或 image。(如果 Oracle 列中数据值的长度为 8000 字节或更少,则使用 varbinary;否则,必须使用 image。) NUMBER DATE ROWID CURRVAL, NEXTVAL SYSDATE USER 如果整数在 1 和 255 之间,使用 tinyint。 如果整数在 -32768 和 32767 之间,使用 smallint。 如果整数在 -2,147,483,648 和 2,147,483,647 之间,则使用 int。 如果需要浮点类型数,使用 numeric(有精度和小数位)。 注意:不要使用 float 或 real,因为可能会产生舍入(Oracle NUMBER 和 SQL Server numeric 均不舍入)。 如果不确定,则使用 numeric;它最接近 Oracle NUMBER 数据类型。 datetime。 使用 identity 列类型。 使用 identity 列类型以及 @@IDENTITY、IDENT_SEED() 和 IDENT_INCR() 函数。 GETDATE()。 …… 此处隐藏:4801字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




