MySql和Oracle的区别
mysql中有2种日期格式DATE和TIME,oracle只有一种日期格式DATE。
oracle> select to_char(sysdate,'yyyy-mm-dd') from dual;
oracle> 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');
2.MySql和Oracle修改字段长度或类型
oracle>ALTER TABLE tableName modify column columnName 类型;
mysql>ALTER TABLE tableName modify(columnName 类型);
3.组函数规则不一样
mysql中组函数在select语句中可以随意使用。但在oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是group by子句中的列否则报错。
例如:oralce>select name,count(money) from user group by name;
mysql>select name,count(money) from user;
4.自增长和序列
mysql有自增长类型,自增长列的值会依次自动增加,不需要操作。但oracle没有自增长类型,oracle有序列号,序列号需要手动添加才行。
oracle>create sequence customer_id_seq increment by 2 start with 1
oracle>create table customer(id int primary key not null, name varchar(15));
oracle>insert into customer values(customer_id_seq.curval, "name1"),(customer_id_seq.nextval, "name2");
mysql>create table customer(id int auto_increment primary key not null, name varchar(15));
mysql>insert into customer(name) values("name1"),("name2");
5.引号的处理
mysql可以处理双引号和单引号包裹的字符串,而oarcle则只能处理是单引号包裹的字符串
oracle>select * from user where name='张三';
mysql>select * from user where name="张三";
6.分页
mysql的分页比较简单,可以用limit startNum,pageNum即指定起始位置和一页的数据量来实现。
oracle的分页则必须使用rownum来表明分页位置,而且rownum只能小于某值,不能大于某值,故而rownum和where联用才能完成数据范围的控制,where<=页数<=rownum值。
oracle>
SELECT *
FROM (SELECT tt.*, ROWNUM AS rowno
FROM ( SELECT t.*
FROM emp t
WHERE hire_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')
AND TO_DATE ('20060731', 'yyyymmdd')
ORDER BY create_time DESC, emp_no) tt
WHERE ROWNUM <= 20) table_alias
WHERE table_alias.rowno >= 10;
mysql>
SELECT t.* FROM emp t limit 10,10
7.空字符串比较
mysql中的空值内容可以是空字符串,但oracle的空值只能是null,不能包含空字符串。
8.模糊查询比较
mysql和oarcle都可以用 字段名 like %str% 来进行模糊查询,但是oracle使用like查询时不能使用索引。
上一篇: SQL必知必会知识点