Oracle与MySQL的一些操作区别
1.主键获取,建表语句
A:Mysql一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,Mysql将自动增长;
CREATE TABLE user
(
id
int(11) NOT NULL
AUTO_INCREMENT COMMENT’编号’,
user_name
varchar(40) NOT NULL COMMENT’姓名’,
password
varchar(255) NOT NULL COMMENT’密码’,
creat_time
date NOT NULL COMMENT’创建时间’ ,
last_modified_time
timestamp(6) default
current_timestamp(6) on update current_timestamp(6) NOT NULL COMMENT’修改时间’ ,
PRIMARY KEY (id
)
) ENGINE=InnoDB
DEFAULT CHARSET=utf8 COMMENT’信息表’ ;
CREAT INDEX IDX_
ast_modified_time ON user (last_modified_time);
B:Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。
CREATE TABLE USER (
ID VARCHER(20) NOT NULL ,
NAME varchar(40) NOT NULL,
PASSWORD varchar(255) NOT NULL ,
CREAT_TIME timestamp(6) NOT NULL ,
LAST_MODIFIED_TIME timestamp(6) default current_timestamp(6)
NOT NULL,
CONSTRAINT USER_PK PRIMARY KEY (id
)
)
tablespace
XXDAT_TBS
COMPRESS;
CREAT INDEX USER_
ast_modified_time ON USER
LOCAL (last_modified_time DESC)
TABLESPACE XXIDX_TBS;
授权
GRANT ALL ON USER TO ORACLEUSER;
COMMENT ON TABLE USER IS ’信息表’;
COMMENT ON COLUMN USER. ID IS
‘编号’;
COMMENT ON COLUMN USER. NAME
IS ‘姓名’;
COMMENT ON COLUMN USER. PASSWORD
IS ‘密码’;
COMMENT ON COLUMN USER. CREAT_TIME
IS ‘创建时间’;
COMMENT ON COLUMN USER. LAST_MODIFIED_TIME
IS ‘修改时间’;
序号
CREAT sequence USER_SEQ
INCREMENT by 1
START with 10000000
MINvalue 10000000
MAXvalue 99999999
CACHE 100
CYCLE;
GRANT ALL ON USER_SEQ TO ORACLEUSER;
2.单引号的处理
MYSQL里可以用双引号包起字符串,
ORACLE里只可以用单引号包起字符串。
3.翻页的SQL语句的处理
MYSQL处理翻页,用LIMIT 开始位置, 记录个数;
格式:select * from user limit firstIndex(起始位置),pageSize(每页数量)
ORACLE处理翻页,每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<xxx, 不能用ROWNUM>xxx
格式:select * from(select
a.*,ROWNUM rn from(user) a where ROWNUM<=(20)) where
rn>0
4.数据库varchar中文长度
MySQL中varcher(10)可以存10个中文,与编码无关;
Oracle中,varcher2存中文,GBK一个中文占2个字节,UTF_8占3个字节;
5.数据字段超常问题;
当字段varcher(3),保存‘abcd’;
MySQL会成功取‘abc’;
Oracle会报错;
6.使用mybatis插入空值到Oracle问题
使用mybatis插入空值到Oracle数据库会报无效的列类型异常,需要加jdbcType=VARCHER;
MySQL不会;
7.字符串模糊查询
Mysql里用 字段名 like ‘%字符串%’;
Oracle里也可以用 字段名 like ‘%字符串%’ 但这种方法不能使用索引, 速度不快;
8.空间区别
在Mysql中,一个用户下可以创建多个库:
而在Oracle中,Oracle服务器是由两部分组成
数据库实例【理解为对象,看不见的】
数据库【理解为类,看得见的】
一个数据库实例可拥有多个用户,一个用户默认拥有一个表空间。
表空间是存储我们数据库表的地方,表空间内可以有多个文件。
当我们使用Oracle作为我们数据库时,我们需要指定用户、表空间来存储我们所需要的数据