首页 > 数据库 >Oracle数据库基本操作(和MySQL的类比操作)全局查询篇

Oracle数据库基本操作(和MySQL的类比操作)全局查询篇

时间:2023-02-24 10:04:32浏览次数:52  
标签:GPL 数据库 MySQL 查询 ACTIVE mysql Oracle 基本操作 NULL


                                                  Oracle数据库基本操作(和MySQL的类比操作)全局查询篇

Oracle数据库和MySQL数据库同属关系型数据库,因此,不管是查询还是修改,增加,删除操作总的是十分类似的,但细节处是不相同的。下面单独就数据库查询操作做一个大致总结,如有不对请指出。

查询操作不管是哪种数据库,都是从大往小查询,意思就是先查数据库里有哪些数据库,然后定位其中的一个数据库,查询它的拥有的表,然后定位其中的一个表,进而查询出最终的数据。

关系型数据库的一个体现是一个数据库会有很多用户,用户根据其所处的角色拥有不同的权限,进而有不同的显示和操作,例如,在MySQL中,如果某个用户只有对test这个数据库下的所有表查询权限,那么,用这个用户登陆数据库,将会仅仅看到前面所授权的数据库名称test和information_schema 这个数据库,并且只能查询test数据库下的表而不能更改数据库内的表,或者删除,增加。

select * from all_users;--所有用户 需要高级权限
select * from dba_roles;--所有角色 需要高级权限
SELECT GRANTEE,GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE ='HR';--用户hr所具有的角色
SELECT GRANTEE,PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE = 'SYS';--用户sys的系统权限
select name from v$database;--查看数据库库名
select dbid from v$database;--查看数据库id
select * from v$tablespace;--查看所有表空间
select * from user_tables;--查看所有表

1,查询数据库内的所有用户

Oracle:select * from all_users; #查询结果为12个用户

Oracle数据库基本操作(和MySQL的类比操作)全局查询篇_数据库

查看所有角色:
        select * from dba_roles;(dba权限) #查询结果为32个角色

Oracle数据库基本操作(和MySQL的类比操作)全局查询篇_java_02

mysql:SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 或者 这个命令: select user from mysql.user;输出如下

mysql> select user from mysql.user;
+-----------+
| user |
+-----------+
| admin |
| root |
| mysql.sys |
| root |
+-----------+
4 rows in set (0.01 sec)

mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+--------------------------------+
| query |
+--------------------------------+
| User: 'admin'@'%'; |
| User: 'root'@'%'; |
| User: 'mysql.sys'@'localhost'; |
| User: 'root'@'localhost'; |
+--------------------------------+
4 rows in set (0.00 sec)

以上输出,可以看到,现在只有四个用户,root用户具有远程连接的权限。

二,查询用户的权限

好了,经过第一步,我们使用超级管理员用户root查询到了所有的用户,这一步,可以帮助我们知道这些用户都有什么权限,从而知道应该在日常的工作中使用哪一个用户。

Oracle:

Oracle 数据库将权限分为系统权限和对象权限,因为权限过多一个一个授予用户比较繁琐,所以Oracle出了角色的概念,直接将角色授予用户就比较简便了,同时角色也可以拥有角色。

(1).查询用户SYS拥有的系统权限
SQL> SELECT GRANTEE,PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE = 'SYS';(dba权限)#SYS用户权势滔天,200多个系统权限

Oracle数据库基本操作(和MySQL的类比操作)全局查询篇_java_03

(2)查询scott用户拥有的对象权限
SQL> SELECT GRANTEE,TABLE_NAME,PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE = 'SCOTT';(dba权限)

(3).查询scott用户拥有的角色
SQL> SELECT GRANTEE,GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE ='SCOTT';

MySQL:

select * from mysql.user where user='root' \G  或者   show grants for 'root'@'%'; #查询root用户的权限,查询其它用户替换root即可。第二个命令基本是还原了授权命令,推荐使用第二个命令。输出如下:

mysql> show grants for 'root'@'%';
+-------------------------------------------------------------+
| Grants for root@% |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

(歪一下,postgres数据库切换用户十分人性化,MySQL和Oracle并不太友好)。

三,查询有哪些数据库以及每个数据库有哪些表

Oracle:

select name from v$database; #查询数据库的所有名称  基本等价于MySQL的 show databases; #就一个数据库 XE

Oracle数据库基本操作(和MySQL的类比操作)全局查询篇_linux_04

select dbid from v$database; #查询数据库的所有id,XE这个数据库的ID为2941526500

Oracle数据库基本操作(和MySQL的类比操作)全局查询篇_java_05

 

由于Oralce没有库名,只有表空间,所以Oracle没有提供数据库名称查询支持,只提供了表空间名称查询。
select * from v$tablespace;    --查询表空间(需要一定权限)  #5个表空间

Oracle数据库基本操作(和MySQL的类比操作)全局查询篇_oracle_06

2.查询当前数据库中所有表名
select * from user_tables; #154张表

Oracle数据库基本操作(和MySQL的类比操作)全局查询篇_java_07

 

MySQL:

登陆用户后,执行命令: show databases; #查询该用户名下所有有权限使用的数据库,比如使用mysql这个数据库,   use mysql;show  tables; # 使用mysql 这个数据库,查看这个数据库的所有表 或者 show table status \G;查看表的详细信息,其中包括每个表的描述信息,所使用的引擎类型等等信息。

查看所有的全局变量,这些变量包括一些mysql的基本设置,比如慢查询这些的设置:

mysql> SHOW VARIABLES \G;
Variable_name: updatable_views_with_limit
Value: YES
*************************** 502. row ***************************
Variable_name: version
Value: 5.7.18
*************************** 503. row ***************************
Variable_name: version_comment
Value: MySQL Community Server (GPL)
*************************** 504. row ***************************
Variable_name: version_compile_machine
Value: x86_64
*************************** 505. row ***************************
Variable_name: version_compile_os
Value: Linux
*************************** 506. row ***************************
Variable_name: wait_timeout
Value: 28800
*************************** 507. row ***************************
Variable_name: warning_count
Value: 0
507 rows in set (0.00 sec)

ERROR:
No query specified

查看在服务器上的插件存放路径:(本机的存放路径是 /usr/lib/mysql/plugin)  

mysql> show variables like 'plugin_dir';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| plugin_dir | /usr/lib/mysql/plugin/ |
+---------------+------------------------+
1 row in set (0.01 sec)

 

查看所有在使用的插件:

mysql> show plugins;
+----------------------------+----------+--------------------+---------+---------+
| Name | Status | Type | Library | License |
+----------------------------+----------+--------------------+---------+---------+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL |
| sha256_password | ACTIVE | AUTHENTICATION | NULL | GPL |
| PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL |
| CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL |
| INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP_PER_INDEX | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_BUFFER_PAGE | ACTIVE | INFORMATION SCHEMA | NULL | GPL |

 

标签:GPL,数据库,MySQL,查询,ACTIVE,mysql,Oracle,基本操作,NULL
From: https://blog.51cto.com/u_15966109/6082653

相关文章

  • ubuntu安装mysql并设置忽略大小写
    更新apt包管理sudoapt-getupdate安装mysql-serversudoapt-getinstallmysql-serverc正常情况下安装完后mysql已启动,查看mysql状态systemctlstatusmysql.se......
  • mysql 的 json 类型
    创建表DROPTABLEIFEXISTS`student`;CREATETABLE`student`(`id`int(0)NOTNULLAUTO_INCREMENTCOMMENT'表的id',`name`varchar(255)CHARACTERSETut......
  • 急速安装mysql8 in windows
    安装准备下载地址:https://dev.mysql.com/downloads/mysql/解压不赘述添加环境变量不赘述初始化安装根目录配置增加my.ini文件下面配置A=安装跟目录一般只有:b......
  • [DB] Oracle 表空间达到 32GB 后扩容的方法
    背景Oracle表空间数据文件容量与DB_BLOCK_SIZE参数有关,物理文件最大允许4194304个数据块(由操作系统决定)。如果初始建库时DB_BLOCK_SIZE=8K,数据文件最大体积为32G......
  • MySQL增删查改
    创建数据库createdatabase数据库名;查看数据库showdatabases;切换数据库use数据库名;创建表createtable表名(字段名  类型,字段名  类型,......);插......
  • MySQL调优
    #MySQL调优##数据库优化常见方案1.优化shema,sql语句+索引2.加缓存,memcached,redis3.主从复制,读写分离4.垂直拆分5.水平拆分为了知道怎么优化SQL,必须先清楚SQL......
  • mac 终端对mysql开启或者关闭mysql服务
    这里可以对mysql服务进行人为启动或者暂停,也可以在终端对mysql开启或者关闭mysql服务://启动:sudo/usr/local/mysql/support-files/mysql.serverstart//关闭sudo/u......
  • MySQL登录,访问,退出操作
    查看MySQL的安装结果1)安装了WindowsService:MySQL80,并且已经启动。 2)安装了MySQL软件。安装位置为:C:\ProgramFiles\MySQL。 (MySQL文件下放的是软件的内容)3)安......
  • MySQL登录,访问,退出操作
    查看MySQL的安装结果1)安装了WindowsService:MySQL80,并且已经启动。 2)安装了MySQL软件。安装位置为:C:\ProgramFiles\MySQL。 (MySQL文件下放的是软件的内容)3)安......
  • MySQL介绍
    MySQL数据库最初是由瑞典MySQLAB公司开发,2008年1月16号被Sun公司收购。2009年,SUN又被Oracle收购。MySQL是目前IT行业最流行的开放源代码的数据库管理系统,同时它也是一个支......