news 2026/7/8 1:28:51

SQL Server从入门到实战:30分钟掌握核心操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL Server从入门到实战:30分钟掌握核心操作
一、基础架构与数据类型:先搞清楚“房子”长什么样
1. 架构 (Schema)

这是和 MySQL 最大的逻辑差异。SQL Server 的层级是:实例 -> 数据库 -> Schema -> 表。

  • Schema 是一个逻辑容器,用于对表、视图、存储过程等对象进行分组和权限管理。默认 Schema 是dbo
  • 访问表时,推荐使用完全限定名:[数据库名].[Schema名].[表名],例如EAPDB.dbo.Equipment
2. 核心数据类型

把 MySQL 的类型在心里做个映射:

场景MySQL 类型SQL Server 类型 (最常用)备注
整数主键INTINT完全一样
自增主键INT AUTO_INCREMENTINT IDENTITY(1,1)这是必须记住的关键区别
变长字符串VARCHAR(n)VARCHAR(n)NVARCHAR(n)NVARCHAR存 Unicode,推荐用它以支持中文和多语言
文本TEXTVARCHAR(MAX)NVARCHAR(MAX)MAX取代了旧式TEXT类型
日期时间DATETIMEDATETIME2DATETIME2精度更高、范围更广,是推荐类型
布尔值TINYINT(1)BOOLBITSQL Server 没有布尔类型,BIT存 0/1/NULL
浮点数FLOAT,DOUBLEFLOAT,REAL通常用FLOAT就行
二、核心编程对象:从表到逻辑的封装

这也是一个重要的思维转变。MySQL 通常将复杂逻辑写在业务代码中,而 SQL Server 这类商业数据库更倾向于将数据处理逻辑封装在数据库内部,你拿到的 EAP 框架很可能就是这样。

1. 视图 (View)

就是一个保存下来的SELECT查询。

-- 创建一个视图,方便查询设备及其当前状态CREATEVIEWdbo.vw_EquipmentStatusASSELECTe.EquipmentID,e.EquipmentName,s.StatusName,s.LastUpdateTimeFROMdbo.Equipment eINNERJOINdbo.EquipmentStatusLog sONe.EquipmentID=s.EquipmentIDWHEREs.IsCurrent=1;-- 假设有一个字段标记是否为当前状态GO
2. 存储过程 (Stored Procedure)

数据库的核心利器,用于封装事务性业务逻辑。你的 EAP 框架里,诸如“下发工单”、“报工”等操作,极有可能就是调用一个存储过程完成的。

-- 创建一个完成工单下发的存储过程CREATEPROCEDUREdbo.usp_DispatchWorkOrder@WorkOrderIDVARCHAR(50),-- 参数@EquipmentIDINT,@OperatorNameNVARCHAR(50)ASBEGIN-- 防止数据集返回影响后续逻辑SETNOCOUNTON;BEGINTRYBEGINTRANSACTION;-- 开启事务-- 1. 插入工单记录INSERTINTOdbo.WorkOrder(OrderID,EquipmentID,Status,CreateTime)VALUES(@WorkOrderID,@EquipmentID,'Dispatched',GETDATE());-- 2. 更新设备状态为“工作中”UPDATEdbo.EquipmentSETCurrentStatus='Running'WHEREEquipmentID=@EquipmentID;-- 3. 记录操作日志INSERTINTOdbo.OperationLog(Action,Operator,LogTime)VALUES('下发工单 '+@WorkOrderID,@OperatorName,GETDATE());COMMITTRANSACTION;-- 提交事务ENDTRYBEGINCATCHROLLBACKTRANSACTION;-- 回滚事务-- 抛出错误信息THROW;ENDCATCHENDGO
3. 函数 (Function)

与存储过程不同,函数必须有返回值,且通常放在SELECT语句里用。

-- 创建一个函数,计算设备的OEE(简化示例)CREATEFUNCTIONdbo.fn_CalculateOEE(@GoodPartsINT,@TotalRunTimeINT,@PlannedProductionTimeINT)RETURNSFLOATASBEGINRETURNCAST(@GoodPartsASFLOAT)/(@TotalRunTime/@PlannedProductionTime);ENDGO
三、查询增强:你熟悉的基础之上的强大特性

这些是你必须掌握的,在项目中会大量使用。

1. TOP 关键字

用于限制返回的行数,功能等同于 MySQL 的LIMIT,但写法不同。

SELECTTOP10*FROMdbo.AlarmLogORDERBYLogTimeDESC;-- 最近10条报警
2. OVER() 子句 (窗口函数)

这是从 MySQL 进阶到商业数据库最需要掌握的特性。它可以在不改变原始行的情况下进行聚合计算。

-- 1. ROW_NUMBER():为结果集的行编号,常用于分页-- 这是 SQL Server 2012 之前最经典的分页方式SELECT*FROM(SELECT*,ROW_NUMBER()OVER(ORDERBYCreateTimeDESC)ASRowNumFROMdbo.WorkOrder)AStmpWHERERowNumBETWEEN21AND30;-- 2. 与 PARTITION BY 结合:按组编号,非常强大-- 查询每台设备最新的5条报警记录SELECT*FROM(SELECT*,ROW_NUMBER()OVER(PARTITIONBYEquipmentIDORDERBYLogTimeDESC)ASRowNumFROMdbo.AlarmLog)AStmpWHERERowNum<=5;
3. 通用表表达式 (CTE)

WITH ... AS定义一个临时结果集,让复杂查询逻辑更清晰。

-- 查询设备运行时长超过平均值的设备WITHEquipmentRunTimeAS(SELECTEquipmentID,SUM(RunSeconds)ASTotalRunTimeFROMdbo.StatusLogWHEREStatus='Running'GROUPBYEquipmentID)SELECTe.EquipmentName,rt.TotalRunTimeFROMEquipmentRunTime rtJOINdbo.Equipment eONe.EquipmentID=rt.EquipmentIDWHERErt.TotalRunTime>(SELECTAVG(TotalRunTime)FROMEquipmentRunTime);
四、常用系统函数:需要查帮助时知道去哪儿找

SQL Server 提供了丰富的内置函数,以下是你需要熟悉的关键词:

  • 字符串处理CHARINDEX,PATINDEX,SUBSTRING,REPLACE,UPPER/LOWER
  • 日期时间GETDATE(),DATEADD,DATEDIFF,YEAR/MONTH/DAY(),FORMAT
  • 数据类型转换CAST(expr AS type),CONVERT(type, expr, style)
  • 空值处理ISNULL(check_expr, replacement_value)
给你的上手建议

你现在可以这样开始:

  1. 连接上 SQL Server,对照着上面的例子,亲手敲一遍CREATE TABLE,INSERT,SELECT
  2. 重点练习OVER()CTE,这是分析复杂数据(比如设备效率、不良品统计)的利器。
  3. 将你项目里的一个表,尝试用 MySQL 和 SQL Server 两种语法都实现一遍,比如“查询所有‘运行’状态设备的最新一条日志”,你会发现差异和共通点。

这样系统性地过一遍,你拿到的 PLDEAPSolution 项目里的数据访问层代码,读起来就会非常顺畅了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 1:28:32

PCB串扰抑制:容性耦合噪声公式推导与3种屏蔽层接地方案对比

PCB串扰抑制&#xff1a;容性耦合噪声公式推导与3种屏蔽层接地方案对比在高速数字电路设计中&#xff0c;信号完整性问题往往成为工程师面临的最大挑战之一。当两条信号线在PCB上平行布线时&#xff0c;攻击线&#xff08;Aggressor&#xff09;上的高速跳变信号会通过电场&…

作者头像 李华
网站建设 2026/7/8 1:28:24

语音机器人厂家排名怎么看?千创云呼智能营销全链路解决方案

在智能外呼行业合规化发展的背景下&#xff0c;企业在选型时更倾向于考察系统的全链路整合能力与合规性。千创云呼作为面向中小微及成长型企业的智能营销方案提供商&#xff0c;其技术架构与落地数据具有一定的行业参考价值。本文基于公开资料与实测数据&#xff0c;对其核心产…

作者头像 李华
网站建设 2026/7/8 1:28:14

10分钟了解一下jdk21 的一些新特性

JDK21 核心新特性一、重磅稳定正式特性&#xff08;生产可直接使用&#xff09;1. JEP444 虚拟线程 Virtual Threads&#xff08;最核心、变革并发编程&#xff09;底层原理传统平台线程&#xff1a;1:1 绑定操作系统内核线程&#xff0c;每个线程栈默认 1MB&#xff0c;数量上…

作者头像 李华
网站建设 2026/7/8 1:23:13

Allegro 17.2 3D封装映射实战:从立创EDA到FreeCAD处理的5步避坑指南

Allegro 17.2 3D封装映射实战&#xff1a;从立创EDA到FreeCAD处理的5步避坑指南在硬件设计领域&#xff0c;3D PCB协同设计已成为提升产品可靠性和缩短开发周期的关键环节。本文将深入解析如何将立创EDA的3D模型无缝导入Allegro 17.2环境&#xff0c;并针对FreeCAD模型处理和Al…

作者头像 李华
网站建设 2026/7/8 1:20:48

MHMarkets迈汇:“院线复苏仍看资产负债”

Yahoo Finance报道&#xff0c;AMC Entertainment股价在7月6日承压&#xff0c;原因是公司近期发行股票改善流动性&#xff0c;但也让投资者重新评估夏季票房回暖能否真正转化为财务修复&#xff0c;MHMarkets迈汇认为&#xff0c;市场更关注复苏质量而非单一客流数据。影院行业…

作者头像 李华
网站建设 2026/7/8 1:20:15

求职简历PPT推荐哪家模板?2026年主流平台横评与选型指南

技术人的简历&#xff0c;不该被排版拖后腿 前言 又是一年求职季。相信不少技术圈的朋友都经历过这样的场景&#xff1a;项目经历写得清清楚楚、技术栈列得明明白白、开源贡献也梳理得整整齐齐&#xff0c;结果到了简历呈现这一步——Word排版总对不齐&#xff0c;套用模板又怕…

作者头像 李华