利用SQLServer 一步步掌握查询技巧

一、基础查询

1.查询所有数据

在SQL Server中查询所有数据可采用SELECT语句,其基本语法为:

SELECT * FROM 表名;

其中,*号表示查询表中的所有数据,FROM后面紧跟表名。

例如,查询学生表(student)中的所有数据,可使用以下命令:

SELECT * FROM student;

2.查询指定数据

如果需要查询指定的数据,可在SELECT语句中添加WHERE子句。WHERE子句用于指定查询条件,符合条件的数据才会被查询出来。

WHERE子句的语法格式为:

SELECT * FROM 表名 WHERE 列名=值;

其中,列名为表中的列名,值为要查询的数据值。例如查询学生表(student)中学号为20180101的数据,可使用以下命令:

SELECT * FROM student WHERE 学号='20180101';

二、排序查询

1.升序排序

在SQL Server中,数据排序可使用ORDER BY子句,通过ORDER BY子句指定排序的列和排序方式,以获取有序数据。

ORDER BY子句的语法格式为:

SELECT * FROM 表名 ORDER BY 列名 [ASC|DESC];

其中,ASC代表升序排列,DESC代表降序排列。默认情况下,ORDER BY子句采用升序排列。

例如,查询学生表(student)中按照成绩(score)从低到高排序的数据,可使用以下命令:

SELECT * FROM student ORDER BY score ASC;

2.降序排序

如果需要按照降序排列,则需在ORDER BY子句中添加DESC关键字。例如,查询学生表(student)中按照成绩(score)从高到低排序的数据,可使用以下命令:

SELECT * FROM student ORDER BY score DESC;

三、聚合查询

1.统计查询

统计查询用于对数据进行总数、平均值、最大值、最小值等统计操作,可使用聚合函数实现。

常用的聚合函数包括SUM、AVG、MAX、MIN、COUNT等。

例如,查询学生表(student)中总人数、平均成绩、最高成绩、最低成绩,可使用以下命令:

SELECT COUNT(*) AS '学生总人数',AVG(score) AS '平均成绩',MAX(score) AS '最高成绩',MIN(score) AS '最低成绩' FROM student;

其中,COUNT(*)表示查询student表中的所有记录数,AVG、MAX、MIN分别表示计算平均值、最大值、最小值,AS用于为聚合函数结果列设置别名。

2.分组查询

分组查询用于对数据按照一定规则进行分组,再对分组后的数据进行聚合查询。常用的分组函数包括GROUP BY和HAVING。

例如,查询学生表(student)中各个班级(grade)的平均成绩并按照成绩升序排序,可使用以下命令:

SELECT grade AS '班级',AVG(score) AS '平均成绩' FROM student GROUP BY grade ORDER BY 平均成绩 ASC;

其中,GROUP BY关键字用于指定分组的列,AVG函数用于计算平均值,HAVING子句用于限定结果集。

四、联合查询

1.UNION查询

UNION查询用于将两个或多个SELECT语句的结果集合并为一个结果集。

UNION查询要求要合并的SELECT语句所查询的列数必须相同,对应列的数据类型也要相同。

例如,查询学生表(student)中的男生数据和女生数据,可使用以下命令:

SELECT * FROM student WHERE sex='男'

UNION

SELECT * FROM student WHERE sex='女';

2.UNION ALL查询

相比于UNION,UNION ALL不进行去重操作,即会将两个或多个SELECT语句的结果集都取出来并合并。

例如,查询学生表(student)中男生和女生的总人数,可使用以下命令:

SELECT '男生' AS '性别',COUNT(*) AS '人数' FROM student WHERE sex='男'

UNION ALL

SELECT '女生' AS '性别',COUNT(*) AS '人数' FROM student WHERE sex='女';

其中,UNION ALL关键字用于指定使用UNION ALL方式合并结果集。

五、子查询

1.单行子查询

单行子查询用于返回一行数据,常用于WHERE子句中作为子查询。

例如,查询学生成绩表中最高成绩的学号和姓名,可使用以下命令:

SELECT 学号,姓名 FROM score WHERE 成绩=(SELECT MAX(成绩) FROM score);

其中,MAX函数用于计算最高成绩。

2.多行子查询

多行子查询用于返回多行数据,常用于WHERE子句中作为子查询。

例如,查询学生成绩表中成绩高于平均成绩的学号和姓名,可使用以下命令:

SELECT 学号,姓名 FROM score WHERE 成绩>(SELECT AVG(成绩) FROM score);

其中,AVG函数用于计算平均成绩。

六、连接查询

1.LEFT JOIN查询

LEFT JOIN查询用于按照左边表(即SELECT语句中出现在LEFT JOIN前面的表)中的所有记录显示结果,并在需要时将与右边表(即SELECT语句中出现在LEFT JOIN后面的表)匹配的记录合并到结果中。

例如,查询学生与学生成绩表的信息,可使用以下命令:

SELECT student.学号,student.姓名,score.成绩 FROM student LEFT JOIN score ON student.学号=score.学号;

2.INNER JOIN查询

INNER JOIN查询只返回左右两个表中有匹配的记录,即返回两个表中交集部分的数据。

例如,查询学生与选课表的信息,可使用以下命令:

SELECT student.学号,student.姓名,course.课程名 FROM student INNER JOIN course ON student.学号=course.学号;

其中,INNER JOIN关键字用于指定使用INNER JOIN方式合并结果集。

七、总结

通过本文尝试将SQL Server中常用的查询方式进行总结并且提供了详细的查询示例,涉及基础查询、排序查询、聚合查询、联合查询、子查询和连接查询等方面的内容。掌握这些查询方式可以更加高效的进行数据库查询和数据分析等操作。

数据库标签