MSSQL和ORACLE的区别
更新时间:2023-11-01 00:43:01 阅读量: 综合文库 文档下载
SQL和ORACLE的区别 一
1.字符串链接 - SQL: 用 + 链接 - ORACLE: 用 || 链接 2.变量定义
- SQL: 用 @ 前缀 - ORACLE: 无特殊用法 3.SELECT INTO
- SQL: Select @var = column ... - ORACLE: Select column into ar ... 4.日期转换
- SQL: convert(char(10), getdate(), 111) - ORACLE: to_char(sysdate, 'yyyy/mm/dd') 5.日期比较
- SQL: 允许和字符比较,如 getdate()>'2009.1.1' - ORACLE: 不允许,必须先用TO_DATE转换 6.日期运算
- SQL: 可用DateDiff运算,如DateDiff(Day, date1, date2)
- ORACLE: 用trunc(date2-date1),如果是月份可以用months_between(date1, date2) 7.日期运算2
- SQL: 可用DateAdd运算,如DateAdd(month, date1, 3)
- ORACLE: 如果是日,可以直接用date1 + 3表示,如果是月份,则:add_month(date1, 3) 8.假表 - SQL: 无 - ORACLE: dual 9.DML
- SQL: 可在T-SQL中建表 - ORACLE: 不能在存储过程中建表 10.存储过程
- SQL: 无结尾符号 - ORACLE: 用;结尾 11.存储过程2
- SQL: IF语句无对应的THEN语句 - ORACLE: 有THEN语句 12.存储过程2
- SQL: 赋值语句:select @var = xxx; - ORACLE: var := xxx 13.序列
- SQL: 无序列,但有自增ID字段 - ORACLE: 有序列
SQL中的全局变量
1> @@rowcount: 前一条命令处理的行数
2> @@error: 前一条SQL语句报告的错误号 3> @@trancount: 事务嵌套的级别 4> @@transtate: 事务的当前状态
5> @@tranchained: 当前事务的模式(链接的(chained)或非链接的) 6> @@servername: 本地SQL SERVER的名称 7> @@version : SQL SERVER和O/S的版本级别 8> @@spid: 当前进程的id
9> @@identity: 上次insert操作中使用的identity值 10> @@nestlevel: 存储过程/触发器中的嵌套层 11> @@fetch_status: 游标中上条fetch语句的状态
内置函数对比(第一个是SQL的,第二个是ORACLE的) 1.字符串函数 Ascii(char_exp) Ascii(str_exp) Char(int_exp) Chr(int_exp) Datalength(char_exp) Length(str_exp)
Substring(exp, start, length) Substr(exp, start, length) Upper(char_exp) Upper(str_exp) Lower(char_exp) Lower(str_exp)
Stuff(char_exp1,start,length, Char_exp2)
Translate(str_exp,from_str,to_str) Ltrim(char_exp)
Ltrim(str_exp1 [,str_exp2]) Rtrim(char_exp)
Rtrim(str_exp1 [,str_exp2])
2.日期函数 Getdate() Sysdate
3.数学函数 Abs(numeric_exp) Abs(number_exp) Ceiling(numeric_exp) Ceil(number_exp) Exp(float_exp) Exp(number_exp)
Floor(numeric_exp) Floor(number_exp) Power(numeric_exp,int_exp) Power(number_exp1,number_exp2) Round(numeric_exp,int_exp) Round(number_exp1 [,number_exp2]) Sign(int_exp) Sign(number_exp) Sqrt(float_exp) Sqrt(number_exp)
3.转换函数
Convert(datatype[(length)],exp,format) To_char(datatype,str_format)
Convert(datatype[(length)],exp,format)s To_date(str_exp,date_format) Convert(datatype[(length)],exp,format) To_number(str_exp,num_format)
4.聚合函数
AVG([ALL | DISTINCT] col) AVG([ALL | DISTINCT] col) COUNT({[ALL | DISTINCT] col] | *}) COUNT({[ALL | DISTINCT] col} | *)) MAX([ALL | DISTINCT] col) MAX([ALL | DISTINCT] col) MIN([ALL | DISTINCT] col) MIN([ALL | DISTINCT] col) SUM([ALL | DISTINCT] col) SUM([ALL | DISTINCT] col) STDEV(col) STDDEV(col) VAR(col) VARIANCE(col)
5.其它函数
ISNULL(check_exp, replace_value) NVL(check_exp, replace_value) CASE DECCODE
数据类型对比(第一个是SQL的,第二个是ORACLE的) 1.数字类型
DECIMAL[(P[, S])]
NUMBER[(P[, S])] NUMERIC[(P[, S])] NUMBER[(P[, S])] FLOAT[(N)] NUMBER[(N)] INT NUMBER SMALLINT NUMBER TINYINT NUMBER MONEY NUMBER[19,4] SMALLMONEY NUMBER[19,4]
2.字符类型 CHAR[(N)] CHAR[(N)] VARCHAR[(N)] VARCHAR2[(N)]
3.日期时间类型 DATETIME DATE
SMALLDATETIME DATE 4.其它 TEXT CLOB IMAGE BLOB BIT
NUMBER(1)
MSSQL和ORACLE的区别 二
S代表: SQL Server O代表: ORACLE
1.绝对值
S:select abs(-1) value
O:select abs(-1) value from dual
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual 3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) value from dual 4.取整(截取)
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from dual 5.四舍五入
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from dual 1.2346 6.e为底的幂
S:select Exp(1) value 2.7182818284590451 O:select Exp(1) value from dual 2.71828182 7.取e为底的对数
S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from dual; 1 8.取10为底对数
S:select log10(10) value 1
O:select log(10,10) value from dual; 1 9.取平方
S:select SQUARE(4) value 16
O:select power(4,2) value from dual 16 10.取平方根
S:select SQRT(4) value 2
O:select SQRT(4) value from dual 2 11.求任意数为底的幂
S:select power(3,4) value 81
O:select power(3,4) value from dual 81 12.取随机数
S:select rand() value
O:select sys.dbms_random.value(0,1) value from dual; 13.取符号
S:select sign(-8) value -1
O:select sign(-8) value from dual -1 ----------数学函数 14.圆周率
S:SELECT PI() value 3.1415926535897931 O:不知道
15.sin,cos,tan 参数都以弧度为单位
例如:select sin(PI()/2) value 得到1(SQLServer) 16.Asin,Acos,Atan,Atan2 返回弧度
17.弧度角度互换(SQLServer,Oracle不知道)
# groupadd oinstall /*建立群组*/ # groupadd dba /*建立群组*/
# mkdir -p /export/home/oracle /ocfs /*建立目录 -p 建立上级目录*/
# useradd -d /export/home/oracle -g oinstall -G dba -s /bin/ksh oracle /*建立用户 -g|-G建立上级目录 -d指定用户登入时的启始目录*/
# chown oracle:dba /export/home/oracle /u01 /*更改群组目录*/ # passwd oracle New Password:
Re-enter new Password:
passwd: password successfully changed for oracle /*该密码就不用多说了把*/ 创建 oracle 用户环境文件。 /export/home/oracle/.profile
然后添加环境变量 export 添加变量命令export [变量名称]=[变量设置值] export PS1=\export EDITOR=vi
export ORACLE_SID=devdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1 export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/bin: /usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin umask 022umask [-S][权限掩码]
创建文件系统目录结构。以 oracle 用户身份执行 rac1-> mkdir p $ORACLE_BASE/admin rac1-> mkdir p $ORACLE_HOME rac1-> mkdir p $ORA_CRS_HOME rac1-> mkdir -p /u01/oradata/devdb
今天是周末晚上到家了 听着歌 写一点关于备份存储方面的不同吧 先说下mssql 吧
看下面的命令先
backup database card /*备份数据库 card 是库名*/ to disk = 'c:\\card.bak' /*这是说备份到哪里了*/
restore filestonly /*这是还原数据库内的文件数及名称*/ form disk = 'c:\\card.bak'
restore database card2 /*改变数据库的名称*/
from disk = 'c:\\card.bak' /*还用的是原来那个card数据库*/
with more 'card' to 'c:\\card2.mdf' /*把card2的数据库存到这个地方*/ more 'card' to 'c:\\card2.log' /*把card2的日志文件存到这里*/
这是masql的的备份方法 上面这个 改变了 还原的数据的库的名称和存放地方 可以用到数据太大 硬盘空间不够 只能转存倒新的分区上面 另外说几个特殊的命令 RESTORE FILELISTONLY
返回由备份集内包含的数据库和日志文件列表组成的结果集。上面用到了 万一在还原时候 突然的原因关机了 停电了 该怎么办 要用倒restar 本人没有用过 只是听说过这个东西 RESTORE DATABASE MyNwind FROM MyNwind_1
WITH RESTART /*restar就是用到这里*/ GO
另外还要说一下 有怎么一个情况 看下面的几个语句就说的是完整数据库备份后进行差异数据库备份 restore database mysql from mysql2
with norecovery /*norecory 这个要注意*/ restore database mysql from mysql2
with flie = 2 /*file 标识要还原的备份集。file 后面为 1 表示备份媒体上的第一个备份集,file后面 为 2 表示第二个备份集*/
norecory 当还原数据库备份和多个事务日志时,或在需要多个 RESTORE 语句时(例如在完整数据库备份后进行差异数据库备份),SQL Server 要求在除最后的 RESTORE 语句外的所有其它语句上使用 WITH NORECOVERY 选项。
好了 mssql 备份还原就说到这里了 下面该 oracle的 plsql了中的逻辑备份命令 数据导出备份:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中 exp system/manager@TEST file=d:daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:daochu.dmp ōwner=(system,sys) 3 将数据库中的表inner_notify、notify_staff_relat导出
exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以\打头的数据导出
exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=\数据的导入
1 将D:daochu.dmp 中的数据导入 TEST数据库中。 imp system/manager@TEST file=d:daochu.dmp
imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 在后面加上 ignore=y 就可以了。 2 将d:daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:daochu.dmp tables=(table1)
基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。
linux下使用 Oracle 恢复管理器 (RMAN) 备份和恢复 Oracle RAC 数据库的过程与单实例数据库的备份和恢复过程相同。
下面说个简单的备份恢复的例子 先看下步骤 1. 执行完整的数据库备份。
2. 在 test_d 表空间中创建 mytable 表。 3. 在 t1 时间,向 mytable 中插入第一个记录。 4. 在 t2 时间,向 mytable 中插入第二个记录。 5. 在 t3 时间,删除 mytable 表。 6. 将 test_d 表空间恢复到某个时间点。 7. 验证恢复结果。
执行完整的数据库备份。
rac1-> rman nocatalog target / /*进入rman*/
Recovery Manager: Release 10.2.0.1.0 - Production on Mon Nov 13 18:15:09 2006 Copyright (c) 1982, 2005, Oracle. All rights reserved. connected to target database: DEVDB (DBID=511198553)
using target database control file instead of recovery catalog 蓝色的没有用 RMAN> configure controlfile autobackup on; /*打开自动备份 备份到默认文件夹*/
RMAN> backup database plus archivelog delete input;/*备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志*/
/*input 会删除3种文件:归档日志、datafile copy还有backup set。也就是对这三种文件在进行备份时可以在备份结束之后把备份源删除。其他种类的不会删除。补充一点,如果是删归档日志:delete input只删除一个dest下的源归档日志 delete all input会把所有归档dest下的相应日志都删掉 */
在 test_d 表空间中创建 mytable 表。
19:01:56 SQL> connect system/oracle@devdb2 Connected.
19:02:01 SQL> create table mytable (col1 number) tablespace test_d; Table created.
在 t1 时间,向 mytable 中插入第一个记录。 19:02:50 SQL> insert into mytable values (1); 1 row created.
19:02:59 SQL> commit;/*提交命令*/ Commit complete.
在 t2 时间,向 mytable 中插入第二个记录。 19:04:41 SQL> insert into mytable values (2); 1 row created.
19:04:46 SQL> commit;
Commit complete.
在 t3 时间,删除 mytable 表。 19:05:09 SQL> drop table mytable; Table dropped.
将 test_d 表空间恢复到某个时间点。 为辅助数据库创建辅助目录。 rac1-> mkdir /u01/app/oracle/aux
RMAN> recover tablespace test_d /*还原命令*/
2> until time \
3> auxiliary destination '/u01/app/oracle/aux'; /*辅助文件暂存地(auxiliary destination)即辅助集所包含的对象在rman transport tablespace命令执行过程中物理存放的位置,执行完之后这些文件会被删除。*/ RMAN> backup tablespace test_d;
RMAN> sql 'alter tablespace test_d online'/*使oracle的tablespace test_d 在线 就是启用*/ 验证恢复结果。
19:15:09 SQL> connect system/oracle@devdb2 Connected.
19:15:16 SQL> select * from mytable; COL1 ---------- 1
前面扯太远了 后面拉回来 还是说 sql的不通 不说rman了 用了一个例子介绍plsql简单语法 set serveroutput on 允许服务器输出 declear 定义局部变量 maxrecords constant int:=100; i int:=1;
begin 运行局部变量 for i in 1..maxrecords loop
正在阅读:
MSSQL和ORACLE的区别11-01
书中的情感作文600字07-17
第三章习题与思考题参考答案03-22
第三章 精馏作业及复习思考题10-17
熔模铸造浇注系统设计探讨05-12
公司企业邮箱名录08-11
各省军区独立师历史沿革04-25
河南省中考生物真题试卷-精选学习文档03-11
进一步深化司法体制改革03-20
- 党课
- 抽水试验方案
- 吴赣昌版高数第六章定积分的应用
- 广东省国土资源厅关于“三旧”改造工作实施意见的通知
- 华南理工 网络网上学习指南随堂练习
- 摩西的休妻律法和耶稣的休妻论
- 《清稗类钞》着述类 性理类 经术类
- 责任心是加强执行力建设的关键
- 数字高清COFDM车载无线图像传系统
- 2011年中考思想品德热点专题
- 2016年云南省中考物理试卷
- 2017中考语文专项复习 现代文阅读专题
- C区施工组织设计(400T) - 图文
- 房屋维修施工组织设计
- 七年级英语(上)一二单元检测(含听力)
- 10年嘉祥三诊测试 - 图文
- 借鉴行为主义学习观,提升文言文教学效率
- IX35提车检查表
- 辽宁省信息系统集成服务商名录2018版1241家 - 图文
- 仿人型机器人总体及臂手部结构设计7
- 区别
- ORACLE
- MSSQL
- 数学建模lingo程序解决会议分组问题
- 毕业生应具备的能力和素质
- 八年级上册语文期末试卷与答案
- 风压监测记录报警装置(1)
- 试论劳动争议调解和劳动争议仲裁的异同
- 2018-2019学年天津市河西区高中学业水平模拟考试物理试题
- 如何有效开展幼儿园的体育活动
- XX年pep六年级英语下册第四单元导学案
- 俗语中的哲理选择题集锦
- 《精细的描写》说课稿
- 2019年中考物理试题分类汇编 - 功与机械能专题3%28word版含答案%29
- 中国文化与缅甸
- 沪昆大桥承台、桥墩测量方案
- 第9章 钢筋混凝土构件的变形、裂缝验算及耐久性
- 北大光华管理学院2012年硕士研究生考研复试名单-新祥旭考研辅导
- 作文议论文如何进行反面论证
- 实习报告正文 - 图文
- 新峰场镇风貌改造情况汇报
- 谈谈多元化校本课程成果展示平台的搭建
- 学会说话