Oracle PL/SQL是Oracle数据库中的过程化语言,它结合了SQL(Structured Query Language)和编程语言的特性,用于创建复杂的数据库应用程序。以下是一些在Oracle中常用的PL/SQL语句及其示例,适合Oracle初学者参考学习。
- 复制表结构:
CREATE TABLE b AS SELECT * FROM a WHERE 1 = 0;
这条语句会创建一个新表b,其结构与表a相同,但不包含任何数据,因为WHERE子句始终为假。
- 拷贝表数据:
INSERT INTO b(a, b, c) SELECT d, e, f FROM a;
这将把表a的数据复制到表b中,假设列a、b、c与d、e、f相对应。
- 显示文章、提交人和最后回复时间:
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中的文章标题、用户名以及对应标题的最后回复时间。
- 外连接查询:
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表字段。
- 日程安排提前五分钟提醒:
SELECT * FROM schedule WHERE DATEDIFF('minute', start_time, GETDATE()) > 5;
查询距离当前时间超过5分钟的日程安排。
- 删除主表中已不存在于副表的记录:
DELETE FROM info WHERE NOT EXISTS (SELECT * FROM info_bz WHERE info.info_id = info_bz.info_id);
这将删除主表info中在副表info_bz中找不到的记录。
- 比较两个日期:
SELECT * FROM table WHERE start_date > TO_DATE('2024-01-01', 'YYYY-MM-DD');
这个查询会显示所有start_date大于指定日期的记录。