### SQL语句强化练习知识点详解
#### 一、简单查询
**知识点1:列出全部学生的信息**
- 使用`SELECT * FROM 学生`语句,其中`*`表示选取所有列,`FROM`指定从哪个表中选取数据。
**知识点2:列出软件专业全部学生的学号及姓名**
- `SELECT 学号, 姓名 FROM 学生 WHERE 专业 = "软件"`,此语句使用了`WHERE`子句来过滤结果,仅返回满足条件的数据行,这里的专业为软件专业的学生。
**知识点3:列出所有必修课的课号**
- `SELECT DISTINCT 课号 FROM 必修课`,`DISTINCT`关键字用于去除重复的课号,确保返回的结果集中每个课号只出现一次。
**知识点4:求1号课成绩大于80分的学生的学号及成绩,并按成绩由高到低列出**
- `SELECT 学号, 成绩 FROM 选课 WHERE 课号 = "1" AND 成绩 > 80 ORDER BY 成绩 DESC`,`ORDER BY`子句用于对结果进行排序,`DESC`表示降序排列。
**知识点5:列出非软件专业学生的名单**
- 方法一至三展示了不同的逻辑运算符,包括`<>`(不等于)、`NOT`和`!=`,这些都可以用来表示否定条件。
**知识点6:查询成绩在70~80分之间的学生选课得分情况**
- `BETWEEN`关键字用于选择值范围内的记录,其相反操作是`NOT BETWEEN`。
**知识点7:列出选修1号课或3号课的全体学生的学号和成绩**
- `IN`关键字用于在列表中查找值,其相反操作是`NOT IN`,表示不在列表中的值。
**知识点8:列出所有98级学生的学生成绩情况**
- `LIKE`操作符用于模式匹配,`%`作为通配符,表示任意数量的任何字符,可以用于前缀、后缀或两者同时使用。
**知识点9:列出成绩为空值(或不为空值)的学生的学号和课号**
- `IS NULL`用于检测空值,`IS NOT NULL`则检测非空值。
**知识点10:求出所有学生的总成绩**
- `SUM(成绩)`函数用于计算成绩的总和,`AS`关键字用于给结果列命名。
**知识点11:列出每个学生的平均成绩**
- `AVG(成绩)`函数用于计算成绩的平均值,`GROUP BY`子句用于对结果集按照指定的列进行分组。
**知识点12:列出各科的平均成绩、最高成绩、最低成绩和选课人数**
- `MIN()`、`MAX()`、`COUNT()`分别用于找到成绩中的最小值、最大值以及计数。
#### 二、连接查询
**知识点13:列出选修1号课的学生姓名及成绩**
- 使用逗号`,`作为连接符,通过`WHERE`子句来关联两个表,这里是`学生`和`选课`表。
**知识点14:列出选修1号课的学生的学号、姓名及成绩**
- 类似于知识点13,但添加了更多列的展示,使用`AS`为列名添加别名。
**知识点15:求出总分大于150的学生的学号、姓名及总成绩**
- 在`GROUP BY`之后使用`HAVING`子句来过滤分组后的结果,这里的条件是总成绩大于150。
**知识点16:列出那些专业相同的学生相应的姓名及专业信息**
- 使用自连接,即一个表自身与自身进行连接,通过`WHERE`子句来限制连接条件。
**知识点17:求至少选修1号课和2号课的学生的学号**
- 自连接查询,通过两个`WHERE`子句分别限制两个选课的课号,确保学生至少选修了这两门课程。
**知识点18:将所有“外汇汇率”表中的数据插入rate表中**
- 使用`SELECT ... INTO TABLE`语句进行数据插入,涉及三个表之间的连接,通过`WHERE`子句来匹配对应的外币名称和代码。
**知识点19:列出上一级经理及其所领导的职员清单**
- 雇员表中包含雇员号、雇员姓名和经理号,通过自连接查询,可以找出经理及其下属员工的清单。
以上知识点覆盖了SQL的基本查询和高级连接查询技巧,对于学习和掌握SQL语句的编写具有重要的指导意义。