数据库Oracle和MySQL 的不同
实例区别:
MySQL是轻量型数据库,开源免费。Oracle收费,这个不是重点,,重点是它贵。
MySQL一个实例可以操作多个库,而Oracle一个实例只能对应一个库。
MySQL安装只有300多兆,Oracle有3个G。
操作的区别
主键:MySQL一般使用自动增长型,Oracle需要使用序列对象。
单引号处理:MySQL 里可以用双引号包起字符串,Oracle里只可以用单引号包 起字符串。
分页的SQL语句:MySQL 用 LIMIT,而 Oracle 需要使用内建视图和 rownum 伪列。
事务处理:MySQL 默认是自动提交,而 Oracle 默认不自动提交,需要用户 CTL 语言进行事务提交。
MySQL创建数据库(MySQL的表的创建都需要在有数据库的情况下)
创建数据库以及设置数据库的编码:
create database sxt default CHARACTER set utf8;

查看数据库:
show databases;

查看数据库编码:
select SCHEMA_NAME,DEFAULT_CHARACTER_SET_NAME from information_schema.SCHEMATA where SCHEMA_NAME='sxt';

删除数据库命令:
drop database sxt;

创建表之前需要表示一下用哪个数据库 不然会报错的:
use bjsxt;
MySQL拥有的数值类型


MySQL拥有的字符串处理类型

MySQL拥有的日期串处理类型

Oracle仅仅date表示日期和时间,MySQL的时间和日期是分开的
二进制数据(BLOB):
1)BLOB 和 TEXT 存储方式不同,TEXT 以文本方式存储,英文存储区分大小写,而 Blob是以二进制方式存储,不分大小写。
2)BLOB 存储的数据只能整体读出。3)TEXT 可以指定字符集,BLOB 不用指定字符集。
Oracle和MySQL的DDL(数据库定义语言)都是相差不太多。
由于MySQL是默认自动提交的,所以不需要去手动commit,但是它也可以设置成手动提交数据。
mysql> start transaction;
这样设置,就需要自己手动提交数据了。
Oracle和MySQL的DML(数据库操作语言)俩者几乎没什么差距。
Oracle和MySQL的DQL(数据库查询语言)俩者一样。
MySQL有主键是自动增长类型。所以在设置这个属性有所不同:
alter table emp modify employee_id int auto_increment;
如果要删除主键约束和唯一约束(都有自动增长类型)需要先删除自动增长类型:
alter table emp modify employee_id int;
在添加约束和删除约束俩者都还差不多,不同之处还是这个自动增长
在插入数据时如果有主键或者唯一约束是自动增长类型,需要用default或者null ,0去占位
insert into departments values(default,"development",2);
自动增长类型:每次增长1,和Oracle的序列效果是一样的,只不过Oracle的序列比它的功能更多。
MySQL 中的自动增长类型要求:
• 一个表中只能有一个列为自动增长。
• 自动增长的列的类型必须是整数类型。
• 自动增长只能添加到具备主键约束与唯一性约束的列上。
• 删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然后在删除约束。
默认值处理:
在 MySQL 中可以使用 DEFAULT 为字段设定一个默认值。如果在插入数据时并未指定该列的值,那么 MySQL 会将默认值添加到该列中。
例:创建 emp3 表,该表包含 emp_id 主键且自动增长,包含 name,包含 address 该列默认 值为”未知”。
create table emp3(emp_id int primary key auto_increment,name varchar(30), address varchar(50) default 'Unknown');

修改表添加列的默认值:
alter table emp3 add column job_id int default 0;
插入数据时的默认值处理:
如果在插入数据时并未指定该列的值,那么 MySQL 会将默认值添加到该列中。如果是完全项插入需要使用 default 来占位。
例:向 emp3 表中添加数据,要求 address 列与 job_id 列使用默认值作为该列的值。
insert into emp3(name) values("admin"); insert into emp3 values(default,"oldlu",default,default);

mysql 的 update 的特点:
• 更新的表不能在 set 和 where 中用于子查询;
• update 后面可以做任意的查询
在删除表中的列数据,MySQL有俩种方法:delete和truncate
• truncate 是整体删除(速度较快), delete 是逐条删除(速度较慢);
• truncate 不写服务器 log,delete 写服务器 log,也就是 truncate 效率比 delete 高的原因;
• truncate 是会重置自增值,相当于自增列会被置为初始值,又重新从 1 开始记录,而不是接着原来的值。而 delete 删除以后,自增值仍然会继续累加。
例:删除 emp3 表中 emp_id 为 5 的雇员信息。
delete from emp3 where emp_id = 5;

例:删除emp3表中的数据:
TRUNCATE table emp2;
MySQL中SELECT 语句中的算术表达式:
+ :加法运算
- :减法运算
* :乘法运算
/ :除法运算,返回商
% :求余运算,返回余数
MySQL 中的连字符:
MySQL 中并不支持||作为连字符,需要使用 concat 函数。在参数数量上与 oracle 的 concat函数有区别。
例:查询雇员表中的所有数据,将所有数据连接到一起,每列值中通过#分割。
select concat(employees_id,'#',last_name,'#',email,"#",salary,"#",commission_pct) from employees;
排序和比较,以及约束,模糊查询,逻辑运算符MySQL和Oracle都是一样。
MySQL没有到目前为止没有检查约束!!
• %表示任意多个任意字符
• _表示一个任意字符
注意:MySQL的伪表dual可以省略
MySQL的字符处理函数(Oracle的字符串处理类型):
CONCAT(str1,str2,...) 将 str1、str2 等字符串连接起来
select CONCAT('sdda','sda','weqw')

TRIM(str) 从 str 中删除开头和结尾的空格(不会处理字符串中间含有的空格)
select TRIM(' dad sda ')
select LENGTH(TRIM(' dad sda '))


LTRIM(str) 从 str 中删除左侧开头的空格
select LTRIM(' dad sda ')
select LENGTH(LTRIM(' dad sda '))


RTRIM(str) 从 str 中删除右侧结尾的空格
select rTRIM(' dad sda ');
select LENGTH(rTRIM(' dad sda '));


数字函数俩个都是一样的(Oracle的数值类型)
MySQL日期函数(Oracle日期处理类型)
SYSDATE() 或者 NOW() 返回当前系统时间,格式为 YYYY-MM-DD hh-mm-ss
select SYSDATE()

CURDATE() 返回系统当前日期,不返回时间
SELECT CURDATE()

DAYOFMONTH(date) 计算日期 d 是本月的第几天
select DAYOFMONTH(SYSDATE())

DAYOFYEAR(date) 返回指定年份的天数
select DAYOFYEAR(SYSDATE())

DAYNAME(date) 返回 date 日期是星期几
select DAYNAME(SYSDATE())

CURTIME() 返回当前系统中的时间,不返回日期
select CURTIME()

DAYOFWEEK(date) 日期 d 今天是星期几,1 星期日,2 星期一,以此类推
select DAYOFWEEK(SYSDATE())

MySQL转换函数(Oracle的字符转换函数):
DATE_FORMAT(date,format) 将日期转换成字符串(类似 oracle 中的 to_char())
select DATE_FORMAT(sysdate(),'%Y年%m月%d日');

STR_TO_DATE(str,format) 将字符串转换成日期(类似 oracle 中的 to_date())
select STR_TO_DATE('2019年8月1日','%Y年%m月%d日')

MySQL通用函数(Oracle中的通用函数)
IFNULL(expr1,expr2) 判断 expr1 是否为 null,如果为 null,则用 expr2 来代替 null (类似 oracle 的 NVL()函数)
select IFNULL(null,25)

IF(expr1,expr2,expr3) 判断 expr1 是否为真(是否不为 null),如果为真,则使用 expr2 替代 expr1;如果为假,则使用 expr3 替代 expr1(类似 oracle 的 NVL2()函数)
select IF(1=2,3,4)

全外链接:
注意:MySQL 中不支持 FULL OUTER JOIN 连接
可以使用 union 实现全完连接。
例:查询所有雇员的名字以及他们的部门名称,包含那些没有雇员的部门以及没有部门的雇员。
(select e.last_name,d.department_name from employees e LEFT OUTER JOIN departments
d on e.dept_id = d.department_id) UNION (select e1.last_name,d1.department_name from employees e1 RIGHT OUTER JOIN departments d1 on d1.department_id = e1.dept_id)
数据库Oracle和MySQL 的不同的更多相关文章
- [数据库]Oracle和mysql中的分页总结
Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...
- 各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包----转
在开发基于数据库的应用系统时,需要在项目中进行数据源的配置来为数据 库的操作取得数据库连接.配置不同数据库的数据源的方法大体上都是相同的,不同的只是不同数据库的JDBC驱动类和连接URL以及相应的数据 ...
- openfire重新配置数据库oracle、mysql
1.openfire重新配置设置: 删除target/openfire/conf/openfire.xml中的 <setup>true</setup> 2.删除浏览器之前访问过 ...
- 数据库----ORACLE和MYSQL数据库简介
一.什么是数据库? 数据库(Database---DB)按照组织.储存和管理数据的仓库.(理解以下三个概念) 数据(Data)用来描述事物的记录都可称数据,如文字音乐图像. 数据库系统(Dat ...
- Oracle与MySQL的区别对比
本文对数据库Oracle与MySQL进行了区别对比,其中从并发性.一致性.事务.数据持久性等十三方面进行了对比. 本文摘自 51cto 一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源 ...
- oracle迁移mysql数据库注意
oracle转mysql修改: . substr() substr( string , 0, 10) 这里测试 必须从 第一位获取 既是 substr(string , 1 , 10)2. to_ch ...
- 数据库迁移之从oracle 到 MySQL
方式一: 手动方式导入导出 手动的方式导入, 就是操作步骤会比较繁琐一些. 对Table 的结构和数据: 1. 使用 SQL Developer 把 oracle 的 table 的schema 和 ...
- 4月数据库流行度排行榜 MySQL能否追上Oracle
4月的数据库流行度排行榜可谓看点十足.闲言少叙,先上图: 前十名中,名次上升的都是NoSQL数据库,NoSQL凭借其对大数据处理的优势,发展越来越快.NoSQL是对众多非传统关系型数据库的总称,按存储 ...
- oracle数据库不支持mysql中limit功能
oracle数据库不支持mysql中limit功能,但可以通过rownum来限制返回的结果集的行数,rownum并不是用户添加的字段,而是oracle系统自动添加的. (1)使查询结果最多返回前10行 ...
随机推荐
- egret清除缓存的方法
1 图片加版本号2 js加版本号3 default.res.json 加版本号 3个缺一不可 ps: egret 里面default.res.json 资源和代码一定要保持一致
- Jquery EasyUI 中ValidateBox验证框使用讲解
来源素文宅博客:http://blog.yoodb.com/ Validatebox(验证框)的设计目的是为了验证输入的表单字段是否有效.如果用户输入了无效的值,它将会更改输入框的背景颜色,并且显示警 ...
- Java设计模式(20):命令模式
本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 智能电脑的品牌越来越多,由此诞生了一款电脑控制的APP,万能遥控器,用户在使用遥控器的时候,可以切换为自家电视的品 ...
- 网站搭建-虚拟机的使用-Linux (包括输入法和QQ下载使用)
之前已经联网了,基本的软件系统会自己下载,先不用管. 1. 先下载一个中文输入法吧: 先改一下Firefox的搜索引擎吧,因为大陆不支持google 下载,安装,就完事了,还好这个没变,几年不用这个系 ...
- 微信小程序this.data和this.setData({})的区别
this.data.xx是用来获取页面data对象的----------只是js(逻辑层)数据的更改: this.setData是用来更新界面的---------用于更新view层的.
- QKD 一些术语的含义
密钥率:每个信道使用的比特数. 系统开销:不能用来提取最终密钥的信号百分比. SNU:散粒噪声单元 RNG:随机数发生器 QRNG:量子随机数发生器 TRNG:真正的随机数生成器 PRNG:伪随机数发 ...
- [Part 4] 在Windows 10上源码编译PCL 1.8.1支持VTK和QT,可视化三维点云
本文首发于个人博客https://kezunlin.me/post/2d809f92/,欢迎阅读! Part-4: Compile pcl with vtk qt5 support from sour ...
- 万恶之源-python的进化
列表 列表的增删改查 3. 列列表的嵌套 元组和元组嵌套 5. range ⼀一. 列表 1.1 列表的介绍 列表是python的基础数据类型之⼀一 ,其他编程语⾔言也有类似的数据类型. 比如JS中的 ...
- 如何进行Flink项目构建,快速开发Flink应用程序?
项目模板 Flink应用项目可以使用Maven或SBT来构建项目,Flink针对这些构建工具提供了相应项目模板. Maven模板命令如下,我们只需要根据提示输入应用项目的groupId.artifac ...
- SpringSecurity动态加载用户角色权限实现登录及鉴权
很多人觉得Spring Security实现登录验证很难,我最开始学习的时候也这样觉得.因为我好久都没看懂我该怎么样将自己写的用于接收用户名密码的Controller与Spring Security结 ...