SQL精华语句集锦:复制表结构、数据与复杂查询

需积分: 9 3 下载量 46 浏览量 更新于2024-09-14 收藏 27KB DOCX 举报
"这篇资料是关于SQL语言的经典实例集合,主要涵盖了复制表结构、拷贝数据、外连接查询、时间判断、删除冗余信息等多种实用操作。" 在SQL语言中,有多种常用的语句用于数据库操作。以下是这些经典SQL语句的详细说明: 1. 复制表结构: ```sql select * into b from a where 1<>1 ``` 这条语句用于创建一个与原表`a`结构相同的空表`b`,但不复制任何数据。`where 1<>1`是一个永假条件,确保没有数据被插入。 2. 拷贝表数据: ```sql insert into b(a, b, c) select d, e, f from b; ``` 这个语句将表`b`的`d`, `e`, `f`列的数据插入到新表`b`的相应列`a`, `b`, `c`中,实现了数据的完全拷贝。 3. 显示文章、提交人和最后回复时间: ```sql select a.title, a.username, b.adddate from tablea, (select max(adddate) adddate from table where table.title = a.title) b ``` 这个查询结合了子查询,显示了每个具有最大添加日期(即最后回复时间)的文章标题、作者和日期。 4. 外连接查询: ```sql select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUTER JOIN b ON a.a = b.c ``` 左外连接查询会返回所有左表(这里是`a`)的记录,即使在右表(这里是`b`)中没有匹配的记录。如果在右表中找到匹配,将返回对应的字段值。 5. 日程安排提前五分钟提醒: ```sql select * from 日程安排 where datediff('minute', f开始时间, getdate()) > 5 ``` 查询当前时间距离开始时间超过5分钟的日程,`datediff`函数计算两个日期之间的差值。 6. 删除主表中已经在副表中没有的信息: ```sql delete from info where not exists (select * from info_bz where info.info_id = info_bz.info_id) ``` 使用`not exists`子查询来删除主表`info`中那些在副表`info_bz`中不存在对应信息的记录。 7. 复杂查询示例: ```sql SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE FROM TABLE1, (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DATE, 'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X, (SELECT NUM, UPD_DATE, STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DATE, 'YYYY/MM') = TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') || '/01', 'YYYY/MM/DD') - 1, 'YYYY/MM')) Y WHERE X.NUM = Y.NUM(+) AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND, 0) <> X.STOCK_ONHAND) B WHERE A.NUM = B.NUM ``` 这个复杂的查询涉及到多表联接和时间条件的比较,用于比较两表在特定时间范围内的数据差异。 以上内容是SQL经典语句的一些实例,涵盖了基础操作到更复杂的查询技巧,对于学习和理解SQL语言的操作非常有帮助。在实际工作中,掌握这些技巧能够有效地处理数据和执行复杂的数据库操作。