SQL Server基础知识点

发布时间:2026/7/14 4:34:50
SQL Server基础知识点 **一、DDL 数据库表结构操作定义库 / 表结构不操作数据**数据库操作CREATE DATABASE 库名创建数据库数据表操作CREATE TABLE 建表定义字段名、数据类型、约束ALTER TABLE 修改表新增字段、修改字段类型、删除字段DROP TABLE 删除整张表表结构 数据全部销毁表约束建表必写主键、自增、非空、唯一、默认值主键唯一标识一行一张表只能一个主键不可重复、不能为空自增identity搭配主键使用非空 NOT NULL该字段必须填写数据唯一 UNIQUE字段值不能重复但允许 1 个 NULL清空表TRUNCATETRUNCATE 直接清空整张表速度极快会重置自增编号无法事务回滚删除的数据找不回来生产环境慎用代码如下CHECK 约束 unique 非空约束二、DML 增删改基础语句操作表里数据INSERT 插入数据单行插入INSERT INTO 表(字段) VALUES(值)批量插入VALUES(),(),() 一次性插入多行效率更高代码如下UPDATE 更新更新语句必须加 WHERE 条件不加 WHERE 会更新整张表所有数据极易造成数据事故代码UPDATE 表名 SET …DELETE 删除DELETE删除单行 / 多行数据支持事务回滚自增编号不会重置DELETE vs TRUNCATE 对比DELETE逐行删除、记录日志、可回滚、自增不重置、支持 WHERE 删指定数据TRUNCATE清空全表、无日志、不可回滚、重置自增、不能加 WHERE三、SELECT 单表查询核心5. 基础筛选 WHERE运算符 ! AND OR NOT模糊匹配 LIKE% 匹配任意多个字符_ 匹配单个字符区间筛选 IN(值1,值2)、BETWEEN A AND B包含两端数值空值判断IS NULL / IS NOT NULL6. DISTINCT 去重去除查询结果中完全重复的整行数据只保留唯一记录7. 排序分页ORDER BY 字段 ASC 升序默认、DESC 降序SQL Server 专用分页语法OFFSET 跳过行数 FETCH NEXT 取多少行 ONLY9. 聚合函数统计函数配合 GROUP BYCOUNT、SUM、AVG、MAX、MINCOUNT(*)统计表所有行数包含 NULLCOUNT(字段)统计该字段非空数据会忽略 NULL 值10. 分组 GROUP BY规则SELECT 后面只能写分组字段 聚合函数写其他普通字段会报错搭配 HAVING 过滤分组后的统计结果11. WHERE VS HAVINGWHERE原始数据表过滤不能使用聚合函数执行顺序在分组之前HAVING分组 GROUP BY 之后过滤只能写聚合函数条件必须搭配 GROUP BY 使用**代码如下四、多表连接查询 JOIN**四种连接类型INNER JOIN 内连接只返回两张表能匹配上的数据匹配不到直接丢弃LEFT JOIN 左外连接左表全部数据保留右表无匹配字段填充 NULLRIGHT JOIN 右外连接右表全部数据保留左表无匹配填充 NULLFULL JOIN 全连接左右表所有数据全部展示无匹配补 NULL规范写法表1 JOIN 表2 ON 关联条件代码如下**五、子查询查询中嵌套另一个 SELECT**标量子查询仅返回单个值可以放在 WHERE、SELECT 后做条件列子查询返回一列多行数据搭配 IN / ANY / ALL 使用派生表表子查询子查询放在 FROM 后面当作临时表使用必须起别名EXISTS 相关子查询作用判断是否存在匹配数据性能重点大数据量场景EXISTS 效率远高于 IN优先使用 EXISTS**代码如下六、窗口函数**通用固定语法函数() OVER(PARTITION BY 分组字段 ORDER BY 排序字段)PARTITION BY分组类似 GROUP BY但不会合并行ORDER BY组内排序三大排名函数核心区分ROW_NUMBER()每组内连续不重复编号值相同编号也不一样RANK()并列相同编号后续序号会跳号1,1,3DENSE_RANK()并列相同编号序号连续不跳号1,1,2常用场景分组排名、提取每组第一条数据、批量清理重复冗余数据**七、数据去重**DISTINCT简单查询快速去重适合展示数据GROUP BY分组聚合去重适合需要统计汇总的场景ROW_NUMBER () 窗口函数标记重复数据批量删除多余重复行**八、C# SQL Server 联动 ADO.NET代码如下三大核心对象SqlConnection数据库连接对象建立程序和数据库通道SqlCommand执行增删改查 SQL 语句SqlDataReader只读、向前读取数据占用资源小查询速度快安全强制规范**使用参数化查询拼接 SQL禁止字符串直接拼接 SQL会产生 SQL 注入漏洞泄露 / 篡改数据库全部数据全书核心重点汇总UPDATE、DELETE 不加 WHERE 重大生产事故NULL 只能用 IS NULL 判断不能用 NULLHAVING 只能分组后用多表查询必须写 ON 关联条件大数据判断存在用 EXISTS不用 INTRUNCATE 不可回滚谨慎使用拼接 SQL 必须参数化DELETE 与 TRUNCATE、WHERE 与 HAVING 两组易混概念区分