当前位置:网站首页>MySQL和Oracle的语法差异
MySQL和Oracle的语法差异
2022-07-24 05:19:00 【iamzhanchi】
MySQL和Oracle的语法差异
一、数据类型差异
| 类别 | Oracle | MySQL | 区别 |
|---|---|---|---|
| 日期 | Date | Date、Time、Datetime | MySQL中Date只表示年月日,Time只表示时分秒,Datetime表示年月日时分秒Oracle中Date表示年月日时分秒和MySQL中Datetime一样 |
| 自增列 | 序列 | AUTO_INCREMENT | MySQL通过在表上设置自增键实现自增,Oracle是通过序列实现自增建一个序列初始值最大值等 |
| … | … | … | … |
二、数据库操作差异
| 类别 | Oracle | MySql | 区别 |
|---|---|---|---|
| 参数查询 | show parameter 参数 | show variables like ‘%参数%’ | |
| 数据库 | 无 | create database test_1;show databases; | MySQL可以创建数据库,Oracle只是创建实例,用户在实例里面,或者容器数据库 |
| … | … | … | … |
三、表操作差异
| 类别 | Oracle | MySQL | 区别 |
|---|---|---|---|
| 创建表 | 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 username | alter 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想实现自动分区需要存储过程实现 |
四、权限差异
| 类别 | Oracle | MySQL | 区别 |
|---|---|---|---|
| 创建用户 | 在create user时就需要确定权限 | 直接create user user_name identified by user_password | Oracle只需要两个connect,resource权限给用户,用户就可以进行数据操作了,但是不能跨用户。Mysql中需要对权限单独赋予,也可以全部赋予,不同用户可以共享一些表,Oracle在访问时需要加上另一个用户的标识 |
| 删除用户 | drop user user_name cascade | drop user user_name | cascade全部删除 |
| … | … | … | … |
五、函数差异
| 类别 | Oracle | MySQL | 区别 |
|---|---|---|---|
| 字符串函数 | 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 |
| … | … | … | … |
未完。
边栏推荐
- Inventory Poka ecological potential project | cross chain characteristics to promote the prosperity of multi track
- Web3基金会「Grant计划」赋能开发者,盘点四大成功项目
- PHP 多行文字内容的重复检测功能并统计重复次数
- Interpretation of the randomness of POS mechanism, how does poca's randomness principle work?
- Open Web3, once unpopular decentralized identity (did)
- XML之建模
- Function Closure
- Scarcity in Web3: how to become a winner in a decentralized world
- How to export Excel files with php+mysql
- MySQL 批量插入demo
猜你喜欢
随机推荐
Logic development analysis of LP dual currency liquidity pledge mining system
Wechat applet returns parameters or trigger events
Flink watermark mechanism
【activiti】activiti流程引擎配置类
Function Closure
Flink sql-client.sh使用
【mycat】mycat搭建读写分离
【activiti】流程变量
微信小程序map的使用
Insanity:1 (insanity hosting) target penetration vulnhub
程序员常说的API是什么意思?API类型有什么呢?
ntp错误: no server suitable for synchronization found
【虚拟化】如何将虚拟机从workstation转换到esxi
vulnhub-SolidState: 1靶机渗透测试
达梦数据库_常用的用户管理命令
Hex to RGB
Penetration testing knowledge - industry terminology
Canvas - round
达梦数据库_用户口令策略
@Async 没有异步执行









