SQL Server 面试题 本文总结了 SQL Server 相关的知识点,涵盖了 SQL 语句的编写、查询优化、表合并、union 和 union all 的区别等内容。 一、查询优化 在 SQL Server 中,查询优化是非常重要的。通过编写高效的 SQL 语句,可以大大提高查询速度。例如,使用索引、优化查询顺序、减少 JOIN 操作等方法可以提高查询效率。 二、查询员工信息 在员工信息表中,需要查询出每门课都大于 80 分的学生姓名。可以使用以下两种方法: 方法一: ```sql select distinct name from stu where name not in (select distinct name from stu where fenshu <= 80) ``` 方法二: ```sql select name from stu group by name having count(kecheng) >= 3 and min(fenshu) >= 80 ``` 这两种方法都可以达到相同的目的,即查询出每门课都大于 80 分的学生姓名。 三、合并列 在某些情况下,需要将两列合并为一列。例如,从 FullName 或 FirstName 列中找出不为空的雇员的名字。可以使用 CASE 语句来实现: ```sql SELECT Name = CASE WHEN EMPLOYEE.FullName IS NOT NULL THEN EMPLOYEE.FullName WHEN EMPLOYEE.FirstName IS NOT NULL THEN EMPLOYEE.FirstName END FROM EMPLOYEE ``` 这条语句将从 FullName 和 FirstName 列中找出不为空的雇员名字,并将其合并为一列。 四、表合并 在某些情况下,需要将多个表合并为一个表。可以使用 UNION 或 UNION ALL 语句来实现。例如: ```sql create table tb1 ( 姓名 varchar(10), 语文 int, 数学 int, 物理 int ) insert into tb1 (姓名, 语文, 数学, 物理) values ('张三', 74, 83, 93) insert into tb1 (姓名, 语文, 数学, 物理) values ('李四', 74, 84, 94) select * from ( select 姓名 as Name, Subject = '语文', Result = 语文 from tb1 union all select 姓名 as Name, Subject = '数学', Result = 数学 from tb1 union all select 姓名 as Name, Subject = '物理', Result = 物理 from tb1 ) t order by Name, case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 end ``` 这条语句将 tb1 表中的数据合并为一个表,并将每个科目的成绩合并为一列。 五、union 和 union all 的区别 union 和 union all 都是将两个结果集合并为一个,但它们在使用和效率上有所不同。union 在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。而 union all 只是简单的将两个结果合并后就返回。从效率上说,union all 要比 union 快很多。 因此,如果可以确认合并的两个结果集中不包含重复的数据,那么就使用 union all。 六、使用 union 组合查询的结果集 使用 union 组合查询的结果集有两个最基本的规则: 1. 所有查询中的列数和列的顺序必须相同。 2. 数据类型必须兼容。
- 粉丝: 27
- 资源: 86
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助