精妙的SQL语句
4星 · 超过85%的资源 需积分: 0 73 浏览量
更新于2007-10-08
4
收藏 78KB DOC 举报
### 知识点一:复制表结构而不复制数据
**标题与描述中的知识点:**
- **标题中的“精妙的SQL语句”** 暗示了这些SQL语句不仅实用,而且在某些方面有着巧妙的设计。
- **描述中的“对学习SQL有很大帮助”** 表明这些SQL语句对于学习者来说是非常有价值的。
**详细知识点说明:**
1. **复制表结构(不包含数据):**
- SQL语句:`SELECT * INTO b FROM a WHERE 1=1;`
- **解析**:这个SQL语句用于创建一个名为`b`的新表,并且该表的结构完全复制自表`a`。其中`WHERE 1=1`是一个常用的技巧,用于确保没有任何行被实际插入到新表中,从而实现仅复制表结构的目的。
### 知识点二:拷贝表结构及数据
**标题与描述中的知识点:**
- **标题中的“精妙的SQL语句”** 和 **描述中的“对学习SQL有很大帮助”** 表明这是一些高效的SQL语句。
**详细知识点说明:**
1. **拷贝表(包含数据):**
- SQL语句:`INSERT INTO b (a, b, c) SELECT d, e, f FROM a;`
- **解析**:这条语句用于将表`a`中的数据复制到新表`b`中,其中`b`的列`a, b, c`分别对应`a`表中的列`d, e, f`。需要注意的是,在执行此操作前,表`b`必须已经存在并且具有相应的列。
### 知识点三:展示文章、提交人及其最后回复时间
**标题与描述中的知识点:**
- **标题中的“精妙的SQL语句”** 和 **描述中的“对学习SQL有很大帮助”** 表明这些SQL语句是经过精心设计的。
**详细知识点说明:**
1. **展示文章、提交人及其最后回复时间:**
- SQL语句:`SELECT a.title, a.username, b.add_date FROM table_a, (SELECT MAX(add_date) add_date FROM table_b WHERE table_b.title = a.title) b;`
- **解析**:这条SQL语句用于查询每个文章的标题、提交人以及针对该文章的最后一条回复的时间。这里使用了一个子查询来获取每篇文章的最后回复时间,并通过内联接的方式将其与原始文章信息关联起来。
### 知识点四:外连接查询
**标题与描述中的知识点:**
- **标题中的“精妙的SQL语句”** 和 **描述中的“对学习SQL有很大帮助”** 表明这些SQL语句是高效的。
**详细知识点说明:**
1. **外连接查询(表名1:a 表名2:b):**
- 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`表中匹配的记录。如果`b`表中没有匹配的记录,则结果集中对应的列将为NULL。这里的连接条件是`a.a = b.c`。
### 知识点五:日程安排提前五分钟提醒
**标题与描述中的知识点:**
- **标题中的“精妙的SQL语句”** 和 **描述中的“对学习SQL有很大帮助”** 表明这些SQL语句是高效的。
**详细知识点说明:**
1. **日程安排提前五分钟提醒:**
- SQL语句:`SELECT * FROM 日程安排 WHERE DATEDIFF('MINUTE', '开始时间', GETDATE()) > 5;`
- **解析**:这条SQL语句用于找出所有距离当前时间超过5分钟的日程安排。这里使用了`DATEDIFF`函数来计算时间差,并用`GETDATE()`函数获取当前时间。
### 知识点六:删除主表中副表已不存在的信息
**标题与描述中的知识点:**
- **标题中的“精妙的SQL语句”** 和 **描述中的“对学习SQL有很大帮助”** 表明这些SQL语句是高效的。
**详细知识点说明:**
1. **删除主表中副表已不存在的信息:**
- SQL语句:`DELETE FROM info WHERE NOT EXISTS (SELECT * FROM info_bz WHERE info.infid = info_bz.infid);`
- **解析**:这条SQL语句用于删除表`info`中不在`info_bz`表中的记录。这里使用了`NOT EXISTS`子句来判断是否有匹配的记录存在于副表中。
### 知识点七:跨表查询并计算特定字段的值
**标题与描述中的知识点:**
- **标题中的“精妙的SQL语句”** 和 **描述中的“对学习SQL有很大帮助”** 表明这些SQL语句是高效的。
**详细知识点说明:**
1. **跨表查询并计算特定字段的值:**
- SQL语句:涉及多表关联及日期函数的复杂查询。
- **解析**:这条SQL语句用于跨多个表进行查询,并计算特定字段的值。它包括了表连接、子查询、日期函数等复杂元素,旨在展示SQL的强大功能。
### 知识点八:按指定条件筛选学生信息
**标题与描述中的知识点:**
- **标题中的“精妙的SQL语句”** 和 **描述中的“对学习SQL有很大帮助”** 表明这些SQL语句是高效的。
**详细知识点说明:**
1. **按指定条件筛选学生信息:**
- SQL语句:`SELECT * FROM student_info WHERE NOT EXISTS (SELECT * FROM student WHERE student_info.id = student.id) AND 系名称 = ‘’" & strDepartmentName & "’’ AND 专业名称 = ‘’" & strProfessionName & "’’ ORDER BY 性别, 生源地, 高考总成绩;`
- **解析**:这条SQL语句用于根据特定条件筛选学生信息,如系名称和专业名称,并排除那些在`student`表中已存在的学生ID。这里还使用了字符串拼接来动态构建SQL查询。
### 知识点九:查询过去一年内的单位电话费用统计
**标题与描述中的知识点:**
- **标题中的“精妙的SQL语句”** 和 **描述中的“对学习SQL有很大帮助”** 表明这些SQL语句是高效的。
**详细知识点说明:**
1. **查询过去一年内的单位电话费用统计:**
- SQL语句:涉及多表连接、日期函数和聚合函数的复杂查询。
- **解析**:这条SQL语句用于查询过去一年内各用户的电话费用情况,包括每月的实际费用统计。这里使用了`DECODE`函数来处理月份,以及多个`SUM`函数来进行聚合计算。