数据库常用查询

记录一些工作中常用到的查询,方便以后查找,后续慢慢更新。

Oracle

     1.获取建表语句
        select dbms_metadata.get_ddl('TABLE','TABLE_NAME') from dual;
        TABLE_NAME为表名必须大写
     2.获取表中数据插入的时间
        select to_char(scn_to_timestamp(ORA_ROWSCN),'yyyy-mm-dd hh24:mi:ss:ff8') insert_time  from 表名;
     3.查看相关用户的授权信息
        select * from user_tab_privs;
     4.授权管理
        Oracle有三种类型授权:1.Object(对象) 2.System(系统) 3.Rols(角色)
     权限分类分为两种:1.系统权限(用户对数据库的操作使用权限) 2.实体权限(对于其他用户表、视图的权限)
        系统权限分类:
     DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
     RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
     CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
     对于普通用户:授予connect, resource权限。
     对于DBA管理用户:授予connect,resource, dba权限。
        至于实体权限都比较好理解增删改查就不多说了。
     5.授权语句
        系统权限
           grant connect,resource,dba to user1...;
           我们可以通过以下sql查询所有的系统权限
           select distinct a.privilege from user_sys_privs a order by a.privilege asc;
        实体权限
           grant 权限名称  on schema. 对象名 to 用户名
           我们可以通过以下sql查询所有的实体权限
           select distinct t.privilege from user_tab_privs t;
     6.查询用户默认表空间
       SELECT DEFAULT_TABLESPACE FROM DBA_USERS WHERE USERNAME='GAOL'
     7.创建表空间
       create tablespace GAOL_SPACE DATAFILE 'D:\softwore\Oracle\oradata\orcl\GAOL_SAPCE.DBF' size 10M autoextend on;
     8.查看临时表空间大小
       select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name;
     9.查看所有表空间
       select tablespace_name from sys.dba_tablespaces;
     10.查看Schema对应的表空间
       select username,default_tablespace from dba_users  where username='GAOL';
     11.查看表空间文件,表空间,表空间大小,已用大小,剩余大小
       select A.FILE_NAME "表空间文件",
            A.TABLESPACE_NAME "表空间",
            A.Bytes / POWER(2, 20) "表空间大小(M)",
            A.Bytes / POWER(2, 20) - B.freeSize "已用表空间大小(M)",
            B.freeSize "空闲表空间大小(M)"
         from dba_data_files A,
   (SELECT TABLESPACE_NAME,
           ROUND(SUM(BYTES) / (1024 * 1024), 2) freeSize
      FROM SYS.DBA_FREE_SPACE
     GROUP BY TABLESPACE_NAME) B
where a.tablespace_name = b.TABLESPACE_NAME;
在dba_data_files中有个字段USER_BYTES,该字段表示的是文件中实际有用的字节数,而表空间中还包含一些元数据信息,所以需要用总的大小-剩余大小
     12.查看表注释,字段注释
         select  *   from user_tab_comments   where Table_Name='scott'  ;--表注释
         select *   from user_col_comments   where Table_Name='scott' ;--字段注释
         select *   from user_tab_columns   where Table_Name='用户表' ;--获取表字段
    13.查看用户下的分区表信息
        select * from user_tab_partitions;
    14.查看表的所在的分区
        select * from dba_tables where table_name='RPT_STORE_SO_DEL';
        select table_name 表名 ,tablespace_name 所使用表空间 from user_tables;

Teradata

     1.获取当前时间
     select current_date/date FROM  XXX;--格式为yyyy/mm/dd
     结果:2020/8/21
     1.获取前一天的时间
     SELECT DATE-1 FROM XXX;
     结果:2020/8/20
     2.两个时间的差值(默认是天)
     select date-cast('2020/08/19' as date) from XXX;
     结果:2
     select (date - date '2020-02-01') month--月份差
     结果:6
     select (date - date '2019-02-01') year--年份差
     结果:1
     3.获取时间的年或月或日
     select EXTRACT(YEAR from date);
     结果: 2020
     select EXTRACT(MONTH from date);
     结果: 8
     select EXTRACT(DAY from date);
     结果:21
     4.关于timestamp
     select CURRENT_TIMESTAMP
     结果:2020/8/21 10:57:47.490000
     select CURRENT_TIMESTAMP(0)
     结果:2020/8/21 10:58:37
     5.在建表的时候如果是VARCHAR类型需要加上CHARACTER SET UNICODE CASESPECIFIC
     CREATE TABLE XXX(
       system_name VARCHAR(100) CHARACTER SET UNICODE CASESPECIFIC)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值