Oracle PL/SQL是Oracle数据库中的过程化语言,它结合了SQL(Structured Query Language)和编程语言的特性,用于创建复杂的数据库应用程序。以下是一些在Oracle中常用的PL/SQL语句及其示例,适合Oracle初学者参考学习。

  1. 复制表结构
CREATE TABLE b AS SELECT * FROM a WHERE 1 = 0;

这条语句会创建一个新表b,其结构与表a相同,但不包含任何数据,因为WHERE子句始终为假。

  1. 拷贝表数据
INSERT INTO b(a, b, c) SELECT d, e, f FROM a;

这将把表a的数据复制到表b中,假设列a、b、cd、e、f相对应。

  1. 显示文章、提交人和最后回复时间
SELECT a.title, a.username, b.adddate FROM table_a a, (SELECT MAX(adddate) AS adddate FROM table_b WHERE table_b.title = a.title) b;

这个查询会显示表a中的文章标题、用户名以及对应标题的最后回复时间。

  1. 外连接查询
SELECT a.a, a.b, a.c, b.d, b.f FROM a LEFT OUTER JOIN b ON a.a = b.c;

左外连接查询会返回所有来自表a的记录,即使在表b中没有匹配的记录。如果存在匹配,将显示相关联的b表字段。

  1. 日程安排提前五分钟提醒
SELECT * FROM schedule WHERE DATEDIFF('minute', start_time, GETDATE()) > 5;

查询距离当前时间超过5分钟的日程安排。

  1. 删除主表中已不存在于副表的记录
DELETE FROM info WHERE NOT EXISTS (SELECT * FROM info_bz WHERE info.info_id = info_bz.info_id);

这将删除主表info中在副表info_bz中找不到的记录。

  1. 比较两个日期
SELECT * FROM table WHERE start_date > TO_DATE('2024-01-01', 'YYYY-MM-DD');

这个查询会显示所有start_date大于指定日期的记录。