同花顺
原来已经是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;