基本

Oracle默认端口:1521 默认用户:system

MySQL默认端口:3306 默认用户:root

连接MySQL:

mysql -u root -p
-- 输入密码 -- 查询所有数据库
show databases;
-- 切换到 "test" 这个数据库
use test;
-- 查询该数据库所有表
show tables;

连接Oracle:

sqlplus
-- 输入用户名
-- 输入密码 -- 查询该用户的表
select TABLE_NAME from user_tables;

注意:Oracle 登录需要授予登录用户 session权限,建表需要分配限额

常用字段类型

Oracle

数值 number number(10) number(10,2)

字符串 varchar2 varchar2(20)

日期 date

MySQL

数值 tinyint smallint mediumint int bigint decimal

字符串 varchar(10) 必须指定

日期 date time datetime timestamp year

DML

Oracle:

create table t_student(
sid int primary key ,
sname varchar2(10) not null ,
enterdate date,
gender char(2),
mail unique,
age number check (age>19 and age<30)
)
insert into t_student values(stuseq.nextval,'Test',to_date('1990-3-4','YYYY-MM-DD'),'男','1@outlook.com',20);
commit;

MySQL

create table t_student(
sid int primary key auto_increment,
sname varchar(1) not null ,
enterdate date,
gender char(1),
age int,
mail varchar(10) UNIQUE
) insert into t_student values(null,'Test','1990-3-4','男',30,'2@outlook.com')

MySQL插入日期使用now() 或 sysdate(),可以插入多条,使用逗号隔开

删表数据:Oracle可以省略from:delete from t_student; (删除所有数据)

外键约束:Oracle是constraints,MySQL是constraint

级联操作:

  • Oracle:on delete set null 或者on delete cascade
  • MySQL: on delete set null on update CASCADE

多表操作

Oracle:92语法:可以内连接,外连接99语法:可以内连接,外连接,全外连接(full join)

-- SQL92 左外连接(保留左边, 注意(+)要放在右边,记忆:左外,右边会出现空行要+补齐)
where e.department_id = d.department_id(+)
--

MySQL:只支持内连接、外连接,并且只能用类似oracle中99语法的格式写,MySQL不完全符合SQL-92规范

SQL 语句

MySQL

大小写不敏感(关键字和字段名都不区分)

阿里巴巴Java开发手册,在MySQL建表规约里有:

【强制】表名、字段名必须使用小写字母或数字 , 禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑

Windows 大小写不敏感,文件名同名大小写不同会覆盖

MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、 表名、字段名,都不允许出现任何大写字母,避免节外生枝

MySQL 的字段 大小写都可以查到

Oracle

是Oracle大小写不敏感的前提条件是在没有使用双引号 "" 的前提下(表名、字段名)

CREATE TABLE "TableName"("id" number); // 如果创建表的时候是这样写的,那么就必须严格区分大小写

SELECT * FROM "TableName"; // 不仅要区分大小写而且要加双引号,以便和上面的第三种查询方式区分开

Oracle默认是大写,对字段的具体值是敏感的

分页

Oracle:

-- 利用rownum
-- rownum从0开始
select * from
(select rownum rr,stu.* from (select * from t_student order by sid desc) stu )
where rr>=1 and rr<=5;

MySQL:

-- 记录从0开始
-- 从第0条开始,取5条数据
select * from test2 order by sid desc limit 0,5

时间日期

Oracle

Java中常用的 "yyyy-MM-dd mm:HH;ss" -> "2021-02-03 16:25:48"

在 Oracle 中的表示方式:'yyyy-mm-dd hh24:mi:ss'

MySQL

-- 获取当前时间戳
select unix_timestamp();
-- 1612340981 -- 获取当前日期时间
select now();
2021-02-03 16:30:22 -- 获取当前日期
select date(now());
-- 2021-02-03 -- timestamp -> datetime
select FROM_UNIXTIME(1612340981);
-- 2021-02-03 16:29:41 -- datetime -> varchar (time与之类似:time_format(time,format))
select DATE_FORMAT('2008-08-08 22:23:01','%Y %m %d %H %i %s');
-- 2008 08 08 22 23 01 -- varchar -> date str_to_date(str, format)
select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s');
-- 2008-08-09 08:09:30

Oracle

Oracle DML 需要手动提交或回滚事务

DML(Data Manipulation Language): 数据操纵语言 针对表数据的增删改查

Oracle select 查询必须有from 所以可以用from dual(这是一张神奇的表)

类型转换

date <--> varchar2 <--> number

date --> varchar2 : to_char(sysdate,'yyyy-mm-dd')

varchar2 --> date : to_date('2020-02-02','yyyy-mm-dd')

number --> varchar2: to_char(1111111.11,'999,999,999') -- 输出:1,111,111 使用'999,999,999'去匹配数字

varchar2 --> number :to_number('¥001,111,111','L000,000,000') from dual; -- 输出:1111111

L表示:当地的货币符号 字符串在运算时会自动隐式转换,含有非数字字符会报错:无效数字

参考资料

mysql和oracle的区别

Oracle| Oracle大小写敏感问题

SQL连接标准 SQL92\SQL99

MySQL 获得当前日期时间 函数

Oracle数据库对比MySQL的更多相关文章

  1. Oracle数据库和MySQL数据库的不同之处

    1.体积不同. Oracle它体积比较庞大,一般是用来开发大型应用(例如分布式)的.而MySQL的体积相对来说比较小,较之Oracle更容易安装.维护以及管理,操作也简单,最重要的是它是三个中唯一一个 ...

  2. 使用oracle数据库和MySQL数据库时hibernate的映射文件.hbm.xml的不同

    假设是使用oracle数据库.那么hibernate的映射文件.hbm.xml例如以下: <id name="xuehao" column="xuehao" ...

  3. 懒要懒到底,能自动的就不要手动,Hibernate正向工程完成Oracle数据库到MySql数据库转换(含字段转换、注释)

    需求描述 需求是这样的:因为我们目前的一个老项目是Oracle数据库的,这个库呢,数据库是没有注释的,而且字段名和表名都是大写风格,比如 在代码层面的po呢,以前也是没有任何注释的,但是经过这些年,大 ...

  4. Oracle数据库与MySQL的不同点

    Oracle笔记 一.   Oracle的启动和登录:  1.启动:通过启动Oracle的服务启动. OracleServiceORCL:核心服务,必须启动. OracleOraDb11g_home1 ...

  5. ORACLE数据库对比表结构

    有时候会有某种需求:需要对比两个表的表结构是否一致,有时候甚至是整个数据库所有表的表结构对比.......表结构对比无非就是字段名.字段类型.字段数据类型.以及字段的顺序的对比.如果需要对比表结构,可 ...

  6. oracle数据库兼容mysql的差异写法

    1.sysdate改为sysdate(),或者now(); 2.nvl(expr1,expr2) 改为IFNULL(expr1,expr2) nvl2(expr1,expr2,expr3)改为 IF( ...

  7. postgresql和oracle数据库对比

    SQL执行计划干预 从使用postgresql来看,想要改变执行计划只能通过対表进行分析,不能通过添加hint的方式来改变执行计划: oracle不仅可以通过对表进行收集统计来改变执行计划,而且很重要 ...

  8. MYSQL数据库迁移到ORACLE数据库

    一.环境和需求1.环境 MySQL数据库服务器: OS version:Linux 5.3 for 64 bit mysql Server version: 5.0.45 Oracle数据库服务器: ...

  9. ThinkPHP连接Oracle数据库的详细教程

    一. 操作环境搭建 系统:Windows7 旗舰版 64位PHP环境:wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24 32位版ThinkPHP:3.0正 ...

  10. Oracle数据库安装完成之后的启动操作

    由于是菜鸟,在 完成Oracle数据库的安装之后,不知道该怎么启动.在经过一番折腾之后明白了其中的一些道理,总结如下: 其实Oracle数据库和Mysql数据库的启动都是相同的原理. Mysql数据库 ...

随机推荐

  1. NC26212 小石的签到题

    题目链接 题目 题目描述 小石和小阳玩游戏,一共有 \(n\) 个数,分别为 \(1 \sim n\) .两人轮流取数,小石先手.对于每轮取数,都必须选择剩下数中的任意一个数 \(x\) ,同时还要取 ...

  2. InnoDB中不同SQL语句设置的锁

    锁定读(locking read).更新(UPDATE)或删除(DELETE)通常会在SQL语句处理过程中扫描的每个索引记录上设置记录锁.语句中是否存在排除行的WHERE条件并不重要.InnoDB不记 ...

  3. 2023sdut_python实验

    ​ 7-1 sdut-温度转换 n = input() n = float(n) c = 5.0*(n-32.0)/9.0 print("%.2f" %(c)) #其中,c为变量 ...

  4. SpringBoot+Shiro+LayUI权限管理系统项目-1.项目介绍

    1.项目介绍 本项目旨在打造一个基于RBAC架构模式的通用的.并不复杂但易用的权限管理系统.通过本项目可以较好的理解权限系统的常见业务同时学习掌握Springboot和Shiro等诸多技术点.需要的朋 ...

  5. Notepad++找回自动保存缓存内容的文件

    在目录C:\Users\Administrator\AppData\Roaming\Notepad++\backup中找到自动保存的缓存文件. 参考Notepad++找回自动保存缓存内容的文件

  6. springboot自动配置原理以及spring.factories文件的作用详解

    一.springboot 自动配置原理 先说说我们自己的应用程序中Bean加入容器的办法: package com.ynunicom.dc.dingdingcontractapp; import co ...

  7. 16. Class字节码结构

    1. 相关概念 1.1字节码文件的跨平台性 Java 语言是跨平台的(write once, run anywhere) 当 Java 源代码成功编译成字节码后,如果想在不同的平台上面运行, 则无须再 ...

  8. Redis之哈希分片原理一致性哈希算法与crc16算法

    集群分片模式 如果Redis只用复制功能做主从,那么当数据量巨大的情况下,单机情况下可能已经承受不下一份数据,更不用说是主从都要各自保存一份完整的数据.在这种情况下,数据分片是一个非常好的解决办法. ...

  9. kubernetes 1.20版本 二进制部署

    kubernetes 1.20版本 二进制部署 目录 kubernetes 1.20版本 二进制部署 1. 前言 2. 环境准备 2.1 机器规划 2.2 软件版本 3. 搭建集群 3.1 机器基本配 ...

  10. 真实开发中-redis在项目中的应用场景

    一.需求描述 从自己当前负责参与开发的一个项目中来看,redis主要的应用场景有如下几个,第一个是保存用户信息,这个需要频繁的获取.比如 在打开某一个页面进行查询时,就先需要获取用户信息,看用户是否具 ...