1. MSSQL数据库查询操作简介
查询是数据库中最基本的操作之一,通常也是数据库操作中最为繁琐和复杂的一部分。在MSSQL数据库中,查询操作主要是使用SQL语言来实现。
SQL,即Structured Query Language,结构化查询语言。SQL语言是数据库标准查询语言,它可以执行以下几种操作:查询、插入、更新、删除、创建、更改表结构等等。
在MSSQL数据库中,通过使用SELECT语句实现查询操作。
2. SELECT语句的语法
SELECT语句是MSSQL数据库中用来查询数据的最基本的语句。下面给出SELECT语句的基本语法:
SELECT 【ALL | DISTINCT】 【TOP n [PERCENT]】
column1 [, column2, ...]
FROM table1 [, table2, ...]
[WHERE condition]
[GROUP BY column1 [, column2, ...] ]
[HAVING condition]
[ORDER BY column1 [, column2, ...] [ASC | DESC] ]
以上语法中,SELECT关键字、FROM 关键字和至少一个列名是必须的。其他部分是可选的。
2.1 SELECT语句各部分的说明
2.1.1 SELECT关键字
SELECT关键字用于告诉MSSQL数据库要查询数据,这个关键字可以使用如下两种方式:
SELECT * FROM table;
SELECT column1, column2 FROM table;
第一种方式通常用于查询表中的全部数据,而第二种方式用于查询表中指定列的数据。
2.1.2 ALL和DISTINCT关键字
ALL和DISTINCT关键字用于指定查询数据是否去重复。ALL关键字表示查询所有的数据,而DISTINCT关键字表示查询去重复后的数据。
例如:
--查询所有的姓名
SELECT ALL name FROM students;
--查询去重复后的姓名
SELECT DISTINCT name FROM students;
2.1.3 TOP关键字
TOP关键字用于指定查询的前n条记录。
例如:
--查询学生表中前五个学生记录
SELECT TOP 5 * FROM students;
2.1.4 FROM关键字
FROM关键字用于指定要查询的表名。
例如:
--查询学生表中的所有记录
SELECT * FROM students;
2.1.5 WHERE关键字
WHERE关键字用于指定查询条件,只有符合条件的记录才会被查询。
例如:
--查询学生表中年龄大于20岁的记录
SELECT * FROM students WHERE age > 20;
2.1.6 GROUP BY关键字
GROUP BY关键字用于分组查询,通常和聚合函数一起使用,例如:SUM、AVG、MAX、MIN等。
例如:
--查询学生表中每个年龄段的人数
SELECT age, COUNT(*) FROM students GROUP BY age;
2.1.7 HAVING关键字
HAVING关键字用于指定分组查询的条件,只有符合条件的分组才会被查询。
例如:
--查询学生表中年龄大于20岁的学生中每个班级的平均成绩大于80分的班级号和平均成绩
SELECT class_id, AVG(score) FROM students WHERE age > 20 GROUP BY class_id HAVING AVG(score) > 80;
2.1.8 ORDER BY关键字
ORDER BY关键字用于对查询的结果进行排序,默认是升序排列。
例如:
--查询学生表中按年龄从小到大排序的记录
SELECT * FROM students ORDER BY age;
3. MSSQL数据库查询操作实例
3.1 查询表中的全部数据
下面的示例中,我们查询学生表中的全部记录:
SELECT * FROM students;
以上语句中,*表示查询所有的列名,students表示查询的表名。
3.2 查询指定列的数据
下面的示例中,我们查询学生表中的学号和姓名两列:
SELECT id, name FROM students;
以上语句中,id和name表示查询的列名,students表示查询的表名。
3.3 查询符合条件的数据
下面的示例中,我们查询学生表中年龄大于20岁的记录:
SELECT * FROM students WHERE age > 20;
以上语句中,WHERE age > 20表示只查询年龄大于20岁的记录。
3.4 对查询结果进行分组
下面的示例中,我们查询学生表中每个班级的平均成绩:
SELECT class_id, AVG(score) FROM students GROUP BY class_id;
以上语句中,class_id表示按照班级号来分组,AVG(score)表示对每个班级的成绩求平均值。
3.5 对分组后的结果进行筛选
下面的示例中,我们查询学生表中年龄大于20岁的学生中每个班级的平均成绩大于80分的班级号和平均成绩:
SELECT class_id, AVG(score) FROM students WHERE age > 20 GROUP BY class_id HAVING AVG(score) > 80;
以上语句中,WHERE age > 20表示只查询年龄大于20岁的学生;GROUP BY class_id表示按照班级号来分组;HAVING AVG(score) > 80表示对每个班级的成绩求平均值后,只选择平均成绩大于80分的班级。
3.6 按照指定列排序
下面的示例中,我们查询学生表中按照年龄从小到大排序的记录:
SELECT * FROM students ORDER BY age;
以上语句中,ORDER BY age表示按照年龄排序,升序排列。
4. 总结
本文主要介绍了MSSQL数据库中查询操作的基本语法和实例,对于刚入门的MSSQL数据库用户来说,这些内容是必须掌握的基本知识。