Oracle与MySQL有什么不同

同花顺

原来已经是2021年了,今天1月1日。诸位,新年快乐。

·················································································································

MySQL是大多数接触的第一个数据库,因为它是典型的关系型数据库,且语法及使用方式上较为简单,进行一个由易到难的学习过程。

上边纯属扯淡,原因只有一个,因为它是开源免费的。

在使用MySQL的时候,我们只需要使用可视化工具,会建库,会建表,会简单的增删改查,会使用代码连接MySQL就可以了。导入导出也很简单,可以使用工具,也可以使用命令行,基本上不会报错,报错的话,看看报错日志,看是否缺少使用数据库声明,或者是否版本过高过低,是否性能过低即可。

但是Oracle比较复杂,它更加强调用户,强调权限,更加重视数据库安全问题。

举个简单的例子:

MySQL中你们本地上常用的用户密码是什么,root/root。除了root用户,你是否还用过其他用户。

Oracle中,内置用户为system,sys,当然安装的时候,你可以勾选上scott,hr等等。登录的时候还有nomal,sysdba,sysoper三种角色让你选择。

所以Oracle较为复杂,它与其他关系型数据库最大的不同在于,Oracle开创性的提出了表空间的设计理念,学Oracle必须明确表空间的本质,Oracle的性能之所以强与表空间密不可分。

一句话,写在前边。

Oracle数据库可以创建多个实例。

每个实例可以创建多个表空间。

每个表空间下可以存在多个用户和数据库文件。

每个用户可以创建多个表(表随机存储在一个或多个数据库文件中)。

Oracle的生产日期

1998年 Oracle 8i i代指internet网络
2001年 Oracle 9i

2003年 Oracle 10g g代指grid网格
2007年 Oracle 11g

2013年 Oracle 12c c代指cloud云计算

2019年 Oracle 19c

市场上常用Oracle版本为Oracle11g,2007年发布(想不到吧)。

与JDK8类似,2014年发布,至今仍然是主流。

数据库实例

我们项目中连接MySQL和Oracle时,如下:

经常可以发现,MySQL连接的数据库都是我们自己建的,比如aaa,bbb,ccc等,五花八门。

但是从网上搜索连接Oracle数据库,为什么他们写的都是连接orcl?

jdbc:mysql://127.0.0.1:3306/aaa
jdbc:oracle:thin:@//192.168.0.1:1521/orcl

这个orcl就是我们的数据库实例名,安装时默认实例。

注意:

不可以理解为MySQL中的数据库名。因为Oracle中只有一个全局数据库,一个数据库包含多个数据库实例。

查看Oracle数据库名的命令:

select name from v$database;

查看当前数据库实例。

select instance_name from v$instance;

表空间

在MySQL中创建表:
在这里插入图片描述
在Oracle中创建表:
在这里插入图片描述
很明显的可以看到,中间区域有表空间。创建表的时候要指定表空间,创建用户的时候要指定表空间,导入数据的时候,不存在表空间或者表空间额度不够就会报错,可以看出表空间的重要,贯穿Oracle开始到结束。

. . 正在导入表                          "DEPT"
IMP-00058: 遇到 ORACLE 错误 1536
ORA-01536: 超出表空间 'USERS' 的空间限额
. . 正在导入表                           "EMP"
IMP-00058: 遇到 ORACLE 错误 1536
ORA-01536: 超出表空间 'USERS' 的空间限额
. . 正在导入表                      "SALGRADE"
IMP-00058: 遇到 ORACLE 错误 1536
ORA-01536: 超出表空间 'USERS' 的空间限额
即将启用约束条件...
成功终止导入, 但出现警告。

Oracle数据库通过表空间来存储物理表,一个数据库实例可以有多个表空间。

我们所有的用户,所有的表,所有的数据都是存储在表空间中。

最常用命令

创建表,创建用户的命令,就不写这里了,因为这些比较复杂,一般通过可视化工具搞。

因为你使用创建用户命令,创建成功了,之后给用户权限的时候,再用命令,再去复制粘贴很麻烦。

我列举一下最常用的命令:

查看Oracle数据库名的命令:

select name from v$database;

查看当前数据库实例。

select instance_name from v$instance;

查看用户有哪些角色

select * from dba_role_privs t where t.GRANTEE='SCOTT';

查看角色有哪些权限(严格区分大小写)

select * from role_sys_privs t where t.ROLE='RESOURCE';

查看所有角色

select * from dba_roles;

给用户授权(系统权限)

GRANT DBA TO HR;

收回用户权限

Revoke DBA from HR;

查询有哪些角色具有sysdba和sysoper权限

select * from V$PWFILE_USERS

创建表空间

create tablespace abc datafile 'E:\DEVELOP\ORACLESOURCE\ORADATA\ORCL\abc.DBF' size 500m autoextend on next 20m;

删除表空间

drop tablespace tableName including contents and datafiles;

查看表空间存放位置(好奇吗,表空间长啥样)

select file_name from dba_data_files;

查看当前用户表空间限额(导入数据报错:表空间大小不足,调大空间即可)

select * from user_ts_quotas;

修改用户密码(推荐使用sys用户)

ALTER USER tom IDENTIFIED BY tompwd;
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值