mysql与oracle的区别-2_第1页
mysql与oracle的区别-2_第2页
mysql与oracle的区别-2_第3页
mysql与oracle的区别-2_第4页
mysql与oracle的区别-2_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 组函数用法规则组函数用法规则 mysql 中组函数在 select 语句中可以随意使用 但在 oracle 中如果查询语句中有组函数 那其他列名必须是组函数处理过的 或者是 group by 子句中的列否则报错 eg select name count money from user 这个放在 mysql 中没有问题在 oracle 中就有问题 了 2 自动增长的数据类型处理自动增长的数据类型处理 MYSQL 有自动增长的数据类型 插入记录时不用操作此字段 会自动获得数据值 ORACLE 没有自动增长的数据类型 需要建立一个自动增长的序列号 插入记录时要把序 列号的下一个值赋于此字段 CREATE SEQUENCE 序列号的名称 最好是表名 序列号标记 INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE 其中最大的值按字段的长度来定 如果定义的自动增长的序列号 NUMBER 6 最大值为 999999 INSERT 语句插入这个字段值为 序列号的名称 NEXTVAL 3 单引号的处理单引号的处理 MYSQL 里可以用双引号包起字符串 ORACLE 里只可以用单引号包起字符串 在插入和 修改字符串前必须做单引号的替换 把所有出现的一个单引号替换成两个单引号 4 翻页的翻页的 SQL 语句的处理语句的处理 MYSQL 处理翻页的 SQL 语句比较简单 用 LIMIT 开始位置 记录个数 PHP 里还可以 用 SEEK 定位到结果集的位置 ORACLE 处理翻页的 SQL 语句就比较繁琐了 每个结果 集只有一个 ROWNUM 字段标明它的位置 并且只能用 ROWNUM80 以下是经过分析后较好的两种 ORACLE 翻页 SQL 语句 ID 是唯一关键字的字段名 语句一 SELECT ID FIELD NAME FROM TABLE NAME WHERE ID IN SELECT ID FROM SELECT ROWNUM AS NUMROW ID FROM TABLE NAME WHERE 条件1 ORDER BY 条件2 WHERE NUMROW 80 AND NUMROW 80 AND NUMROW SUBDATE NOW INTERVAL 7 DAY ORACLE 找到离当前时 间7天用 DATE FIELD NAME SYSDATE 7 MYSQL 中插入当前时间的几个函数是 NOW 函数以 YYYY MM DD HH MM SS 返回当 前的日期时间 可以直接存到 DATETIME 字段中 CURDATE 以 YYYY MM DD 的格式 返回今天的日期 可以直接存到 DATE 字段中 CURTIME 以 HH MM SS 的格式返回当 前的时间 可以直接存到 TIME 字段中 例 insert into tablename fieldname values now 而 oracle 中当前时间是 sysdate 7 空字符的处理空字符的处理 MYSQL 的非空字段也有空的内容 ORACLE 里定义了非空字段就不容许有空的内容 按 MYSQL 的 NOT NULL 来定义 ORACLE 表结构 导数据的时候会产生错误 因此导数据 时要对空字符进行判断 如果为 NULL 或空字符 需要把它改成一个空格的字符串 8 字符串的模糊比较字符串的模糊比较 MYSQL 里用字段名 like 字符串 ORACLE 里也可以用字段名 like 字符串 但这种 方法不能使用索引 速度不快 用字符串比较函数 instr 字段名 字符串 0会得到更精确 的查找结果 9 程序和函数里 操作数据库的工作完成后请注意结果集和指针的释放 程序和函数里 操作数据库的工作完成后请注意结果集和指针的释放 Oracle 和 mysql 的一些简单命令对比 1 SQL select to char sysdate yyyy mm dd from dual SQL select to char sysdate hh24 mi ss from dual mysql select date format now Y m d mysql select time format now H i S 日期函数 增加一个月 SQL select to char add months to date 20000101 yyyymmdd 1 yyyy mm dd from dual 结果 2000 02 01 SQL select to char add months to date 20000101 yyyymmdd 5 yyyy mm dd from dual 结果 2000 06 01 mysql select date add 2000 01 01 interval 1 month 结果 2000 02 01 mysql select date add 2000 01 01 interval 5 month 结果 2000 06 01 截取字符串 SQL select substr abcdefg 1 5 from dual SQL select substrb abcdefg 1 5 from dual 结果 abcdemysql select substring abcdefg 2 3 结果 bcd mysql select mid abcdefg 2 3 结果 bcd mysql select substring abcdefg 2 结果 bcdefg mysql select substring abcdefg from 2 结果 bcdefg 2 在 MySQL 中 from 后的表如果是 select 这种 那么后面必须有别名 3 连接字符串在 Oracle 中用 SqlServer 中用 MySQL 中用 concat a b c 4 在 SqlServer 中的写法 复制代码代码如下 declare id varchar 50 set id 4028e4962c3df257012c3df3b4850001 select from sims sample detect where ID id 在 MySQL 中的写法 复制代码代码如下 set a 189 select from bc article where id a 不用 declare 在 Orcale 中的写法 5 MySQL 存储过程 复制代码代码如下 DELIMITER DROP PROCEDURE IF EXISTS SIMS transaction delSampleInfo CREATE DEFINER root PROCEDURE transaction delSampleInfo in sampleInfoId varchar 50 BEGIN start transaction update sims sample info set del 1 where ID sampleInfoId update sims sample detect set del 1 where SAMPLE ID PARENT sampleInfoId update sims sample detect info set del 1 where DETECT ID in select ID from sims sample detect where SAMPLE ID PARENT sampleInfoId commit END DELIMITER 变量名不能跟列名相同 否则效果为 1 1 且 MySQL 不区分大小写 6 mysql 游标 mysql 没有像 orcale 的动态游标 只有显示游标 例子如下 复制代码代码如下 DELIMITER DROP PROCEDURE IF EXISTS test liyukun CREATE DEFINER ids localhost PROCEDURE liyukun out z int BEGIN declare count1 int DECLARE done INT DEFAULT 0 declare v haoma varchar 50 declare v yingyeting varchar 100 DECLARE cur1 CURSOR FOR select haoma yingyeting from eryue where idFROM 子句 WHERE 子句 GROUP BY 子句 HAVING 子句 ORDER BY 子句 SELECT 子句 LIMIT 子句 最终结果 每个子句执行后都会产生一个中间结果 供接下来的子句使用 如果不存在某个子句 就 跳过 14 LPAD 函数 1 在 oracle 的数据库里有个函数 LPAD String a int length String addString 2 作用 把 addString 添加到 a 的左边 length 是返回值的长度 3 例子 复制代码代码如下 A SQL select lpad test 8 0 from dual LPAD TEST 8 0 0000test B select lpad test 8 from dual LPAD TEST 8 test 注 不写最后一个参数 函数会默认在返回值左边加一个空格 C SQL select lpad test 2 0 from dual LPAD TEST 2 0 te D SQL select lpad test 3 from dual LPAD TEST 3 tes 15 Orcale 中没有 TOP 是通过 select from select from A order by id desc where rownum 1 注 不能直接写 select from A where rownum 1 order by id desc 因为语句执行的顺序是先 where 再 order by 如果这样写就无法按 id 的排序来取第一个了 不能写 rownum 2 或 rownum 1 这样 因为 Orcale 默认必须包含第一条 如果非要取第二条的话 可以写成 复制代码代码如下 select from select id rownum as row num from lws q bl result r where r sample id B10226072 where row num 2 16 Orcale MySql while 循环比较 Orcale 复制代码代码如下 while num 10 loop str to char num num num 1 end loop 也可以 复制代码代码如下 for num in 1 10 这样的缺陷是无法间隔取值 loop str to char num end loop mysql 复制代码代码如下 while num 10 do str to char num num num 1 end while 17 orcale 生成唯一序列是 select sys guid from dual mysql 是 select uuid from dual 18 MySql 和 Orcale 的 ID 自增 MySql 由于是在数据库中实现 ID 自增 所以如果想返回插入一条序列的该条 ID 只能用 如下方法 复制代码代码如下 public int insertSign final SpaceSign sign throws Exception try KeyHolder keyHolder new GeneratedKeyHolder final String sql insert into space sign userId userName nickName contentText contentHtml isPublic commentCount userIp status insertTime values template update new PreparedStatementCreator public PreparedStatement createPreparedStatement Connection connection throws SQLException PreparedStatement ps connection prepareStatement sql Statement RETURN GENERATED KEYS ps setInt 1 sign getUserId ps setString 2 sign getUserName ps setString 3 sign getNickName ps setString 4 sign getContentText ps setString 5 sign getContentHtml ps setInt 6 sign getIsPublic ps setInt 7 sign getCommnetCount ps setString 8 sign getUserIp ps setInt 9 sign getStatus ps setTimestamp 10 new java sql Timestamp sign getInsertTime getTime return ps

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论