mysql写法

select table_name, table_comment, create_time, update_time from information_schema.tables
         where table_schema = (select database())
         AND table_name NOT LIKE 'qrtz_%' AND table_name NOT LIKE 'gen_%'
         AND table_name NOT IN (select table_name from gen_table)

 

oracle写法

SELECT c.TABLE_NAME,c.comments,
         o.created,o.last_ddl_time  FROM user_tab_comments c
         LEFT JOIN ALL_OBJECTS o on c.TABLE_NAME=o.OBJECT_NAME
         where  table_name NOT LIKE 'QRTZ_%'  
         AND table_name NOT LIKE 'GEN_%' 
         AND table_name NOT IN ( SELECT table_name FROM gen_table )
         and o.OBJECT_TYPE='TABLE' AND o.OWNER=(select username from user_users)

以下是orace的查询

一、查看当前用户信息:
1、查看当前用户拥有的角色权限信息:select * from role_sys_privs;
2、查看当前用户的详细信息:select * from user_users;
3、查看当前用户的角色信息:select * from user_role_privs;
 
总结:ORACLE中数据字典视图分为3大类,用前缀区别,分别为:USER,ALL 和 DBA,
许多数据字典视图包含相似的信息。
 
USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息。
ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息。
DBA_*:有关整个数据库中对象的信息。
 
其他:
查看用户和默认表空间的关系。
select username,default_tablespace from dba_users;
1.查看表结构:desc表名
2.查看当前用户的表:
select table_name from user_tables;
3.查看所有用户的表名:
select table_name from all_tables;
4.查看所有表名(其中包括系统表)
select table_name from all_tables;
5.查看所有的表:
select * from tab/dba_tables/dba_objects/cat;

查询TEST用户下的所有表,及其创建时间
SELECT OBJECT_NAME ,CREATED FROM ALL_OBJECTS WHERE OBJECT_TYPE='TABLE' AND OWNER='TEST' ORDER BY CREATED DESC;

下面介绍Oracle查询用户表空间

◆Oracle查询用户表空间:select * from user_all_tables

◆Oracle查询所有函数和储存过程:select * from user_source

◆Oracle查询所有用户:select * from all_users.select * from dba_users

◆Oracle查看当前用户连接:select * from v$Session

◆Oracle查看当前用户权限:select * from session_privs

◆Oracle查看用户表空间使用情况:

select a.file_id "FileNo",a.tablespace_name

 "Tablespace_name",

 a.bytes "Bytes",a.bytes-sum(nvl(b.bytes,0)) "Used",

 sum(nvl(b.bytes,0)) "Free",

 sum(nvl(b.bytes,0))/a.bytes*100 "%free"

 from dba_data_files a, dba_free_space b

 where a.file_id = b .file_id(+)

 group by a.tablespace_name ,

 a.file_id,a.bytes order by a.tablespace_name;



1.查看所有用户:

select * from dba_user;

 select * from all_users;

 select * from user_users;



2.查看用户系统权限:

select * from dba_sys_privs;

 select * from all_sys_privs;

 select * from user_sys_privs;



3.查看用户对象权限:

select * from dba_tab_privs;

 select * from all_tab_privs;

 select * from user_tab_privs;



4.查看所有角色:
select * from dba_roles;

5.查看用户所拥有的角色:
select * from dba_role_privs;

select * from user_role_privs; 

6.查看角色所拥有的权限: 
select * from role_sys_privs; 

select * from role_tab_privs; 
7.查看所有系统权限 
select * from system_privilege_map; 

8.查看所有对象权限 
select * from table_privilege_map; 

以上是在Oracle中查看用户权限 ,


在DB2中为:


select * from syscat.dbauth
或者
get authorizations 

查看sid
select * from v$instance

 

1、oracle 查询当前用户下的表名 + 表注释

select t.table_name tableName, f.comments comments from user_tables t inner join user_tab_comments f on t.table_name = f.table_name

2、 oracle 查询某表的所有字段 + 字段注释 + 字段类型

SELECT t.TABLE_NAME tableName, t.COLUMN_NAME columnName, t.DATA_TYPE dataType, a.COMMENTS FROM USER_TAB_COLUMNS t LEFT JOIN USER_COL_COMMENTS a ON t.table_name = a.table_NAME AND t.COLUMN_NAME = a.COLUMN_NAME

user_objects视图中created、last_ddl_time、timestamp字段含意

user_objects视图中created、last_ddl_time、timestamp字段含意
created:对象的创建时间
last_ddl_time:跟对象相关的(不一定是改变对象的结构,也可以是其他相关,如,如果此对象是表,则将该表的select权限赋给其他用户也会改变这个字段的值)最后ddl操作的执行时间
timestamp:对象自身结构发生改变的时间,比如删除字段、添加字段等

SQL> conn dasong/dasong
 Connected.
 SQL> create table t_obj_time
   2  (
   3    col1 varchar2(20),
   4    col2 varchar2(20)
   5  );

 Table created.

 SQL> col object_name for a20
 SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';



Session altered.
--此时表刚创建,没有做关于表的任何操作,则created、last_ddl_time、timestamp的值是一样的

SQL> select object_name, created, last_ddl_time, timestamp from user_objects where object_name='T_OBJ_TIME';

 OBJECT_NAME     CREATED                       LAST_DDL_TIME         TIMESTAMP
 ----------------------     -----------------------------   -----------------------------  -------------------
 T_OBJ_TIME           2012-02-10 08:56:05   2012-02-10 08:56:05  2012-02-10:08:56:05

 SQL> alter table t_obj_time add(col3 varchar2(30));

 Table altered.


--给表新增一个字段后,则last_ddl_time、timestamp的值被更新,last_ddl_time、timestamp的值保持一致,但与created不再相同

SQL> select object_name, created, last_ddl_time, timestamp from user_objects where object_name='T_OBJ_TIME';

 OBJECT_NAME      CREATED                        LAST_DDL_TIME         TIMESTAMP
 ----------------------      ------------------------------  -----------------------------   -------------------
 T_OBJ_TIME           2012-02-10 08:56:05    2012-02-10 08:57:23   2012-02-10:08:57:23

 SQL> grant select on t_obj_time to sys;

 Grant succeeded.


--将表的select权限赋给sys用户后,LAST_DDL_TIME字段再一次被更新,此时三个字段的值各不相同

SQL> select object_name, created, last_ddl_time, timestamp from user_objects where object_name='T_OBJ_TIME';

 OBJECT_NAME     CREATED                       LAST_DDL_TIME          TIMESTAMP
 ----------------------     -----------------------------  ------------------------------  -------------------
 T_OBJ_TIME           2012-02-10 08:56:05  2012-02-10 08:57:49   2012-02-10:08:57:23

查询表的所有列及其属性:

select  t.*,c.COMMENTS 
 from user_tab_columns  t,user_col_comments  c
  where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = women;


查找表的主键:

select cu.* 
 from user_cons_columns cu, user_constraints au 
 where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name = women;


查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):
select * from user_constraints c where c.constraint_type = 'R' and c.table_name = women  
查询外键约束的列名:   
select * from user_cons_columns cl where cl.constraint_name = 外键名称;
查询引用表的键的列名:   
select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名;
 

以下是mysql的用法

1. 获取所有表结构(TABLES)

SELECT  *  FROM information_schema.TABLES WHERE  TABLE_SCHEMA='数据库名';  TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。各字段说明如下:

 

字段

含义

table_catalog

数据表登记目录

table_schema

数据表所属的数据库名

table_name

表名称

table_type

表类型[system view|base table]

engine

使用的数据库引擎[MyISAM|CSV|InnoDB]

version

版本,默认值10

row_format

行格式[Compact|Dynamic|Fixed]

table_rows

表里所存多少行数据

avg_row_length

平均行长度

data_length

数据长度

max_data_length

最大数据长度

index_length

索引长度

data_free

空间碎片

auto_increment

做自增主键的自动增量当前值

create_time

表的创建时间

update_time

表的更新时间

check_time

表的检查时间

table_collation

表的字符校验编码集

checksum

校验和

create_options

创建选项

table_comment

表的注释、备注

 

 

详细说明:row_format

若一张表里面不存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫静态表,即该表的row_format是fixed,就是说每条记录所占用的字节一样。其优点读取快,缺点浪费额外一部分空间。

若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫动态表,即该表的row_format是dynamic,就是说每条记录所占用的字节是动态的。其优点节省空间,缺点增加读取的时间开销。

所以,做搜索查询量大的表一般都以空间来换取时间,设计成静态表。

 row_format还有其他一些值:

DEFAULT | FIXED | DYNAMIC | COMPRESSED | REDUNDANT | COMPACT

修改行格式

ALTER TABLE table_name ROW_FORMAT = DEFAULT

修改过程导致:

fixed--->dynamic: 这会导致CHAR变成VARCHAR

dynamic--->fixed: 这会导致VARCHAR变成CHAR

 

data_free

每当MySQL从你的列表中删除了一行内容,该段空间就会被留空。而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大。

当MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分。如果进行新的插入操作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用。

1.查询数据库空间碎片:

select table_name,data_free,engine from information_schema.tables where table_schema='yourdatabase';

2.对数据表优化:

optimeze table `table_name`;