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个用户
查看所有角色:
select * from dba_roles;(dba权限) #查询结果为32个角色
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多个系统权限
(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
select dbid from v$database; #查询数据库的所有id,XE这个数据库的ID为2941526500
由于Oralce没有库名,只有表空间,所以Oracle没有提供数据库名称查询支持,只提供了表空间名称查询。
select * from v$tablespace; --查询表空间(需要一定权限) #5个表空间
2.查询当前数据库中所有表名
select * from user_tables; #154张表
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