Oracle数据库基本操作(和MySQL的类比操作)全局查询篇
发布时间:2023-02-01 14:57:17 所属栏目:MySql教程 来源:
导读: Oracle数据库基本操作(和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 | (编辑:百客网 - 百科网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐