💡 简记:增(INSERT)删(DELETE)改(UPDATE)查(SELECT)是数据库操作的四大基础功能,简称CRUD(Create, Read, Update, Delete)。
本文目录
显示
查 (SELECT)
- 作用:从表中检索数据
- 示例:
SELECT 字段 FROM 表名 WHERE 条件 - 用途:获取信息,如查询订单、生成报表、数据分析
以下是使用USE语句先指定数据库,然后执行查询操作的完整SQL示例:
1. 基础查询
-- 切换到目标数据库
USE [数据库名];
GO
-- 简单查询
SELECT [字段1], [字段2], [字段3]
FROM [架构名].[表名]
WHERE [条件字段] = 条件值;
GO
示例:
USE [销售数据库];
GO
SELECT [订单编号], [客户名称], [订单金额], [下单时间]
FROM [dbo].[订单表]
WHERE [订单状态] = '待付款';
GO
2. 多条件查询
USE [人力资源数据库];
GO
SELECT [员工编号], [员工姓名], [部门], [职位], [基本工资]
FROM [hr].[员工表]
WHERE
[部门] = '技术部'
AND [入职日期] > '2020-01-01'
AND [在职状态] = '在职';
GO
3. 排序查询
USE [库存数据库];
GO
SELECT [产品编号], [产品名称], [库存数量], [最近入库日期]
FROM [dbo].[产品表]
WHERE [库存数量] < 100
ORDER BY [库存数量] ASC, [产品名称] DESC;
GO
4. 分组统计查询
USE [销售数据库];
GO
SELECT
[销售区域],
COUNT(*) AS [订单数量],
SUM([订单金额]) AS [总金额],
AVG([订单金额]) AS [平均金额]
FROM [dbo].[订单表]
WHERE YEAR([下单时间]) = 2023
GROUP BY [销售区域]
HAVING COUNT(*) > 50
ORDER BY [总金额] DESC;
GO
5. 多表关联查询
USE [电商数据库];
GO
SELECT
o.[订单编号],
c.[客户姓名],
p.[产品名称],
o.[购买数量],
o.[订单金额]
FROM [dbo].[订单表] o
INNER JOIN [dbo].[客户表] c ON o.[客户ID] = c.[客户ID]
INNER JOIN [dbo].[产品表] p ON o.[产品ID] = p.[产品ID]
WHERE o.[订单状态] = '已完成'
AND o.[下单时间] BETWEEN '2023-01-01' AND '2023-12-31'
ORDER BY o.[下单时间] DESC;
GO
6. 分页查询
USE [内容管理数据库];
GO
-- SQL Server 2012及以上版本
SELECT [文章ID], [文章标题], [作者], [发布时间], [阅读量]
FROM [dbo].[文章表]
WHERE [分类] = '科技'
ORDER BY [发布时间] DESC
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
GO
-- SQL Server 2008及以下版本
SELECT TOP 10 *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [发布时间] DESC) AS RowNum,
[文章ID], [文章标题], [作者], [发布时间], [阅读量]
FROM [dbo].[文章表]
WHERE [分类] = '科技'
) AS TempTable
WHERE RowNum > 20;
GO
7.去重(唯一)查询
SELECT DISTINCT 字段1, 字段2, ...
FROM 表名;
注意事项
- 每个查询前先用
USE [数据库名];指定目标数据库 - 中文字段名和表名需要用方括号[]括起来
GO语句用于分隔批处理命令- 复杂查询建议先测试WHERE条件是否准确
- 生产环境大数据量查询注意性能影响
查询示例
字符为空NULL值时
判断字符是否为NULL值空值
在 SQL Server(以及所有遵循 SQL 标准的数据库)中,不能使用 = NULL 来判断字段是否为 NULL。这是因为 NULL 表示“未知”或“无值”,而根据 SQL 的三值逻辑(True / False / Unknown),任何与 NULL 的比较(包括 = NULL、<> NULL 等)结果都是 Unknown,而不是 True,因此不会被 WHERE 子句选中。
正确写法:
要查询字段为 NULL 的记录,应使用 IS NULL:
SELECT us.*
FROM WF_WPGL.dbo.UDT_S_129 AS us
WHERE us.UDF_S_183 IS NULL;
错误写法(你当前的写法):
WHERE us.UDF_S_183 = NULL -- ❌ 永远不会返回任何行
补充说明:
- 如果你想查 非 NULL 的记录,用:
WHERE us.UDF_S_183 IS NOT NULL - 如果启用了
SET ANSI_NULLS OFF(不推荐,已弃用),= NULL可能会“看似有效”,但这是非标准行为,且在现代 SQL Server 版本中默认是ON,所以请始终使用IS NULL。
✅ 总结:把你的 = null 改成 IS NULL 即可解决问题。
相关文章
© 版权声明
THE END



![SQL错误[156][S0001]:关键字key附近有语法错误(数据库保留字段查询方法)-本牛千智丨专注WorkFine开发](https://www.bn1000.com/wp-content/uploads/2025/05/20250530165142712-SQL语句.jpg)

![SQL Server中求余数函数方法[实例说明 ]-本牛千智丨专注WorkFine开发](https://www.bn1000.com/wp-content/uploads/2024/03/20240331000232223-求余数函数方法.jpg)









