查看表和注释生成时间更新时间

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`;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值