网站首页
手机版

SQL Server常用查询命令

更新时间:作者:佚名

老铁们,大家好,相信还有很多朋友对于SQL Server常用查询命令和的相关问题不太懂,没关系,今天就由我来为大家分享分享SQL Server常用查询命令以及的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

-- 语法:SELECT * FROM 表名; (*效率低,易受表结构变化影响) SELECT * FROM dbo.Student; -- dbo 是默认架构,可以省略。建议显式写

2. 查询指定字段 + 别名

SQL Server常用查询命令

sql

-- 语法:SELECT 字段1 [AS] 别名1,字段2 别名2 FROM 表名; ([]为可选) SELECT Id AS 学生ID、姓名、年龄、CreateTime 注册时间FROM dbo.Student;

3. 去重查询(消除重复记录)

sql

-- 语法:SELECT DISTINCT FROM 表名;从dbo.Student 中选择不同的ClassId 班级ID; -- 查询所有唯一类ID

4. 常量字段(新增固定值列)

。核心使用WHERE子句,支持多种条件组合,是SQL Server独有的:TOP取前N项,IIF进行简单判断,操作符与一般SQL一致。

1. 单条件 + 范围查询

sql

-- 常用运算符:=, BETWEEN.AND. IN, LIKE, IS NULLSELECT Name, Age FROM dbo.Student WHERE Age BETWEEN 8 AND 12; -- 年龄8-12岁(含边界) SELECT Name FROM dbo.Student WHERE ClassId IN (1, 3, 5); -- 班级ID 1、3、5

2. 多条件组合(AND/OR/NOT)

sql 的学生

选择名称name,分数FROM dbo.Exam,其中主题='数学' AND 分数=85 AND NOT 分数=100; -- 数学成绩85且不等于100的学生

3. 模糊查询(LIKE)

sql

-- %:匹配任意0-N个字符; _:匹配1个任意字符; []:匹配指定范围/集合SELECT Name FROM dbo.Student WHERE Name LIKE '李%'; -- 所有姓张的学生SELECT Name FROM dbo.Student WHERE Name LIKE '李[小大]%'; -- 名字以“李小”或“李大”开头的学生(如“李小华”、“李大庄”)

4. 空值查询(IS NULL/IS NOT NULL)

sql

-- 注意:不能使用=NULL 或!=NULL,必须使用IS 关键字。从dbo.Student 中选择姓名,其中电话为NULL; -- 查询没有手机号码的学生。从dbo.Student 中选择姓名,其中电话不为空; -- 查询学生手机号码。

三、排序 + 取前 N 条(数据整理)

1. 排序查询(ORDER BY)

SQL

-- 语法:ORDER BY 字段1 [ASC/DESC],字段2 [ASC/DESC]; (默认ASC升序,DESC降序) SELECT Name, Age, Score FROM dbo.Exam ORDER BY Score DESC, Age ASC; -- 首先按成绩降序排列,同分则按年龄升序排列

2. 取前 N 条数据(TOP,SQL Server 特有)

sql

-- 语法:SELECT TOP N fields FROM 表名; (N是数字,可与ORDER BY一起使用) SELECT TOP 10 Name, Score FROM dbo.Exam ORDER BY Score DESC; -- 查询前10名学生

3. 取百分比数据(TOP + PERCENT)

sql

-- 场景:SELECT TOP 20 PERCENT Name, Score FROM dbo.Exam ORDER BY Score DESC;

四、聚合查询(数据统计)

常用聚合函数:COUNT()(计数)、SUM()(求和)、AVG()(平均)、MAX()(最大值)、MIN()(最小值),支持DISTINCT去重统计。

sql

-- 1. 统计(统计总人数、非空字段数) SELECT COUNT(*) AS 学生总数, -- 统计所有行(包括空字段) COUNT(DISTINCT ClassId) AS 班级数, -- 统计唯一班级数COUNT(Phone) AS 手机号人数-- 统计手机号非空人数FROM dbo.Student;-- 2.求和、平均值、最大值和最小值SELECT SUM(Score) AS 总数学成绩、AVG(Score) AS 平均数学成绩、MAX(Score) AS 最高成绩、MIN(Score) AS 最低成绩FROM dbo.Exam WHERE subject='Math';

五、分组查询(按类别统计)

使用GROUP BY进行分组,具有聚合函数; HAVING 过滤组结果(区别:WHERE 过滤行,HAVING 过滤组,支持聚合函数)。

sql

-- 1.按班级分组,统计每个班级的人数和平均年龄SELECT ClassId 班级ID, COUNT(*) 人数,AVG(Age) 平均年龄FROM dbo.Student GROUP BY ClassId; -- 分组字段必须出现在SELECT中(聚合函数除外) -- 2.过滤分组:只显示30人的班级SELECT ClassId 班级ID, COUNT(*) 人数FROM dbo.Student GROUP BY ClassId HAVING COUNT(*)=30; -- 聚合函数

六、关联查询(多表联合)

可以在HAVING之后直接使用。它支持INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)和FULL JOIN(全连接)。建议使用AS(可选)作为SQL Server表别名。

示例表结构

学生表(Student):Id、Name、ClassId 班级表(Class):Id、ClassName、Teacher

1. 内连接(只显示匹配数据)

sql

-- 语法:表1 INNER JOIN 表2 ON 关联条件SELECT s.Name 学生姓名,c.ClassName 班级名称,c.Teacher 班主任FROM dbo.Student s -- s 为Student 表的别名INNER JOIN dbo.Class c -- c 为Class 表的别名ON s.ClassId=c.Id; -- 关联条件:学生表ClassId=班级表Id

2. 左连接(左表全显,右表匹配不到为 NULL)

sql

-- 场景:查询所有学生,没有班级的学生显示“未分类” SELECT s.Name 学生姓名,IIF(c.ClassName IS NULL, '未分类', c.ClassName) 班级名-- IIF 是SQL Server 的唯一判断函数FROM dbo.Student sLEFT JOIN dbo.Class cON s.ClassId=c.Id;

七、分页查询(SQL Server 2012+ 推荐)

SQL Server 分页有两种方式:OFFSET FETCH(2012及以上版本,推荐)、ROW_NUMBER()(兼容老版本),以下是主流用法。

1. OFFSET FETCH 分页(简洁高效)

sql

-- 语法:OFFSET 起始索引ROWS FETCH NEXT 每页的项目数ROWS ONLY; (起始索引从0开始) -- 场景:第2页,每页10条数据(起始索引=10) SELECT Id, Name, Age FROM dbo.Student ORDER BY Id ASC -- 分页必须与ORDER BY匹配,否则会报错OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;

2. ROW_NUMBER () 分页(兼容旧版本)

sql

-- 先给数据添加行号,然后筛选行号范围SELECT * FROM ( SELECT Id, Name, Age, ROW_NUMBER() OVER (ORDER BY Id ASC) AS RowNum -- 按Id升序添加行号FROM dbo.Student) AS Temp -- 子查询必须添加别名WHERE Temp.RowNum BETWEEN 11 AND 20; -- 第2 页,每页10 项(第11-20 行)

八、常用辅助查询(实用场景)

1. 查询表结构(字段、类型、约束)

sql

为您推荐

江西六所二级大学每年都会降低录取分数线。需要二级招生的考生可以参考

又快到一年一度的高考了,想必现在的高三学们子正在经历紧张的备考,努力学习着,以期待能考上一所理想的大学。但是作为一种人才选拔的竞争考试,大学并不是那么容易考的,

2025-12-14 08:16

结果将于10月12日出炉! 2019年二年级学生地方考试成绩即将公布

深圳家长注意啦!深圳市 2019 年初二生物与地理学业水平考试成绩查询时间已公布,10 月 12 日 10 时开始,考生可在 " 深圳招考网 "(http://

2025-12-14 08:15

《中考加油站》记忆中的中考

提到中考,会牵出很多人的一段回忆,有的对自己的中考经历感慨万千,有的人则是对陪考的经历记忆犹新。今天是2021年吉林省中考的第一天,您是否还记得当年的中考,有什

2025-12-14 08:14

湖南省一流高校和真正一流高校名单

21世纪初,湖南省老牌一本有湖大、中南、师大、湘大和国防科大。国防科技大学其他高校升一本时间线如下:湖南省大学升一本的时间表如下:1. 2007年:长沙理工大学

2025-12-14 08:14

2012年高考日语真题

2025-12-14 08:12

案例竞赛背后的教与学:交大MBA师生的实践传承、成长与蜕变

在西安交大MBA与EMBA,始终有人同行、始终有人支撑。志同道合与并肩奋斗正在不间断地发生。“我们再推演一次,假设你是企业决策者,这个方案能经得住市场考验吗?”

2025-12-14 08:11