SQL Server T-SQL 一周学习完整概述|约束、多表查询、子查询、事务、模糊查询全套实战
一、前言本周系统学习了 SQL Server T-SQL 完整核心知识从数据库基础、建表与数据四大完整性约束到增删改查基础语法、多表关联查询、子查询、事务处理最后补充生产高频使用的模糊查询 LIKE全套内容。本文整合全部知识点去重梳理配套可直接执行的 SQL 示例适合复习、面试、开发查阅。二、Day01 认识 SQL Server 数据库基础1.核心概念1DB/DBMS/DBA1.DBDatabase数据库存储结构化数据的容器2.DBMS数据库管理系统操作数据库软件主流SQL Server、MySQL、Oracle、DB23.DBA数据库管理员负责库维护、调优、权限管理。2SQL Server 文件结构1..mdf主数据文件一个库只能 1 个2..ldf事务日志文件记录所有增删改操作用于事务回滚、数据恢复3..ndf次要数据文件可选分担存储压力。3系统自带数据库master系统核心库、model新建库模板、msdb代理任务、tempdb临时数据重启清空。4常用数据类型表格类型分类关键字说明整型int存储整数常用于主键 ID、自增标识列货币money自动保留 4 位小数薪资、金额专用布尔bit仅存 0/1代表否 / 是日期date/datetime存储入职时间、创建时间固定字符串nchar(n)长度固定不足补空格查询更快可变字符串varchar(n)/nvarchar(n)占用实际字符长度节省存储空间5示例创建数据库-- 创建测试库 CREATE DATABASE SchoolDB ON PRIMARY ( NAME SchoolDB_Data, FILENAME D:\SQLData\SchoolDB.mdf, SIZE 5MB, FILEGROWTH 2MB ) LOG ON ( NAME SchoolDB_Log, FILENAME D:\SQLData\SchoolDB.ldf, SIZE 2MB, FILEGROWTH 1MB ); GO三、Day02 建表 四大数据完整性约束数据完整性分类思维导图总结1.实体完整性约束行唯一主键、唯一约束、标识自增列2.域完整性约束列数据合法数据类型、非空、默认值、CHECK 检查约束3.引用完整性约束多表关系外键 FOREIGN KEY4.自定义完整性复杂业务规则进阶内容各类约束特点对比1.主键 PRIMARY KEY唯一 非空一张表仅 1 个主键可单字段 / 多字段组合2.唯一 UNIQUE值不能重复允许 1 行 NULL3.标识列 IDENTITY (种子增量)int 专用自动自增无法手动插入4.CHECK 检查约束自定义规则如性别只能男 / 女、年龄 18~605.外键 FOREIGN KEY关联另一张表主键保证引用数据真实存在。完整建表示例带全部约束-- 部门表主键自增 CREATE TABLE dept( id INT PRIMARY KEY IDENTITY(1,1), dname VARCHAR(50) NOT NULL, -- 非空约束 loc VARCHAR(50) DEFAULT 北京 -- 默认值约束 ); -- 员工表含外键、检查约束 CREATE TABLE emp( id INT PRIMARY KEY IDENTITY(1,1), ename NVARCHAR(20) NOT NULL, gender NCHAR(2), salary MONEY, joindate DATE, dept_id INT, -- 检查约束性别只能男/女 CONSTRAINT ck_gender CHECK(gender N男 OR gender N女), -- 外键关联部门表 CONSTRAINT fk_emp_dept FOREIGN KEY(dept_id) REFERENCES dept(id) );四、Day03 T-SQL 增删改查 DML 基础1. DML 分类INSERT/UPDATE/DELETE/SELECT1插入 INSERT-- 指定字段插入 INSERT INTO dept(dname,loc) VALUES(N研发部,N上海); -- 全字段插入顺序匹配表结构 INSERT INTO emp(ename,gender,salary,joindate,dept_id) VALUES(N孙悟空,N男,7200,2013-02-24,1);2修改 UPDATE-- 带条件更新不加WHERE会更新全表高危 UPDATE emp SET salary 8000 WHERE ename N孙悟空;3删除 DELETE / TRUNCATE / DROP 区别DELETE 表名 WHERE 条件删除指定行日志记录可事务回滚自增编号不重置TRUNCATE TABLE 表名清空全表数据不记录单行日志速度快自增重置DROP TABLE 表名直接删除整张表结构 数据无法恢复。DELETE FROM emp WHERE id 1; TRUNCATE TABLE emp; DROP TABLE emp;4基础查询 SELECT-- 基础查询、别名、分页、判空、不等于 SELECT TOP 10 id AS 员工编号, ename 姓名, salary 工资 FROM emp WHERE salary 5000 AND gender IS NOT NULL -- 不为空 AND ename N猪八戒 -- 不等于 ORDER BY salary DESC; -- 降序五、高级查询多表连接、子查询高级查询 PDF 核心1. 笛卡尔积问题多表直接查询不加关联条件会生成两表所有数据组合产生大量无效数据必须用关联条件过滤。2. 内连接 INNER JOIN只查两张表交集数据两种写法隐式 WHERE、显式 JOIN ON-- 隐式内连接 SELECT e.ename,d.dname FROM emp e,dept d WHERE e.dept_id d.id; -- 显式内连接推荐可读性更高 SELECT e.ename,d.dname FROM emp e INNER JOIN dept d ON e.dept_id d.id;3.外连接1.左外连接 LEFT JOIN左表全部数据匹配右表数据无匹配显示 NULLSELECT e.*,d.dname FROM emp e LEFT JOIN dept d ON e.dept_id d.id;2.右外连接 RIGHT JOIN右表全部数据匹配左表数据4. 自连接同一张表上下级关联-- 查询员工和直属领导姓名 SELECT sub.ename 员工,leader.ename 领导 FROM emp sub LEFT JOIN emp leader ON sub.mgr leader.id;5. 子查询三大分类1.单行单列子查询搭配 -- 查询工资高于平均工资的员工 SELECT * FROM emp WHERE salary (SELECT AVG(salary) FROM emp);2.多行单列子查询搭配IN-- 查询财务部、市场部所有员工 SELECT * FROM emp WHERE dept_id IN ( SELECT id FROM dept WHERE dname IN(N财务部,N市场部) );3.多行多列子查询子查询作为虚拟表参与关联-- 查询2011年后入职员工对应部门 SELECT d.*,t.* FROM dept d, (SELECT * FROM emp WHERE joindate 2011-11-11) t WHERE d.id t.dept_id;六、事务 Transaction 转账实战1. 事务作用保证一组增删改操作要么全部成功要么全部失败解决转账、库存扣减等数据一致性问题。事务四大特性 ACID原子性、一致性、隔离性、持久性转账完整事务示例-- 银行账户表 CREATE TABLE bank( uname NVARCHAR(20), umoney MONEY CHECK(umoney 1) ); INSERT INTO bank VALUES(N班长,10000),(N学委,100); -- 事务转账逻辑 DECLARE myerror INT 0; BEGIN TRANSACTION -- 开启事务 -- 扣款 UPDATE bank SET umoney umoney - 5000 WHERE uname N班长; SET myerror myerror ERROR; -- 收款 UPDATE bank SET umoney umoney 5000 WHERE uname N学委; SET myerror myerror ERROR; -- 判断是否出错 IF myerror 0 BEGIN ROLLBACK TRANSACTION; -- 出错回滚 PRINT N转账失败数据回滚; END ELSE BEGIN COMMIT TRANSACTION; -- 无错误提交 PRINT N转账成功; END七、SQL Server T-SQL 模糊查询 LIKE1. LIKE 完整语法SELECT 字段 FROM 表 WHERE 字符串字段 LIKE 匹配模板 [ESCAPE 转义符]四类通配符符号作用示例%0 或多个任意字符ename LIKE N李%_单个任意字符ename LIKE N_悟_[xy]匹配括号内单个字符tel LIKE 1[358]%[^xy]排除括号内字符id LIKE [^0]%2. ESCAPE 转义字段包含_/%时使用-- 查询名称带下划线的记录/为转义符 SELECT * FROM emp WHERE ename LIKE N%/_% ESCAPE /;3. NOT LIKE 反向模糊匹配-- 筛选姓名不含“妖”的员工 SELECT ename,salary FROM emp WHERE ename NOT LIKE N%妖%;4. 多表联查模糊实战-- 查询部门名含“部”、员工姓名含“唐”的数据 SELECT e.ename,d.dname FROM emp e INNER JOIN dept d ON e.dept_id d.id WHERE e.ename LIKE N%唐% AND d.dname LIKE N%部%;5. 数字 / 日期模糊匹配需 CAST 转字符串-- 查询2001年入职员工 SELECT ename,joindate FROM emp WHERE CAST(joindate AS VARCHAR) LIKE 2001%;6. 模糊查询的性能核心要点1.%放在最前面LIKE %关键词索引失效全表扫描2.前缀匹配关键词%可正常走索引3.全文索引解决全局模糊检索%xx%百万级数据高效查询。八、本周知识点整体梳理总结本文整合本周SQL Server T-SQL全部学习内容系统梳理从数据库基础、建表约束、增删改查、多表查询、子查询、事务到模糊查询的完整知识体系。文章先讲解数据库文件、数据类型与四大数据完整性约束搭配带约束的建表代码区分INSERT、UPDATE、DELETE、TRUNCATE、DROP的使用差异详解内/外/自连接与三类子查询实操通过转账案例演示事务回滚与提交机制补充文档未完整覆盖的T-SQL模糊查询包含四类通配符、转义字符、多表模糊匹配及索引优化要点。全文配套可直接执行的SQL示例去重整合多份教学文档内容覆盖开发常用场景清晰梳理知识点层级帮助快速掌握SQL Server核心查询与数据保障能力适用于复习与日常开发查阅。

相关新闻

线程池配置公式深度解析:从系统原理到数学推导

线程池配置公式深度解析:从系统原理到数学推导

文章目录🚀 一、 CPU 密集型:Ncpu1N_{\text{cpu}} 1Ncpu​1⚙️ 1.1 物理原理:减少上下文切换💡 1.2 加 1 的工程容错考量💻 1.3 Java 获取核心数与代码实现📡 二、 IO 密集型:Brian Goetz 核心…

2026/8/9 3:55:42 阅读更多 →
Xournal++手写笔记软件:高效实用的开源数字笔记解决方案

Xournal++手写笔记软件:高效实用的开源数字笔记解决方案

Xournal手写笔记软件:高效实用的开源数字笔记解决方案 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows …

2026/8/9 3:55:42 阅读更多 →
热门音频素材本地化处理:Audacity与FFmpeg实战指南

热门音频素材本地化处理:Audacity与FFmpeg实战指南

这次我们来看一个近期在音乐制作和短视频创作圈里热度很高的项目——FUNK风格的《MONTAGEM ONE MORE GAME》DJ混音版。这个项目并非一个传统的软件工具或AI模型,而是一个典型的、由DJ KVNXD制作的电子音乐作品,属于“巴西放克”(Funk Carioca…

2026/8/9 3:55:42 阅读更多 →

最新新闻

Apifox CLI与Skill机制:构建AI Agent稳定调用API的标准化方案

Apifox CLI与Skill机制:构建AI Agent稳定调用API的标准化方案

1. 项目概述:当AI Agent遇上API管理最近在捣鼓AI Agent项目,发现一个挺有意思的痛点:怎么让这些聪明的“数字员工”稳定、可靠地去调用和管理我们那一大堆API?无论是让Agent自动测试接口、生成Mock数据,还是根据API文档…

2026/8/10 5:27:46 阅读更多 →
Java字符串拼接与StringBuilder性能优化指南

Java字符串拼接与StringBuilder性能优化指南

1. 为什么Java字符串拼接需要专门讨论?在Java开发中,字符串拼接可能是我们每天写得最多的操作之一。但你是否想过,为什么一个看似简单的号操作,会引发关于StringBuilder的专门讨论?这要从Java字符串的本质特性说起。Ja…

2026/8/10 5:27:46 阅读更多 →
文档不多也要用RAG?小模型替代的幻觉与RAG的精准价值

文档不多也要用RAG?小模型替代的幻觉与RAG的精准价值

1. 面试场景还原与问题本质剖析那天面试,候选人问出“公司内部文档不多,直接用小模型代替 RAG 可行吗?”时,我确实没忍住笑了。这笑不是嘲笑,而是那种“终于又遇到一个把问题想简单了”的会心一笑。在 AI 应用落地的浪…

2026/8/10 5:27:45 阅读更多 →
三极管与MOS管选型指南:从工作原理到工程实践

三极管与MOS管选型指南:从工作原理到工程实践

1. 这篇文章真正要解决的问题当你面对一个电路设计,需要在开关或放大功能中选择一个半导体器件时,三极管和MOS管往往是两个最直接的选项。很多初学者,甚至一些有经验的工程师,在面对这个选择时,常常会陷入一种模糊的境…

2026/8/10 5:27:45 阅读更多 →
面向对象编程五大核心概念解析与实践

面向对象编程五大核心概念解析与实践

1. 项目概述"基本概念五"这个标题看似简单,实则蕴含着系统化知识梳理的核心价值。作为一名长期从事技术写作的从业者,我理解这类基础概念整理对于学习者的重要性。本文将围绕五个核心基础概念展开深度解析,帮助读者建立清晰的知识框…

2026/8/10 5:27:45 阅读更多 →
Unity与Unreal引擎中科里奥利力模拟:从物理原理到游戏实现

Unity与Unreal引擎中科里奥利力模拟:从物理原理到游戏实现

1. 项目概述:当物理课本里的“神秘力量”遇上游戏引擎如果你玩过《盗贼之海》里那艘在风暴中颠簸摇晃的帆船,或者《星际公民》里那架在行星大气层中翻滚的飞船,你可能已经直观地感受过一种“看不见的力量”在影响物体的运动轨迹。这种力量&am…

2026/8/10 5:26:45 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/10 1:05:29 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/10 1:05:29 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/10 1:05:29 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/9 17:05:02 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/10 1:05:29 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/9 17:05:02 阅读更多 →