Oracle查询数据库中所有表的记录数
查询库中的表名和表中记录数:
SELECT T.TABLE_NAME, T.NUM_ROWS FROM USER_TABLES T;
查询库中记录总数:
SELECT SUM(A.NUM_ROWS)
FROM (SELECT T.TABLE_NAME, T.NUM_ROWS FROM USER_TABLES T) A;
如图所示:
Oracle一下简单使用
1、用户操作
select * from dba_users;
create user test identified by 123456;
alter user test identified by 123456;
grant connect,resource to test ;
alter user test quota unlimited on users;
drop user test cascade;
2、用户
select * from user_users;
查看当前用户的角色
select * from user_role_privs;
查看当前用户的系统权限和表级权限
select * from user_sys_privs;
select * from user_tab_privs;
3、表
查看用户下所有的表
select * from user_tables;
查看某表的创建时间
select * from user_objects where object_name=upper('test');
查看某表的大小
select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('test');
4、索引
查看索引个数和类别
select index_name,index_type,table_name from user_indexes order by table_name;
查看索引被索引的字段
select * from user_ind_columns where index_name=upper('&index_name');
查看索引的大小
select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name');
5、序列号
查看序列号,last_number是当前值
select * from user_sequences;
6、视图
select * from user_views;
7、存储函数和过程
查看函数和过程的状态
select object_name,status from user_objects where object_type='FUNCTION'; select object_name,status from user_objects where object_type='PROCEDURE';
查看函数和过程的源代码
select text from all_source where owner=user and name=upper('&plsql_name');
8、SQL时间计算
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'yyyyMMdd') SYY FROM DUAL; --计算上一个月
9、Oracle的connect by level的使用
获取连续数字示例代码:
1 -- 获取连续的数据(注意:level只用使用<,<=,=符号)
2 select level from dual connect by level <= 5; -- 1 2 3 4 5
获取连续的日期示例代码:
1 -- 获取连续的指定时间(注意:获取连续的时间需要包含当天需要再+1天)
2 select sysdate-level+1 days from dual connect by level <= 5;
统计填充示例代码:
1 /*
2 问题:查询1981年每月入职的人数,没有入职的以0补充
3 解决:1.创建一个连续的年份表进行关联
4 2.关联的条件,截取时间相等进行关联
5 3.注意:a.需要所有的时间,因此要让时间表主表
6 b.如果emp表有条件,要单独在(SELECT * FROM emp)中添加,不然会影响结果,导致时间不全
7 c.使用其他函数,如SUM求和可能为空用NVL函数,这里以count函数举例
8 */
9 SELECT times.days 月份,NVL(COUNT(e.EMPNO),0) 入职人数 FROM (SELECT * FROM emp) e
10 RIGHT JOIN (
11 select TO_CHAR(ADD_MONTHS(TO_DATE('2010-12-01', 'yyyy-MM-dd'),-LEVEL+1),'yyyy-MM') days
12 FROM dual CONNECT BY LEVEL <= 12
13 ) times
14 ON SUBSTR(TO_CHAR(e.HIREDATE,'yyyy-MM-dd hh24:mi:ss'), 0, 7) = times.days
15 GROUP BY times.days
16 ORDER BY times.days
月份 入职人数
2010-01 0
2010-02 2
————————————————
版权声明:本文为CSDN博主「fred_kang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fred_kang/article/details/84837049
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2016-07-29 OVER(PARTITION BY)函数介绍
2016-07-29 分组求和SQL示例
2016-07-29 over partition by与group by 的区别
2016-07-29 SQL集合运算参考及案例(一):列值分组累计求和
2016-07-29 Oracle Partition By 的使用
2016-07-29 oracle 10g函数大全--分析函数
2016-07-29 OVER(PARTITION BY)函数用法