MySQL和Oracle的语法差异

本文详细对比了MySQL和Oracle在数据类型、数据库操作、表操作、权限管理和函数等方面的差异,包括日期类型、自增列、索引创建、用户权限以及字符串和控制流函数的使用。MySQL支持自增列和自动分区,而Oracle则通过序列实现自增,且提供分区表功能。在权限管理上,Oracle在创建用户时就赋予权限,而MySQL需要后续单独授权。此外,两者的空字符串处理和函数使用也有所不同。
摘要由CSDN通过智能技术生成

MySQL和Oracle的语法差异

一、数据类型差异

类别OracleMySQL区别
日期DateDate、Time、DatetimeMySQL中Date只表示年月日,Time只表示时分秒,Datetime表示年月日时分秒Oracle中Date表示年月日时分秒和MySQL中Datetime一样
自增列序列AUTO_INCREMENTMySQL通过在表上设置自增键实现自增,Oracle是通过序列实现自增建一个序列初始值最大值等

二、数据库操作差异

类别OracleMySql区别
参数查询show parameter 参数show variables like ‘%参数%’
数据库create database test_1;show databases;MySQL可以创建数据库,Oracle只是创建实例,用户在实例里面,或者容器数据库

三、表操作差异

类别OracleMySQL区别
创建表create table emp{ emp_no number(10) primary key, --主键…}create table emp01{emp_no int(10) primary key AUTO_INCREMENT,–主键自增…}MySQL没有number,但是可以声名自增长(AUTO_INCREMENT),MySQL有double类型。Oracle不能声明自增长,小数只有float类型
删除表drop 表名drop table if exists 表明Oracle中没有exists关键字,如果想实现可以通过判断有没有来达到同样的效果
添加列alter table emp add name varchar2(10);alter table emp add(name varchar2(10),password varchar2(30))alter table emp add column name varchar(10);alter table emp add column name varchar(10),add column password varchar(30)MySQL添加字段需要add column+想要添加的字段名以及类型,如果想添加多个字段每个字段前都需要add column。Oracle添加字段不需要column,添加多个字段时只需要在同一个括号中
删除列同上,把add换成了drop同上,把add换成了drop同上,把添加换成了删除,add换成了drop
修改列名alter table emp rename column name to usernamealter table emp change column name username varchar(10)MySQL通过change column 原来字段 要改成的字段 必须加上字符类型。Oracle通过rename column 原来字段 to 新的字段 不能有字段类型,字段类型需要alter table 表名 modify (字段 数据类型 约束条件)
修改列类型alter table emp modify (name varchar2(30))alter table emp modify column name varchar(30)Oracle列有数据时无法修改没有时可以修改。MySQL什么时候都可以修改,但是有数据时可能会造成数据丢失,可以添加临时列,把数据导入到临时列之后删除原有列,并把临时列名更改为原有列名
索引创建索引区别不大,删除索引时可以直接drop index indexName,查询索引通过视图查询删除索引需要指定表名,drop index indexName on tableName,alter table tableName drop index indexName,直接show index from tableName就可以查到索引MySQL索引可以重名所以删除时需要指定表名,因此索引是表级别的,Oracle中索引不可以重名,是数据库级别的
空字符串‘’就是null''和null是有区别的Oracle中’‘和null是没有区别的,但是在MySQL中’‘是代表有空字符的,null是什么都没有’真空’,尽量别像数据库中插入’’
分区表可以实现自动分区无自动分区MySQL想实现自动分区需要存储过程实现

四、权限差异

类别OracleMySQL区别
创建用户在create user时就需要确定权限直接create user user_name identified by user_passwordOracle只需要两个connect,resource权限给用户,用户就可以进行数据操作了,但是不能跨用户。Mysql中需要对权限单独赋予,也可以全部赋予,不同用户可以共享一些表,Oracle在访问时需要加上另一个用户的标识
删除用户drop user user_name cascadedrop user user_namecascade全部删除

五、函数差异

类别OracleMySQL区别
字符串函数insert(‘qwer’,‘asdf’,2)insert(‘qwer’,‘asdf’)Oracle可以指定插入位置,从2开始插入。MySQL从默认位置插入
substr(‘asdf’,2,2)substring(‘asdf’,2,2)只是函数名称不同,其他的用法是一样的
length()char_length()Oracle中select length(‘asdf’) value from dual。MySQL中select char_length(‘asdf’) value
控制流函数nvl(u.email_address,10)ifnull(u.email_address,10)或者isnull(u.email_address)Oracle中如果email是空用10替换,MySQL中如果是空不替换只是显示为10,没有数字的如果为空就显示为1,不为空显示为0

未完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值