搜档网
当前位置:搜档网 › SQL_server_与Oracle数据库开发区别

SQL_server_与Oracle数据库开发区别

SQL_server_与Oracle数据库开发区别
SQL_server_与Oracle数据库开发区别

1本文档主要从oracle与sql server语法上进行差异性比较,诸如两者在管理,性能,优化等方面的差异不作比较。

●概念上区别

1.Oracle 是一种对象关系数据库管理系统(ORDBMS),而Sql server 只是关系型数据库管

理系统(RDBMS).

2.Oracle使用Internet文件系统,该系统基于Java的应用程序,可以使数据库基于成为

Internet的开发平台;Sql server 是基于windows

3.Orace 主要的三类文件是:数据文件,控制文件,恢复日志文件

Sql server: 主要数据文件(必须有且只能有一个),次要数据文件以及日志文件

4.两者支持的命令类别差不多,数据定义语言,数据操纵语言,事务处理控制语言,

数据控制语言.在Oracle中,在事务控制语言中除了commit,rollback等还多了一个Savepoint,设置保存点。

5.oracle sql的扩展叫PL/SQL,主要的结构化查询工具有sql*plus,isql*plus, pl/sql等

Ms sql的扩展叫Transact-SQL,主要的结构化查询工具就是自带的查询分析器

6.主要数据类型

Orace:主要支持char ,varchar2,long,number,datetime,raw,long raw,clob,blob,bfie 前面三个是Character数据类型,varchar2支持可变长度的字符串,long支持可

变长度的字符数据,raw,long raw用于存储二进制数据,long raw 可变长度

最后三个是大对象(lob)数据类型,存储非结构化的信息,例如声音剪辑,视频文件CLOG表示Character Lob,可以存储大量的字符数据,它对于存储非结构化的XML 文档非常有用。BLOG表示Binary LOG,此数据类型可以存储大型二进制对象,如图形、视频剪辑,声音文件等

支不支持,money,货币

Sql server 主要支持的文本类型char ,varchar,nchar,nvarchar,text,ntext,image,货币类型

Money,二进制binary,varbinary等等

●开发语法

A.SQL 语法

两者的SQL语法基本上是相同的,只是一些细节方面的问题

一:表的管理:修改表的结构,如增加,删除列,創建表

修改表

1.修改表的列的數據類型,大小的定義不同,如下面修改數據類型。

Ms sql是ALTER TABLE table_name ALTER COLUMN col DECIMAL (5, 2)

Oracle是 Alter TABLE table_name modify(col decimal(5,2))

2.增加和刪除表的列,兩者是相同的

Alter tabe table_name add(col definition)

Alter tabe table_name drop column col_name

3 .Oracle如果不要用某列,然後又不想刪除,就可以将某个列标记为未用

Alter tabe table_name set unused(tel_no)

.创建临时表

Oracle 的語法是:

Create global temporary table aa(col number) on commit preserve rows;

临时表只在用户会话时存在的表,或其数据在用户事务处理期间可

持续存在的表,创建临时表时可以指定该表是否应当在用户会话

期间持续存在(使用on commit preserve rows)

On commit delete rows 表示事务处理完成后删除它的行 Ms sql的語法是:

Select * into #temptable from existedtable

二查询方面:

1.查表的前N行记录

oracle 是用rownum 如select * from table_name where rownum

2.查詢表的結構

Orace 可以通過desc来查看表的结构语法是:desc table_name

或者使用数据字典表user_tab_coumns也可以查看到

Select column_name,data_type from user_tab_coumns

Where table_name=''

Ms sql可以通過一些系統的存儲過程來看表的結構

語法是:exec sp_help table_name

3.将一个表的数据添加到另外一个表中

a.新表存在前提下:兩者語法是一樣的,如

insert into newtable(col1)select col1 from old_table

b.新表不存在前提下,可以用

oracle 可以用Create tabe new _table_name as select * from old_table ms sql 可以用Select * into new_table from old_table

三操作符

1.連接操作符

Oracle是‘||’; Ms sql是‘+’

2. Oracle的比较操作符中不等于除了'<>'之外,还有一个'!='

3. 算术操作符,都是+-*/;逻辑操作符都是and,not,or(相同點)

4. oracle集合操作符除了union,union all之外还加入intersect,minus Intersect是仅返回两个查询都有行,minus返回第一个查询有第二个查询没有的行

四函數

1.轉換函數

Oracle 中有to_char(),to_date(),to_number()

Ms sql 中有cast,convert

2.系统日期:

Oracle: sysdate

Ms sql: getdate()

Select sysdate from dual 一定要from子句

Select getdate() 不一定要from子句

3.Decode函数相当if else,或者ms 中的case语句

语法是decode(value,if1,then1,if2,then2....)

如decode(col1,'1','true','0','fase')

4.常规函数

Nvl 语法是NVL(EXP1,EXP2) 表示如果ex1为空则返回ex2

Nvl2 语法是nvl(exp1,exp2,exp3)表示如果ex1为空,则返回ex3,否则返回ex2

Nullif 语法是nullif(ex1,ex2) 如果这两个表达式相等则返回空

coalesce语法是coalesce(ex1,ex2,....exn)返回第一个非空表达式

5.分組函數

Oracle 中的分組函數Rollup,cube

Rollup返回的结果集包含分组行和小计行,cube产生交叉报表

如:

Select a,b,sum(c) from tabname group by rollup(a,b)

Select a,b,sum(c) from tabname group by cube(a,b)

Ms sql中的分組函數compute 和compute by

Compute子句为行聚集函数生成汇总值,该汇总值做为一个附加的行显示

在结果集中。没有GROUP BY 子句的情况下,也可以使用关键字COMPUTE.

此关键字使用MAX,MIN,SUM,COUNT,AVG等函数生成汇总值,而compute by 则在控制中断时给出该汇总值,compute by 必须包括在order by 子句中。

還有很多函數,諸如日期函數,字符串函數等等,就不一一作比較了。

Oracle中還有很多比較好的分析函數,也不列舉了。

五.Oracle中的数据库对象

同义词

作用:简化SQL语句;隐藏对象的名称和所有者,提供对象的公共访问等。

语法:CREATE PUBLIC SYNONYM seqname FOR OBJECT 序列

用来生成唯一、边续的整数,它通常用来自动生成主键或唯一值的键。

創建序列:create sequence seqname [increment by 1] start with 1 maxvalue

10

minvalue 1 cycle cache

访问序列:

Select seqname.nextval from dual 将返回序列的初始值

Select seqname.currval from dual 返回序列的当前值

簇(cluster):

簇是共享相同数据块的一组表,因为这些表具有相同的列,并且经常一起使用。

当两个或多个表的存储在物理上十分接近时,可以通过簇来提高使用这些表的

SQL联接语句的性能。簇是存储表的方法

应该先创建簇,然后再创建簇中的表,

六.Oracle中的对象类型

1. 抽象数据类型

此类型是包含一个或多个子类型的数据类型,并且这些数据类型并不局限

于标准的oracle数据类型

如:create or replace type t_mm as object(col number(3),

col2 varchar2(20))/

此时可以在创建表时使用该类型,如下

Create table test (aa varchar2(5),bb t_mm, cc number(10))

插入记录:

Insert into test values('cccc', t_mm(1,'col'))

类型声明:

用户定义的数据类型也可以声明为final,not final,instantiable,

not instantiabe

Not final表示允许类型派生子类型。默认是final

create or replace type t_mm as object(col number(3),

col2 varchar2(20)) Not final

not instantiabe表示类型没有构造函数。

2. 可变数组

可变数组有助于在单个行中存储和重复记录的属性。

数据与表中的其它数据是存储在一起的,有限数目的行,不能被索引

创建可变数组的语法是:

create type array1 as varray(5) of varchar2(5)

向可变数组中插入记录

Insert into test1 values ('2ee', array1('1','2','3','4','5') )

Select * from test1 结果集如下

2ee

'1','2','3','4','5'

Select col2 from test1 结果集如下

'1','2','3','4','5'

Select * from table(select t.col2 from test1 where col1='2ee'); 结果集如下1

2

3

4

5

3. 嵌套表

它是包含在表中的表,对每行数据项数目没有限制,一个表在

另一表中是作为一列,主表中的每一行的嵌套表可以包含若干行。

创建嵌套表

先创建一个类型

Create type ord_ty as object(itemcode varchar2(5),qty _ord number(5),

Qty_held number(5));

创建另一个抽象数据类型,即嵌套表数据类型

Create type ord_nt as table of ord_ty

创建嵌套表

Create table order_mas (orderno varchar2(5),odate date,

vencode varchar2(5), dets ord_nt) nested table dets store as ord_nt_tab;

向嵌套表中插入数据:

Insert into order_mas values(‘001’,to_date('18-07-08','DD-MM-YY'), 'V009',ord_nt( ord_ty('i001',10,5),ord_ty('i002',34,2));

更新嵌套表的值:

Update table(select e.dets from order_mas e where e.orderno='001') p

Set value(p) =ord_ty('i090',8,9) where p.itemcode='i001';

删除嵌套表的值:

Delete from table(select e.dets from order_mas e where e.orderno='001') p where p.itemcode='i001';

4. 对象表

在对象表中每一行都是一个行对象,对象表与关系表不同:

对象表中的每一行都有一个OID值,即对象标识符值。该值是在创建行时

分配的。可以使用create table 命令来创建对象表。

在创建对象类型时,Oracle 中是不允许为属性定义约束条件,但是

可以在创建对象表时为对象类型的属性指定约束条件。

Create table vend_master of vend_ty(vencode constraint vc_pk primary key);

创建对象表与关系表语法不同

表的使用方法不同插入数据可以使用抽象数据类型的构造函数,如果对象

表所基于抽象数据类型又基于另一抽象数据类型,则必须多个构造函数的嵌

套调用。

Insert into vend_master values (vend_ty());

5. 对象视图

借助对象视图可以将面向对象的结构(如抽象数据类型)应用于现有已经

投入使用的表,而不需重建整个应用程序

B.PL/SQL與T_SQL语法

一批處理

SQL的能力畢竟有限,諸如事務處理方面,批處理於是oracle與ms 都把它進行了擴展,oracle 的擴展叫PL/SQL由声明部分,可执行部分,异常处理部分组成顺序如下:Declare declarations

Begin

Executable statements

Exception

Handles

End

Ms 的擴展叫Transact_SQL,簡稱T_SQL.

批处理:就是一次执行处理一组命令的过程。GO关键字樗着批处理的结束。

如use master

go

复杂一点也是由三部分組成:声明部分,可执行部分,异常处理部分。

不同的是,異常處理部分一般用跳轉語句來實現。

例如:

Declare declarations

Begin

Excutable statements

IF @ERROR <>0 GOTO ERROR

End

ERROR:

BEGIN

RAISERROR(20058, 16,-1)

return(1)

END

二逻辑控制语句

1. 控制结构:

Oracle

If condition then ........

End if

Case selector

when exp1 then statements

Else statements

End case

SQL SERVER

IF condition

Sql statements

ELSE

Sql statements

Case selector

When ex1 then statements

Else statements

End

2. 迭代结构

oracle

Loop statements end loop;

While condition

Loop statement end loop;

Sql server

While condition

Begin

Sql statement

End

面象对象编程涉及的概念有对象,类,属性和方法,面向对象的三大特性是:

封装,继承和多态。

将数据和函数包装到一个单元中的过程称为封装。不能从外部访问数据,只能包装在类中的那些函数才能访问数据

继承可以是SQL类型的继承和方法的继承。

多态是一个对象可以呈现多种形式的能力,这使得不同的对象可以具有相同的名称的方法,这些方法实现的任务相似,但实现方式却不同。

三.變量與常量

Pl/sql变量与常量可以具有属性,支持的属性类型有

%type,%rowtype

声明引用数据库列或变量的数据类型的变量时,可以使用%type属性。如:

Declare

Variable_name table_name.col_name %type

使用这个优点是,不需要知道列vencode的准确数据类型

%rowtype属性提供表示表中行的记录类型。

四.過程與函數(Procedure & Function)

a. 建立存儲過程的語法不同:

Ms sql 的語法是:

Create procedure procedure_name

(

@Id int =null,

@name varchar(10) out[put]

)

as

[變量定義區]

begin sql_statement end

--------------------------------------------------------------------

CREATE FUNCTION function_name (@DATE datetime)

RETURNS int

AS begin sql statement end

面向對象的特性之一是封裝,程序包就是对相关PL/SQL类型,子程序,游标,异常,变量,和常量的封装,它包含两部分程序包规格说明和程序包主体

在包规格说明书中,可以声明类型,变量,常量,异常,游标,子程序

程序包主体实现在程序包规格中定义的游标、子程序

包頭語法部分:

Create or replace package package_name is|as

Public type and item declarations

Subprogram specifications

End package_name

實例如下:

Create or replace package pack_me is

Procedure order_proc(orno varchar2);

Function order_fun(ornos varchar2) return varchar2;

End pack_me

包體語法部分:

Create or replace package body package_name is|as

Private type and item decarations

Subprogram bodies

End package_name;

包體具體實例就不寫了,包頭隻是起一個聲明作用,具體實現部分都在包體裡面。下面是创建存储过程的语法:

Create [or replace] procedure procedure_name[arg1 in|out|in out]type {is|as} [變量定義區]

Begin

Execute Sql statement

Exception handlers

End

注意:參數列表那裡,oracle是先定義參數是輸入還是輸出參數,然後再定義參數類型; 而sql server正好相反

创建函数的语法:

Create function function_name argument

Return datatype is|as

Local decaration

Begin

Excutable statement

Exception

Handles

End;

b.變量賦值

1. Oracle里的用法:存储过程中边查询边给变量赋值。

select 某一列名into 变量名from table where ..;

相当于sql server中的select 变量名=列. From table where ….

注意:select * /某一列名into 表名

2. Oracle 直接赋值的符号是:' := '

五觸發器(Trigger)

Oracle

Create or replace trigger trigger_name [before/after]

[insert/update/delete] on table_name

变量声明

begin

Sql statement

end

Ms sql

Create trigger trigger_name on table

{for |after|instead of} [insert|update|delete] as sql_statements 六遊標(Curcor)

Oracle中提供两种游标类型,它们是静态游标和ref游标

静态游标又分为隐式游标与显式游标

Ref游标,游标变量是一种引用类型

隐式游标属性包括%notfound,%found,%rowcount,%isopen

如:

Begin

Delete from ta where ord='ddd'

If sql%notfound then

Dbms_output.put_line(''未找到值)

Else

Dbms_output.put_line(找到并删除之)

End if

End

显示游标:可以用下面语句控制游标

Open cursorname

Fetch cursor_name into var_name

Close cursor_name

创建游标语法:

Oracle:

declare variable

Cursor test is select * from order

Sql server

Declare test cursor for select * from order

七 .错误处理(Exception & test & debug)

有两种类型的异常:一种预定义,另外一种是用户自定义

預定義的類型有很多,如No_data_found,Cursor_already_open

對於Oracle的調試,可以借助第三方工具,如toad,Pl.sql Developer,

对于sql server采用变量或者print 形式进行调试

Oracle异常定义部分的示例:

Exception

When then statements

When others then

Statements

End;

其中是系统预定义的名字。

Raiser_application_error用于创建用户定义的错误信息的过程,用户定义的错误消息可以指定的异常描述的更详细

Sql server在错误处理上多采用自定义。或者是用goto跳转的方式

如:

Begin

Sql statements

if @error<>0 goto error

end

Error:

Return;

或是直接用raiserror

if @error<>0

begin

raiserror('发生错误.',-1,-1)

return (1)

end

好了,两者的主要的差异就写到这

ORACLE数据库安全规范

数据库安全规范

1概述 1.1适用范围 本规范明确了Oracle数据库安全配置方面的基本要求。 1.2符号和缩略语 2 ORACLE安全配置要求 本规范所指的设备为ORACLE数据库。本规范提出的安全配置要求,在未特别说明的情况下,均适用于ORACLE数据库。 本规范从ORACLE数据库的认证授权功能和其它自身安全配置功能提出安全要求。 2.1账号 ORACLE应提供账号管理及认证授权功能,并应满足以下各项要求。 2.1.1按用户分配帐号

2.1.2删除或锁定无关帐号 2.1.3用户权限最小化 要求内容 在数据库权限配置能力内,根据用户的业务需要,配置其所需的最小权

限。

grant 权限 to user name; revoke 权限 from user name; 2、补充操作说明 用第一条命令给用户赋相应的最小权限 用第二条命令收回用户多余的权限 业务测试正常 4、检测操作 业务测试正常 5、补充说明 2.1.4使用ROLE 管理对象的权限 1. 使用Create Role 命令创建角色。 2.使用用Grant 命令将相应的系统、对象或 Role 的权限赋予应用用户。 2、补充操作说明 对应用用户不要赋予 DBA Role 或不必要的权限。 4、检测操作 1.以DBA 用户登陆到 sqlplus 中。 2.通过查询 dba_role_privs 、dba_sys_privs 和 dba_tab_privs 等视图来检查 是否使用ROLE 来管理对象权限。 5、补充说明 操作指南 1、参考配置操作 检测方法 3、判定条件 要求内容 使用数据库角色(ROLE )来管理对象的权限。 操作指南 1、参考配置操作 检测方法 3、判定条件

三大主流数据库对比 哪个更有优势

三大主流数据库对比哪个更有优势 Oracle Oracle 能在所有主流平台上运行(包括Windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持,Oracle并行服务器通过使一组结点共享同一簇中的工作来扩展Windows NT的能力,提供高可用性和高伸缩性的簇的解决方案。如果Windows NT不能满足需要,用户可以把数据库移到UNIX中。Oracle 的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。Oracle获得最高认证级别的ISO标准认证.Oracle性能最高,保持开放平台下的TPC-D和TPC-C的世界记录Oracle多层次网络计算,支持多种工业标准,可以用ODBC、JDBC、OCI等网络客户连接。 Oracle 在兼容性、可移植性、可联结性、高生产率上、开放性也存在优点。Oracle产品采用标准SQL,并经过美国国家标准技术所(NIST)测试。与IBM SQL/DS,DB2,INGRES,IDMS/R等兼容。Oracle的产品可运行于很宽范围的硬件与操作系统平台上。可以安装在70种以上不同的大、中、小型机上;可在VMS、DOS、UNIX、WINDOWS等多种操作系统下工作。能与多种通讯网络相连,支持各种协议(TCP/IP、DECnet、LU6.2等)。提供了多种开发工具,能极大的方便用户进行进一步的开发。Oracle良好的兼容性、可移植性、可连接性和高生产率是Oracle RDBMS具有良好的开放性。 Oracle价格是比较昂贵的。据说一套正版的Oracle软件早在2006年年底的时候在市场上的价格已经达到了6位数。所以如果你的项目不是那种超级大的项目,还是放弃Oracle 吧。 SQL Server SQL Server 是Microsoft推出一套产品,它具有使用方便、可伸缩性好、与相关软件集成程度高等优点,逐渐成为Windows平台下进行数据库应用开发较为理想的选择之一。SQLServer是目前流行的数据库之一,它已广泛应用于金融、保险、电力、行政管理等与

ORACLE数据库设计规范

1命名原则 1.1约定 u是指对数据库、数据库对象如表、字段、索引、序列、存储过程等的命名约定; U命名使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割 u避免使用Oracle的保留字如LEVEL、关键字如TYPE (见Oracle保留字和关键字); u各表之间相关列名尽量同名; u除数据库名称长度为1 — 8个字符,其余为1 — 30个字符,Database link 名称也不要超过30个字符; u命名只能使用英文字母,数字和下划线; 1.2表名 规则如下: 命名规则为xxx_yyy_TableName 。xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy 表示子系统中的子模块的名称(可以没有),最多五个字母构成,尽量用简称;TableName 为表含义,最多十个字母构成,尽量用简称 TableName 规则如下: u使用英文单词或词组作为表名,不得使用汉语拼音 u用名词和名词短语作表名 u不使用复数 正确的命名,例如: fiber_sys_user fiber_biz_order 1.3存储过程 规则如下: 命名规则为xxx_yyy_StoredProcedureName 。xxx表示开发公司的名称,最多五个字母构成,尽量用 简称;yyy表示子系统中的子模块的名称(可以没有),最多五个字母构成,尽量用简称;

StoredProcedureName 规则如下: u用动词或动词短语来命名,并带有宾语 u需要符合用Pascal命名规则。 u尽量谨慎地使用缩写 u尽量不要和关键字重合 u不要用任何名前缀(例如U , B) u StoredProcedureName 内不使用下划线 u当操作依赖条件时,一般结尾使用By+条件 存储过程正确的命名,例如: sys_lnsertUser sys_SearchUserByUserlD sys_DeleteUserByUserlD 1.4视图 规则如下: u视图的命名采用xxx_yyy_ ViewName_v 。xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy表示子系统中的子模块的名称(可以没有),最多五个字母构成,尽量用简称;_v后缀表示视图, ViewName 部分表示视图的含义,最多十个字母构成,尽量用简称。 ViewName 规则如下: u用名词和名词短语, u不使用复数 u用Pascal命名规则 u尽量谨慎地使用缩写 u尽量不要和关键字重合 u不要用任何名前缀(例如U,B) u ViewName 中使用下划线 视图正确的命名,例如:

Oracle到mysql转换的问题总结

Oracle 到 mysql 转换的问题总结 常用字段类型区别
oracle number(10,0) number(10,2) varchar2 date Colb mysql int decimal(10,2) varchar datetime text
个别语句写法区别
1.oracle 里只可以用单引号包起字符串,mysql 里可以用双引号和单引号。 2.mysql 在 select * from () ....,from 后面是一个结果集时,括号后面必须 加上别名。 3.mysql 在 delete 数据时不能给表加别名, 如: delete from table1 T where...., 会报错,但是可以这样写:delete T from table1 T where....。 4.Mysql 不支持在同一个表中先查这个表在更新这个表,举个例子说明一下, insert into table1 values (字段 1, (select 字段 2 from table1 where...) ) , 但是可以在后面那个 table1 加上别名就没有问题了。 insert into table1 values (字段 1, (select T.字段 2 from table1 T where...) ) 5.MYSQL 有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据 值。ORACLE 没有自动增长的数据类型,需要建立一个自动增长的序列号,插入 记录时要把序列号的下一个值赋于此字段。也可以自定义函数实现 oracle 的 nextval。 6.翻页的 sql 语句处理, MYSQL 处理翻页的 SQL 语句比较简单,用 LIMIT 开始位 置, 记录个数,例如:select * from table limit m,n,意思是从 m+1开始取 n 条。
常见的函数替换
1.日期转换方面的函数 oracle mysql 说明

三大数据库的区别

1.ORACLE oracle能在所有主流平台上运行(包括 windows)。 Oracle 一般只有一个数据库,可以通过不同 不同用户(模式)的数据库对象名可以相同 2. SQLSERVER SQL Server 是Microsoft推出一套产品,它具有使用方便、可伸缩性好、与相关软件集成程度高等优点,逐渐成为Windows平台下进行数据库应用开发较为理想的选择之一。SQLServer 是目前流行的数据库之一,它已广泛应用于金融,保险,电力,行政管理等与数据库有关的行业.而且,由于其易操作性及友好的界面,赢得了广大用户的青睐,尤其是SQLServer与其它数据库,如Access,FoxPro,Excel等有良好的ODBC接口,可以把上述数据库转成SQLServer的数据库,因此目前越来越多的读者正在使用SQLServer. 3. MYSQL MySQL是开源的,不支持事务处理,没有视图,没有存储过程和触发器,没有数据库端的用户自定义函数,不能完全使用标准的SQL语法。 从数据库行家听说的第一件事就是MySQL缺乏transactions,rollbacks,和subselects的功能。如果你计划使用MySQL写一个关于银行、会计的应用程序,或者计划维护一些随时需要线性递增的不同类的计数器,你将缺乏transactions功能。在现有的发布版本的MySQL 下,请不要有任何的这些想法。(请注意,MySQL的测试版 3.23.x系列现在已经支持transactions了)。 在非常必要的情况下,MySQL的局限性可以通过一部分开发者的努力得到克服。在MySQL中你失去的主要功能是subselect语句,而这正是其它的所有数据库都具有的。换而言之,这个失去的功能是一个痛苦。 MySQL没法处理复杂的关联性数据库功能,例如,子查询(subqueries),虽然大多数的子查询都可以改写成join 另一个MySQL没有提供支持的功能是事务处理(transaction)以及事务的提交(commit)/撤销(rollback)。一个事务指的是被当作一个单位来共同执行的一群或一套命令。如果一个事务没法完成,那么整个事务里面没有一个指令是真正执行下去的。对于必须处理线上订单的商业网站来说,MySQL没有支持这项功能,的确让人觉得很失望。但是可以用MaxSQL,一个分开的服务器,它能通过外挂的表格来支持事务功能。 外键(foreignkey)以及参考完整性限制(referentialintegrity)可以让你制定表格中资料间的约束,然后将约束(constraint)加到你所规定的资料里面。这些MYSQL没有的功能表示一个有赖复杂的资料关系的应用程序并不适合使用MySQL。当我们说MySQL不支持外键时,我们指的就是数据库的参考完整性限制--MySQL并没有支持外键的规则,当然更没有支持连锁删除(cascadingdelete)的功能。简短的说,如果你的工作需要使用复杂的资料关联,那你还是用原来的Access吧。 你在MySQL中也不会找到存储进程(storedprocedure)以及触发器(trigger)。(针对这些功能,在Access提供了相对的事件进程(eventprocedure)。)

oracle11g数据库管理与开发第7章答案.

第7章安全管理 一、填空题 1.Oracle数据库用户口令认证可以采用数据库验证、外部验证、全局验证等几种方式。 2.Oracle数据库概要文件主要用于资源管理、控制口令等。 3.Oracle数据库中的权限分为系统权限和对象权限两种类型,向用户直接授权需要grant权限to用户SQL语句。 4.用户连接Oracle数据库后希望得到角色权限,这有两种实现方法:一种方法是让管理员把角色设置为用户默认角色,另一种方法是向用户授予角色,需调用的SQL语句是grant 角色to用户。 二、简答题 1.简要说明在oracle数据库内普通用户口令认证和管理员口令认证都有哪些方法? 答:oracle数据库普通用户口令认证有以下3种认证方法: (1)数据库认证(2)外部认证(3)全局认证 管理员口令认证有以下3种认证方法: (1)口令文件认证(2)操作系统认证(3)基于网络认证服务认证 2.简述用户通过默认角色和非默认角色获得权限有何异同? 答:用户通过默认角色获得权限时,用户默认角色在用户连接后被自动激活,所以用户不用显式启用角色就可以立即获得它们所具有的权限。而通过非默认角色获得权限时,必须通过命令调用为其授权,才能使非默认角色获权。 三、实训题 1.请创建一个用户books_pub,要求他第一次登录时必须修改口令,将其默认表空间和默认临时表空间分别设置为books_pub和temp,并在表空间users,demots和books_pub上分别为他分配10MB,10MB和50MB的存储空间。 create tablespace books_pub//创建books_pub表 datafile'f:\app\administrator\admin\orcl\hcy_1.dbf'size5M; create tablespace demots//创建demots表 datafile'f:\app\administrator\admin\orcl\hcy_2.dbf'size5M; create user books_pub//创建books_pub用户 identified by123 password expire default tablespace books_pub temporary tablespace temp quota10M on users quota10M on demots quota50M on books_pub; 2.把创建会话的系统权限,以及scott用户dept表和emp表上的所有对象授予用户books_pub。

MySql Oracle SqlServer三大数据库的数据类型列表

MySql Oracle SqlServer三大数据库的数据类型列表MySql数据类型

Oracle数据类型 一、概述 在ORACLE8中定义了:标量(SCALAR)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种数据类型,下面详细介绍它们的特性。 二、标量(SCALAR) 合法的标量类型与数据库的列所使用的类型相同,此外它还有一些扩展。它又分为七个组:数字、字符、行、日期、行标识、布尔和可信。 数字,它有三种基本类型--NUMBER、PLS_INTEGER和BINARY_INTENER。NUMBER可以描述整数或实数,而PLS_INTEGER和BINARY_INTENER只能描述整数。 NUMBER,是以十进制格式进行存储的,它便于存储,但是在计算上,系统会自动的将它转换成为二进制进行运算的。它的定义方式是NUMBER(P,S),P是精度,最大38位,S是刻度范围,可在-84...127间取值。例如:NUMBER(5,2)可以用来存储表示-999.99...999.99间的数值。P、S可以在定义是省略,例如:NUMBER(5)、NUMBER 等; BINARY_INTENER用来描述不存储在数据库中,但是需要用来计算的带符号的整数值。它以2的补码二进制形式表述。循环计数器经常使用这种类型。 PLS_INTEGER和BINARY_INTENER唯一区别是在计算当中发生溢出时,BINARY_INTENER型的变量会被自动指派给一个NUMBER型而不会出错,PLS_INTEGER型的变量将会发生错误。 字符,包括CHAR、VARCHAR2(VARCHAR)、LONG、NCHAR和NVARCHAR2几种类型。 CHAR,描述定长的字符串,如果实际值不够定义的长度,系统将以空格填充。它的声明方式如下CHAR(L),L 为字符串长度,缺省为1,作为变量最大32767个字符,作为数据存储在ORACLE8中最大为2000。 VARCHAR2(VARCHAR),描述变长字符串。它的声明方式如下VARCHAR2(L),L为字符串长度,没有缺省值,作为变量最大32767个字节,作为数据存储在ORACLE8中最大为4000。在多字节语言环境中,实际存储的字符个数可能小于L值,例如:当语言环境为中文(SIMPLIFIED CHINESE_CHINA.ZHS16GBK)时,一个VARCHAR2(200)的数据列可以保存200个英文字符或者100个汉字字符。 LONG,在数据库存储中可以用来保存高达2G的数据,作为变量,可以表示一个最大长度为32760字节的可变字符串。 NCHAR、NVARCHAR2,国家字符集,与环境变量NLS指定的语言集密切相关,使用方法和CHAR、VARCHAR2相同。 行,包括RAW和LONG RAW两种类型。用来存储二进制数据,不会在字符集间转换。 RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。 LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节。 日期,只有一种类型--DATE,用来存储时间信息,站用7个字节(从世纪到秒),绝对没有“千年虫”问题。 行标识,只有一种类型--ROWID,用来存储“行标识符”,可以利用ROWIDTOCHAR函数来将行标识转换成为字符。 布尔,只有一种类型--BOOLEAN,仅仅可以表示TRUE、FALSE或者NULL。 可信,只有一种类型--MLSLABEL,可以在TRUSTED ORACLE中用来保存可变长度的二进制标签。在标准ORACLE 中,只能存储NULL值。 三、复合(COMPOSITE) 标量类型是经过预定义的,利用这些类型可以衍生出一些复合类型。主要有记录、表。 记录,可以看作是一组标量的组合结构,它的声明方式如下: TYPE record_type_name IS RECORD ( filed1 type1 [NOT NULL] [:=expr1] ....... filedn typen [NOT NULL] [:=exprn] ) 其中,record_type_name是记录类型的名字。(是不是看着象CREATE TABLE?......)引用时必须定义相关的变量,记录只是TYPE,不是VARIABLE。 表,不是物理存储数据的表,在这里是一种变量类型,也称为PL/SQL表,它类似于C语言中的数组,在处理方式上也相似。它的声明方式如下:

总结Oracle和Mysql的区别和特点

总结Oracle和Mysql的区别和特点 ------------------------------------------51联盟在线(51lmzx)对于这个问题很多人都有这样问到,在这里我就总结一下给大家: 一,按系统属性:软件系统不一样,都是数据库系统,mysql的优点是开源免费,oracle的优点是有甲骨文公司强大的技术后盾,功能强大,安全、性能、人性化、等各方面都比mysql好。 二,优缺点对比:mysql的缺点就是功能少,面向的对象是一般的小型网站或者系统,大型数据库很少用mysql;oracle的缺点是对硬件的要求十分高,对管理人员的技术要求高。基本上是这样了。 三,对应的客户群体不一样:Oracle 可以使用在大企业、大公司的数据库领域,mysql适用于小群体,或软件集成。 四,其他功能特点:mysql不支持视图;不支持commit-rollback,有效处理commit-rollback将需要完全不同于mysql使用的表布局,mysql也将需要而外的线程在表上做自清工作,而且磁盘用量将更高,而不用它,mysql比几乎所有的其他SQL数据库都快2到4倍,所以小型开发用mysql是很好的。 五,在Oracle中用select * from all_users显示所有的用户,而在MYSQL中显示所有数据库的命令是show databases。对于我的理解,Oracle项目来说一个项目就应该有一个用户和其对应的表空间,而MYSQL项目中也应该有个用户和一个库。在ORACLE(db2也一样)

中表空间是文件系统中的物理容器的逻辑表示,视图、触发器和存储过程也可以保存在表空间中。而MYSQL并没有使用表空间来进行管理。 六,查询当前所有的表。ORACLE:select * from tab,MYSQL:show tables。 七,改变连接用户(库)。ORACLE:conn 用户名/密码@主机字符串,MYSQL:use 库名。 八,显示当前连接用户(库)。ORACLE:show user,MYSQL:connect。九,执行外部脚本命令。ORACLE:@a.sql,MYSQL:source a.sql。

Oracle数据库设计规范建议

Oracle数据库设计规范建议 1 目的 本规范的主要目的是希望规范数据库设计,尽量提前避免由于数据库设计不当而产生的麻烦;同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好的保证。 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。 2 适用范围 本规范的适用人员范围包括我司的所有应用开发人员以及在我司承接数据库应用开发的软件人员。 本规范的适用IT范围包括数据库对象的命名规范、设计原则、SQL语句的设计和使用、SQL语句的性能优化建议、其他与性能有关的设计原则以及设计工具的选择。 3 数据对象的命名规范 3.1 通用规范 3.1.1 使用英文:要用简单明了的英文单词,不要用拼音,特别是拼音缩写。主要目的很明确,让人容易明白这个对象是做什么用的; 3.1.2 一律大写,特别是表名:有些数据库,表的命名乃至其他数据对象的命名是大小写敏感的,为了避免不必要的麻烦,并且尊重通常的习惯,最好一律用大写; 3.2 数据库对象命名规范 3.2.1 表的命名 3.2.1.1 表名的前缀:前缀_表名_T。为表的名称增加一个或者多个前缀,前缀名不要太长,可以用缩写,最好用下划线与后面的单词分开;其目的有这样几个:3.2.1.1.1 为了不与其他项目或者其他系统、子系统的表重名; 3.2.1.1.2 表示某种从属关系,比如表明是属于某个子系统、某个模块或者某个项目等等。表示这种从属关系的一个主要目的是,从表名能够大概知道如何去找相关的人员。比如以子系统为前缀的,当看到这个表的时候,就知道有问题可以去找该子系统的开发和使用人员; 3.2.2 视图命名:相关表名_V(或者根据需要另取名字); 3.2.3 程序包命名:程序包名_PKG(用英文表达程序包意义); 3.2.4 存储过程命名:存储过程名_PRO(用英文表达存储过程意义);

Oracle向Mysql迁移方案

Oracle向Mysql迁移方案 一、可自动迁移部分; 1、表 这个部分的移植是最容易用工具实现的部分,因为很多MySQL的图形管理工具都自带这样的移植工具,比如SQL Yog,MySQL Administrator等。但是,这些工具的移植能力各有不同,对字段类型转换﹑字符集等问题都有自己的处理方式,使用时请注意。 笔者使用“SQL Yog Migration Toolkit”工具按提示步骤移植后,表的主要结构和数据将成功移植,主要包括表的字段类型(经过映射转换,比如number会转换为int,Varchar2会转换为Varchar,date转换为datetime等,请小心处理日期字段的默认值等),表的主键,表的索引(Oracle的位图索引会被转成BTree索引,另外表和字段的注释会丢失)等信息。 注意的是,Oracle的自增字段的处理。大家知道,Oracle通常使用序列sequence 配合触发器实现自增字段,但是MySQL和SQL Server等一样,不提供序列,而直接提供字段自增属性。所以,请把Oracle里面的自增字段实现直接改为MySQL的字段属性,而且,这个字段必须是主键(key)并且不能有默认值。还有一个问题,如果您的应用要直接使用Oracle的某个序列,那么您只能在MySQL里面模拟实现一个,具体方法就是利用MySQL的自增字段实现的。 二、不可自动迁移部分; 视图、过程、函数、触发器 以上对象都是写sql语句进行编程的,两个数据库的有些语法是不一新的,所以这些都要开发人员进行人工修改在mysql中重新创建; 语法区别如下: 视图:mysql中视图不能有子查询,可以把字查询再建一个视 图; 触发器:mysql中触发器中before或after的触发事件(insert、 update、delete)只能有一个,oracle可以有多个; 字符串拼接:oracle直接用’||’,mysql只能用函数’concat’; 判断是否为空:oracle用nvl;mysql用ifnull; 变量定义:oracle可以只写一次DECLARE,Mysql需要在每句前面加 DECLARE 变量赋值:oracle用’:=’,mysql用’=’; 三、Oracle与Mysql几个主要根本区别 1、oracle中的包在mysql中不存在,要全部改成普通的存储过程; 2、用户及权限在oracle中是包含在各自的数据库里,而在mysql是数据库的用户及权 限在一个单独的数据库中(information_schema); 3、Oracle是没有敏感字段,是mysql有,如果有要修改成长非敏感名字; 4、系统架构区别:oracle有主备库,和集群架构(RAC)且RAC是基共享存储的, Mysql有主从复制,和集群架构(ndbcluster),但ndbcluster是非共享 存储的。 四、建立迁移测试环境; 五、迁移实施;

oraclesqlservermysql与db2的比较 - oracle 开发

ORACLE、SQLSERVER、MYSQL与DB2的比较- Oracle 开发 比较SQL Server与Oracle、DB2 出处:不祥 关键词:Sql Server, Oracle, 其他1.选择一个好的数据库是非常重要的。2.如何选择一个好的数据库开放性: SQL Server 只能在windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据量的关键业务时. Oracle 能在所有主流平台上运行(包括windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。DB2 能在所有主流平台上运行(包括windows)。最适于海量数据。DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%. 可伸缩性,并行性 SQL server

DB2 并行实施和共存模型并不成熟。很难处理日益增多的用户数和数据卷。伸缩性有限。Oracle 平行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。如果windowsNT不能满足需要, 用户可以把数据库移到UNIX中。DB2 DB2具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境. 数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日 志。数据库分区有时被称为节点或数据库节点安全性 SQL server 没有获得任何安全证书。Oracle Server 获得最高认证级别的ISO标准认证。DB2 获得最高认证级别的ISO标准认证。性能 SQL Server 多用户时性能不佳Oracle 性能最高,保持windowsNT下的TPC-D和TPC-C的世界记录。DB2 适用于数据仓库和在线事物处理性能较高。客户端支持及 应用模式

Oracle数据库开发规范

项目编号:××× xxx Oracle数据库开发规范 Oracle DB Development Standardization <部门名称> **年**月**日 文档信息: 文档名称: 文档编号: 文档版本日期: 起草人: 起草日期: 复审人: 复审日期: 版本历史: 版本 日期 作者 更改参考 说明

审批信息: 签字/日期 审核 审批 目录 1 概述 4 1.1 编写目的 4 1.2 文档约定 4 1.3 预期的读者和阅读建议 4 1.4 参考文献 5 2 数据库对象命名 6 2.1 命名总体原则 6 2.2 表名 6 2.3 视图 6 2.4 同义词 6 2.5 序列7 2.6 索引7 2.7 存储过程7 2.8 存储函数8 2.9 存储程序包8 2.10 触发器8 2.11 字段8 2.12 其他9 3 设计规范9 3.1 范围9 3.2 表空间9 3.3 字符集10 3.4 主外键约束10 3.5 分区表10 3.6 RAC下的序列设计10 3.7 字段10 3.8 表结构设计11 3.9 索引设计11 3.10 临时表11 4 SQL编写规范 12 4.1 书写规范12 4.2 SQL语句的索引使用13 4.3 SQL语句降低系统负荷 15 5 PL/SQL编程规范18

5.1 书写规范18 5.2 常用数据库操作语句编码规范19 5.3 常用过程控制结构20 5.4 Condition 21 5.5 Cursor 22 5.6 变量定义与赋值22 5.7 过程与函数调用23 5.8 例外处理(Exception) 23 5.9 例外处理的错误消息24 5.10 注释(Comment) 25 5.11 应用调试控制27 5.12 并发控制27 5.13 代码测试、维护29 1 概述 1.1 编写目的 为规范软件开发人员的Oracle数据库开发提供参考依据和统一标准。 1.2 文档约定 说明本文档中所用到的专用术语定义或解释,缩略词定义。 1.3 预期的读者和阅读建议 本文档适用于所有开发员。 1.4 参考文献 列出有关的参考文件,如: a.属于本项目的其他已发表文件; b.本文件中各处引用的文档资料。 列出这些文件的标题、作者,说明能够得到这些文件资料的来源。 2 数据库对象命名 2.1 命名总体原则 本规范所涉及数据库对象主要是指表、视图、同义词、索引、序列、存储过程、函数、触发器等; 命名应使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割;避免使用Oracle的保留字或关键字,如LEVEL和TYPE; 各表之间相关列名尽量同名; 除数据库模式对象名称长度为1-8个字符,其余对象名称均要求不超过30个字符; 命名只能使用大写英文字母,数字和下划线,且以英文字母开头。 2.2 表名 规则:XXX_MMM_DDDD 说明:XXX代表子系统或模块名称(2-3个字母构成); MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有); DDDD为表的简称含义,使用英文单词或词组构成,可包括下划线,但不得使用汉语拼音。 示例:PO_HEADERS_ALL 2.3 视图 规则:XXX_MMM_DDDD_V 说明:XXX代表子系统或模块名称(2-3个字母构成);

mysql和oracle部分格式转换函数的区别

msyql中没有TO_CHAR这样的通用格式转换函数,所以有几个几个不同的格式函数分开使用,我遇到最经常使用的为转换数字格式和转换时间格式: 1. oracle中的to_char(int, text), to_char(float, text), to_char(numeric, text) 作用:将各种类型的数据转换成特定的格式,其中text为想要转换成为的模板,例如9999.999等。 Mysql:format(number,int) ,其中int的值为想要保留的小数位数。 2. oracle中的TO_CHAR(date,yyyymmdd), 作用:将date类型的数据转换成固定格式的的字符串格式,其中yyyymmdd为想要转换成为的日期格式。 Mysql:date_formate(date,’%Y%m%d’)将时间类型字段格式为字符串格式 与上面那个函数功能正好相反的是str_to_date(string,,'%m.%d.%Y')函数,作用是将字符串类型字段格式为date数据,相当于oracle中的to_date函数。 oracle和mysql的星期返回: oracle返回某个日期的星期值的写法是: to_char(to_date(m.ldate,'YYYYMMDD')-1,'d') -- oracle 返回的是星期1到星期7 mysql 的改写方法为 DATE_FORMAT(m.date,'%w') WHEN 0 THEN 7 ELSE DATE_FORMAT'm.nextselldate,' %w') END -- msyql 返回的是星期1到星期0 说到时间,我们经常可以看到,在oracle数据库中把字段的默认值设为插入的当前时间,如: alter table tablename add col date default sysdate 在mysql中获取当前时间的函数为now(),但是不支持将函数设为字段的默认值,所以我们可以使用timestamp来设置为默认时间,如: Alter tablename add column timestamp date DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTA MP 如果有需要的话,可以使用上面提到的date_format函数来将timestamp转换成合适的字符串。格式如下:To_number(varchar2 or char,’format model’) oracle中还有一个经常使用的格式转换函数就是to_number,作用是将一些处理过的按一定格式编排过的字符串变回数值型的格式。其常用格式为: to_number(varchar2 or char,’format model’) 在mysql中我们使用cast()来对这种情况进行处理,但要填适当的类型,例如: cast(char as unsigned int) /*整型*/ cast(char as decimal(10,2)) /*浮点型*/ 同时mysql中的cast()函数还能用取浮点型小数的整数部分,例如cast(-1.002 as int),这对应的是oracle中的trunc()函数

ORACLE数据库学习心得

ORACLE数据库结课论文 一个好的程序,必然联系着一个庞大的数据库网路... 今年我们学习了oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于oracle数据库的一些知识。 1.ORACLE的特点: 可移植性ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。 2.ORACLE的总体结构 (1)ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。 日志文件须有两个或两个以上,用来记录所有数据库的变化,

用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共享区域。 PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。 (3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON (Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。

五大主流数据库比较 (DB2 Oracle MySQL SyBase SQLServer)

一、开放性 1. SQL Server 只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows 平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据库。 2. Oracle 能在所有主流平台上运行(包括windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。Oracle数据库是以结构化查询语言为基础的大型关系数据库,他是用方便逻辑管理的语言来操纵大量有规则的数据的集合,是目前最流行的客户—服务器体系结构的数据库之一。 oracle 的特点: 1),支持多用户,大事务量的事务处理 2),数据安全性和完整性控制 3),提供对于数据库操作的接口 4),支持分布式事务处理 5),可移植性,可兼容性和可连接性 3. Sybase ASE 能在所有主流平台上运行(包括windows)。但由于早期Sybase与OS集成度不高,因此VERSION11.9.2以下版本需要较多OS和DB级补丁。在多平台的混合环境中,会有一定问题。 4. DB2 能在所有主流平台上运行(包括windows)。最适于海量数据。DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%。

5.MySQL Mysql 能在所有主流平台上运行(包括windows)。 二、可伸缩性,并行性 1. SQL server 并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。 2. Oracle 并行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。如果windowsNT不能满足需要,用户可以把数据库移到UNIX 中。Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。 3. Sybase ASE 虽然有DB SWITCH来支持其并行服务器,但DB SWITCH在技术层面还未成熟,且只支持版本12.5以上的ASE SERVER。DB SWITCH技术需要一台服务器充当SWITCH,从而在硬件上带来一些麻烦。 4. DB2 具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境。数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点安全性。 5.Mysql 较强的伸缩性 三、安全认证 1. SQL server

北语 18春《Oracle数据库开发》

18春《Oracle数据库开发》作业_1 一、单选题( 每题4分, 共10道小题, 总分值40分) 1.在Oracle中,关于PL/SQL下列描述正确的是() A. PL/SQL代表Power Language/SQL B. PL/SQL不支持面向对象编程 C. PL/SQL块包括声明部分、可执行部分和异常处理部分 D. PL/SQL提供的四种内置数据类型是character,integer,float,boolean 答案:C 2.当需要删除表,且该表具有外键约束,需要删除表及其外键约束,可以使用如下()类型的SQL语句。 A. DROP TABLE table1 B. DROP TABLE tablel with foreign key C. DROP TABLE tablel1 CASCADE CONSTRAINTS D. DROP TABLE table1 all 答案:C 3.为了启动Oracle数据库实例,Oracle必须读取一个()文件,该文件保存了实例和数据库的配置参数列表。 A. 控制文件 B. 数据文件 C. 参数文件 D. 初始化文件 答案:C 4.()实现了JDBC ResultSet中的所有方法,但与ResultSet不同的是,OracleCachedRowSet 中的数据在Connection关闭后仍然有效。 A. OracleCachedRowSet B. OracleRowSet C. OracleSet D. CachedRowSet 答案:A 5.假设需要给某个客户表Customer的Customer_name列添加注释信息:客户姓名,可以使用如下()方式 A. COMMENT ON TABLE?CUSTOMER?IS?'客户姓名' B. COMMENT ON COLUMN CUSTOMER.CUSTOMER_NAME IS '客户姓名' C. COMMENT ON COLUMN CUSTOMER.CUSTOMER_NAME '客户姓名' D. COMMENT ON COLUMN CUSTOMER.CUSTOMER_NAME '客户姓名' 答案:B

北语20秋《Oracle数据库开发》作业1【标准答案】

20秋《Oracle数据库开发》作业1 试卷总分:100 得分:100 一、单选题 (共 9 道试题,共 36 分) 1.Orcacle提供了(),用于支持采用向导方式创建数据库。 A.SQL*Plus B.Oracle Net C.Oracle Listner D.Oracle Database Configuration Assistant。 答案:D 2.可以自动执行操作的存储对象是() A.程序包。 B.函数。 C.过程。 D.触发器 答案:D 3.在Oracle中,约束可以在DML语句执行之后立即生效,也可以延迟到事务处理提交时才生效。()语句可以让用户在事务处理中设置延迟约束的强制模式 A.set constraint B.set transaction C.take constraint D.take constraint 答案:A 4.Oracle的分区表可以包括多个分区,每个分区都是一个独立的(),可以存放到不同的表空间中。 A.段。 B.盘区。 C.物化视图。 D.数据文件 答案:A 5.初始化参数()指定了实例启动时希望创建的共享服务器进程的数目 A.SHARED_SERVICES。 B.DISPATCHERS。 C.HOST。 https://www.sodocs.net/doc/0017955304.html,_SERVICES 答案:A 6.假设需要格式化作者表AUTHOR查询的列信息,将AUTHOR_ID列名字格式化为“作者编号”,AUTHOR_ID列名字格式化为“作者名称”,AUTHOR_DESC列名字格式化为“作者简介”,可以使用如下()方式 A.FORMAT AUTHOR_ID HEADING ’作者编号’FORMAT AUTHOR_NAME HEADING ’作者名称’FORMAT

相关主题