加入收藏 | 设为首页 | 会员中心 | 我要投稿 百客网 - 百科网 (https://www.baikewang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2023-02-01 14:57:17 所属栏目:MySql教程 来源:
导读:  Oracle数据库基本操作(和MySQL的类比操作)全局查询篇

  Oracle数据库和MySQL数据库同属关系型数据库,因此,不管是查询还是修改,增加,删除操作总的是十分类似的,但细节处是不相同的。下面单独就数据库
  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     |
 
 

(编辑:百客网 - 百科网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!