oracle与mysql的区别
1、列类型区别
oracle:可变长度varchar2、浮点型number,小数浮点型number(m,n),可变二进制数据raw,大对象类型(存储无结构数据,最大4G)lob
mysql:可变长度varchar、浮点型float、double、小数decimal(m,n),可变二进制数据blob
2、约束(NOT NULL 非空约束、UNIQUE 唯一约束、PRIMARY KEY 主键约束 ,FOREIGN KEY 外键约束,CHECK 检查约束)
oracle:多了CHECK(检查约束),eg:constraint gen_ch check(gender in ('male','female'))
3、序列(mysql没有,因为mysql有自增AUTO_INCREMENT,而oracle需要新增序列seq然后再用seq.nextval来记录id)
4、同义词(别名)
oracle:create synonym t for a.table;
mysql:select * from table as t;
5、查询表(当select 1;时没表时,oracle需加上from dual)
oracle:select 1 from dual;
6、列别名(oracle暂无)
mysql:select column as c from table;
7、分页
oracle:虚拟列(rownum)
mysql:select * from table limit 2,1;
8、全外连接(mysql没有)
oracle:full outer join
9、索引
oracle:创建基本一样,但是查询索引不一样,eg:select * from user_ind_columns;
mysql:show create table t;
9、事务(oracle不允许不用事务。相同点隐式提交遇到DDL或DCL语句,或退出系统会隐式提交)
oracle:可以设置保存点,及部分回滚,eg:savepoint s1;rollback to s1;
mysql:需要start transaction;
10、pl/sql
11、储存过程、函数(oracle多了关键词is)
12、游标
oracle:c%isopen 判断是否打开游标,c%rowcount 当前fetch得到的行,c%found 上次fetch得到的数据 c%notfound 与found相反
13、触发器
mysql:新数据表示(new)
oracle:新数据表示(:new)
14、php连接数据库
mysql:mysqli扩展
oracle:oci8扩展