SqlPlus 连接数据

Enter user-name: [email protected]"localhost:1522/xepdb1"
Enter password:
Last Successful login time: Sun Nov 20 2022 13:46:16 +08:00

Connected to:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production

select 1+1 from dual; DUAL 是oracle 自带的虚拟空表。

使用DBMS_SQL.return_result来显示游标(只支持sys_refcursor)的内容(只支持储存过程输出的ref游标)

declare
   REP_CURSOR  SYS_REFCURSOR;
BEGIN
    "INVENTORY_PERIOD"(REP_CURSOR, '3300', TO_DATE ('11-11-2022 10:51:57', 'DD-MM-YYYY HH24:MI:SS'), TO_DATE ('12-11-2022 10:52:01', 'DD-MM-YYYY HH24:MI:SS'), '9');
    DBMS_SQL.return_result(rep_cursor);
END;

也可以使用print rep_cursor 来显示游标的内容,但是pl sql 单个脚本只支持一个匿名块,可以用只包含/ 的行来告诉客户端把脚本分多次提交,也可以在一个大的匿名块里包含多个匿名块。

begin
declare
   REP_CURSOR  SYS_REFCURSOR;
BEGIN
    "INVENTORY_PERIOD"(REP_CURSOR, '3300', TO_DATE ('11-11-2022 10:51:57', 'DD-MM-YYYY HH24:MI:SS'), TO_DATE ('12-11-2022 10:52:01', 'DD-MM-YYYY HH24:MI:SS'), '9');
END;
begin
   select 1+1 from dual;
end;
end;

trunc(sysdate, ‘DD’) 取系统当前日期,只保留到天, sysdate => now()

select * from logs where rownum < 5; 告诉数据库只返回前5行

timestamp ‘2022-10-10 08:00:00.000’ 等价于 { ts ‘2022-10-10 08:00:00.000’}

(Date ‘2022-10-01’) + 1/3 的意思2022年10月1号上午8点。 Date 类型的默认单位为天,1/3 即8小时。

查看用户的全部表
select * from user_tables;
查看所有表空间及表空间大小:

select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;

查看所有表空间对应的数据文件大小:

select tablespace_name,file_name from dba_data_files; 列出当前用户可以访问的全部表

列出系统用户

SELECT * FROM all_users;

SELECT * FROM dba_users;
SELECT * FROM user_users;

接手一个老项目时,往往没有健全的文档可以参考,使用 pl/sql developer 导出user objects 到 sql 脚本,然后在sql 脚本里查找表的引用情况。

在只使用标准sql语句的情况下,处理树形数据结构需要一定技巧。https://www.cnblogs.com/youxin/p/3614726.html

oracle 提供的connect by 可以方便地处理树型数据结构。 使用connect by 来生成等差序列

SELECT 
                (DATE '2022-10-01')- 1  + 1 / 3 + level prod_date
  FROM DUAL
CONNECT BY DATE '2022-10-01' + level <= DATE '2022-10-30'

pivot, 可以把行转为列。假设表T有A,B,C 三列,A列的取值集合为{1,2,3},需要转为表A1,A2,A3,B,C。

select * from t pivot (sum(B),sum(C) for A in (1,2,3))

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据