以下是oracle和mysql常用语法上的不同,大家有补充的可以留言,我会加上去!!!!
/*
数据库:
mysql可以自己创建数据库,oracle不能创建数据库,只能创建的是实例。
sql语句创建:
create database 数据库名;
create database 数据库名 character set 字符集;
*/
create database j0815_2;
create database j0815_3 CHARACTER set utf-8;
--查看数据库
show databases;
show CREATE database j0815_2;
--删除数据库
drop database j0815_3;
--切换数据库
use j0815_1;
--查看正在使用的数据库
select database();
/*
表:
mysql:
1、mysql 没有number、varchar2()类型;
2、mysql是可以自定义自动增长:auto_increment;
3、mysql有double
oracle:
1、oracle没有double,有int类型,但是number来取代
2、oracle不允许自定义自动增长:auto_increment; 主键自带了自增长,序列。
3、oracle只能float类型
*/
mysql:
create table emp(
eno int primary key auto_increment,
ename varchar(20) not null unique,
job varchar(10) default '员工',
mgr int(10),
hiredate date,
comm double
);
oracle:
CREATE TABLE empemp(
eno number PRIMARY KEY,
ename VARCHAR(20) NOT NULL UNIQUE,
job VARCHAR(10) DEFAULT '员工',
mgr number(10),
hiredate DATE,
comm float
);
/*
删除表:
mysql:
drop table 表名;
drop table if exists 表名;
oracle:
drop table 表名;
*/
mysql:
DROP TABLE IF EXISTS user1;
DROP TABLE emp;
oracle:
DROP TABLE emp;
/*
列:
mysql:
1、alter table 表名 add column 字段 数据类型;
2、alter table 表名 add column 字段1 数据类型,
add column 字段2 数据类型,add column 字段3 数据类型,...;
oracle:
1、alter table 表名 add 字段 数据类型;
2、alter table 表名 add (字段 数据类型);
3、alter table 表名 add (字段1 数据类型, 字段2 数据类型, 字段3 数据类型,...);
*/
mysql:
alter table emp add column marriage varchar(2);
alter table emp add marriagdate date;
alter table emp add column lovename varchar(20),add column loveage int;
oracle:
alter table emp add marriage varchar2(2);
alter table emp add (marriagdate date);
alter table emp add (lovename varchar2(20), loveage int);
/*
删除字段:
mysql:
1、alter table 表名 drop column 字段;
2、alter table 表名 drop column 字段1,drop column 字段2,...;
oracle:
1、alter table 表名 drop column 字段;
2、alter table 表名 drop (字段);
3、alter table 表名 drop (字段1,字段2,...);
*/
mysql:
alter table emp drop column marriage;
alter table emp drop column marriagdate,drop column lovename,drop column loveage;
oracle:
alter table emp drop column marriage;
alter table emp drop (marriagdate);
alter table emp drop (lovename,loveage);
desc emp;
/*
修改列名:
mysql:alter table 表名 change column 原来的字段 新的字段名字 字段类型(必须);
oracle:alter table 表名 rename column 原来的字段 to 新的字段名字; -- 字段类型(不能有类型)
*/
mysql:
alter table emp change column mgr manager varchar(20);
oracle:
alter table emp rename column mgr to manager; -- 字段类型(不能有类型)
/*
修改类型:
mysql:alter table 表名 modify column 字段名 类型;--无论是否有记录,都可以修改
(如果要改成新的字段,就把原来的记录存到新的字段中,把旧字段里的记录清空,再把保存的记录还原回去)
oracle:alter table 表名 modify (字段名 类型 约束条件);--已经有记录存在了,不允许修改
*/
mysql:
alter table emp modify column manager int(10);
oracle:
alter table emp_copy modify (mgr varchar2(30) default 'null');
select * from emp_copy;
desc emp_copy;
/*
索引:
1、创建索引相同: create index 索引名 on 表名(字段名);
2、删除索引:
mysql: alter 表名 drop index 索引名;
oracle: drop index 索引名;
3、查询索引:
mysql:show index from 表名;
oracle:select 索引名,表名 ,字段名 from 表名 where 索引条件;
create index idx1 on emp(comn);
select * from emp where comn = 300;
drop index idx1;
*/
mysql:
CREATE INDEX idx1 ON emp(comm);
ALTER TABLE emp DROP INDEX idx1;
SHOW INDEX FROM emp;
oracle:
CREATE INDEX idx1 ON emp(comn);
select * from emp where comn = 300;
drop index idx1;