当前位置: 首页 > news >正文

SQL Server:增删改查操作

一、插入数据(INSERT)

插入数据是向数据库表中添加记录的操作。

1.1 基本语法

sql

INSERT INTO 表名(列1, 列2, ...) VALUES(值1, 值2, ...)

1.2 插入完整行数据

-- 插入所有列的数据(按表中列的顺序)
INSERT INTO Student VALUES('张三', '男', 18, 100, '篮球')

1.3 插入指定列数据

-- 只插入部分列,其他列会使用默认值或NULL
INSERT INTO Student(Name, Sex) VALUES('李四', '女')

1.4 批量插入多条数据

-- 使用UNION一次性插入多条记录
INSERT INTO bank
SELECT '班长', 10000 UNION
SELECT '学委', 100

二、更新数据(UPDATE)

更新数据用于修改表中已存在的记录。

2.1 基本语法

sql

UPDATE 表名 SET 列1 = 值1, 列2 = 值2 WHERE 条件

2.2 更新示例

-- 更新特定行
UPDATE Student SET Age = 20 WHERE Name = '张三'

-- 同时更新多列
UPDATE Student SET Age = 21, Sex = '男' WHERE Name = '李四'

2.3 注意事项

⚠️警告:如果不加WHERE条件,会更新整张表的所有行!

-- 危险操作:会修改所有学生的年龄
UPDATE Student SET Age = 20

-- 正确做法:加上条件限制
UPDATE Student SET Age = 20 WHERE Name = '张三'

三、删除数据(DELETE / TRUNCATE)

SQL Server中删除数据有三种方式,各有不同的用途。

3.1 DELETE语句

删除部分或全部数据,标识列不会重置。

-- 删除指定条件的行 DELETE FROM Student WHERE Name = '张三' -- 删除整张表的数据(但表结构还在) DELETE FROM Student

3.2 TRUNCATE语句

清空整张表的所有数据,效率比DELETE高,标识列会重置。

-- 清空表数据,标识列从初始值重新开始
TRUNCATE TABLE Student

3.3 DROP语句

删除整张表(包括表结构和数据)。

-- 彻底删除表
DROP TABLE Student

3.4 三种删除方式对比

操作删除内容标识列效率可恢复
DELETE部分或全部数据不重置可(事务)
TRUNCATE全部数据重置不可
DROP表结构和数据-最快不可

3.5 使用建议

  • 当你不再需要该表时,用DROP

  • 当你仍要保留表结构,但要删除所有记录时,用TRUNCATE

  • 当你要删除部分记录时(必须带上WHERE条件),用DELETE


四、查询数据(SELECT)

查询是数据库操作中最常用的功能。

4.1 基本语法

SELECT *|列名 FROM 表名 WHERE 条件 ORDER BY 列名 ASC|DESC

4.2 查询所有行和列

sql

-- *号代表所有字段 SELECT * FROM student

4.3 查询部分列

sql

-- 只查询指定的字段 SELECT name, id, age FROM student

4.4 条件筛选(WHERE)

-- 查询特定条件的数据 SELECT * FROM student WHERE name = '张三' -- 查询年龄大于20分的人 SELECT name FROM student WHERE age > 20

4.5 使用别名(AS)

别名可以让查询结果更易读。

-- 方法一:使用AS关键字 SELECT name AS '姓名', id AS '学号' FROM student -- 方法二:使用=号 SELECT 'name' = 姓名, 'id' = 学号 FROM student -- 方法三:省略AS SELECT name '姓名' FROM student

4.6 字符串拼接

-- 使用 + 进行拼接 SELECT name + '是' + sex + '的' AS '介绍' FROM Student -- 示例输出:张三是男的

4.7 使用常量列

-- 在结果集后面追加一列固定值
SELECT *, '不要沉迷游戏' AS '警告' FROM student

4.8 查询空值

-- 查询为NULL SELECT * FROM student WHERE phbumber IS NULL -- 查询不为NULL SELECT * FROM student WHERE phbumber 者 IS NOT NULL

⚠️注意:判断NULL不能用= NULL,必须用IS NULLIS NOT NULL

五、高级查询技巧

5.1 TOP查询

限制返回的记录数量。

-- 查询前2条 SELECT TOP 2 * FROM Student ORDER BY Age DESC -- 查询前50% SELECT TOP 50 PERCENT * FROM Student ORDER BY Age DESC -- 查询工资最少的2位女老师 SELECT TOP 2 * FROM Teacher WHERE Sex = '女' ORDER BY Salary ASC

5.2 模糊查询(LIKE)

当条件不明确时,使用通配符进行模糊匹配。

通配符含义示例
%任意长度的任意字符LIKE '李%'→ 李开头
_一个字符LIKE '李_'→ 李X(两个字)
[]范围内的一个字符LIKE '[李王]%'→ 姓李或王
[^]不在范围内的一个字符LIKE '[^李]%'→ 不姓李
-- 包含"小"字 SELECT * FROM Student WHERE name LIKE '%小%' -- 姓张 SELECT * FROM Student WHERE name LIKE '张%' -- 姓李或王 SELECT * FROM Student WHERE name LIKE '[李王]%' -- 三个字的名字 SELECT * FROM Student WHERE name LIKE '___' -- 邮箱以com结尾 SELECT * FROM Student WHERE email LIKE '%com' -- 爱好第二位为'篮'字 SELECT * FROM Student WHERE ah LIKE '_篮%'

5.3 范围查询(BETWEEN AND)

查询某个范围内的数据。

-- 年龄在18-25之间 SELECT * FROM Student WHERE Age BETWEEN 18 AND 25 -- 等价于 SELECT * FROM Student WHERE Age >= 18 AND Age <= 25 -- 查询年龄在15-20之间的男老师 SELECT * FROM Teacher WHERE Age BETWEEN 15 AND 20 AND Sex = '男'

5.4 集合查询(IN)

匹配多个可能的值。

-- 查询专业为java、c#、html的老师 SELECT * FROM Teacher WHERE subject IN ('java', 'c#', 'html') -- 等价于 SELECT * FROM Teacher WHERE subject = 'java' OR subject = 'c#' OR subject = 'html'

5.5 取反操作(NOT)

对条件进行取反。

-- 年龄不在18-25之间 SELECT * FROM Student WHERE Age NOT BETWEEN 18 AND 25 -- 专业不是java、c#、html SELECT * FROM Teacher WHERE subject NOT IN ('java', 'c#', 'html') -- 名字不姓李 SELECT * FROM Student WHERE name NOT LIKE '李%' -- 爱好不为空 SELECT * FROM Student WHERE ah IS NOT NULL

5.6 排序查询(ORDER BY)

对查询结果进行排序。

-- 升序(ASC是默认值,可省略) SELECT * FROM games ORDER BY 评分 ASC -- 降序 SELECT * FROM games ORDER BY 评分 DESC -- 多列排序:先按评分降序,再按ID升序 SELECT * FROM games ORDER BY 评分 DESC, 游戏ID ASC

5.7 综合案例

-- 查询年龄最大老师的姓名、年龄、爱好 SELECT TOP 1 name, age, ah FROM Teacher ORDER BY age DESC -- 按年龄降序排序,显示50%的老师信息 SELECT TOP 50 PERCENT * FROM Teacher ORDER BY Age DESC -- 查询年龄在25-30之间的第一个老师 SELECT TOP 1 * FROM Teacher WHERE Age BETWEEN 25 AND 30 ORDER BY Age DESC

六、总结

操作类型关键字核心注意点
插入INSERT注意数据类型匹配
更新UPDATE必须加WHERE条件
删除DELETE必须加WHERE条件
清空TRUNCATE不可恢复,谨慎使用
删表DROP表结构会消失
查询SELECT条件、排序、模糊匹配

查询语法总结

sql

SELECT TOP n [PERCENT] 列名 AS 别名 FROM 表名 WHERE 条件(支持 LIKE、BETWEEN、IN、IS NULL) ORDER BY 列名 ASC|DESC

📌记住两个原则:

  1. UPDATE和DELETE操作前,先确认WHERE条件是否正确

  2. 生产环境中建议先用SELECT验证条件,再转为UPDATE或DELETE

以上就是SQL Server中增删改查操作的核心内容。

http://www.jsqmd.com/news/674128/

相关文章:

  • Oracle 自动分区表(Interval Partition)详解
  • Godot画面拉伸异常怎么解决?
  • 手把手教你用STM32CubeMX和HAL库实现串口打印调试信息(附常见问题排查)
  • 无线安灯系统解决自行车质检滞后问题
  • (claude code)最强skill everything-claude-code 技能完整指南
  • 今日进度表
  • JAVA后端开发——为什么 Maven 在 IDEA 能成功,终端却报错?
  • 【毕设】车辆充电桩管理系统
  • 手把手教你用C++和NI-VISA写个简易仪器上位机(附QT工程配置)
  • 4.20 检验上次的成果
  • 额度还没用完,我的阿里云 Coding Plan 被封了
  • Mac用户如何实现局域网高效通信?飞秋Mac版完整解决方案
  • STM32F103C8T6驱动MQ2烟雾传感器,从ADC采样到PPM浓度计算的保姆级教程
  • 一个头文件
  • 牧苏苏永不疲劳 4/20
  • UE TargetingSystem插件介绍
  • 个人健身数据管理系统 Fitness-Tracker_HTML_v3.0
  • 国内半导体展哪家好?本土优质半导体展,高价值参展平台 - 品牌2026
  • 华为Pura 90系列发布 | 小艺解锁全新交互方式 更能干更懂你!
  • ArcMap转换坐标系
  • Dify对接API、数据库、AI模型全流程详解:3小时搭建可交付智能应用(附完整YAML模板)
  • 博客二:递归实战避坑指南,从入门到熟练运用
  • 跨境远程办公新体验!拖拽传文件让跨国协作丝滑不卡顿
  • ACPL-072L-500,3.3V/5V双电压高速CMOS光耦
  • ORA-39504 CRS通知失败,启动/关闭事件忽略怎么办?Oracle故障怎么修复和远程处理?
  • STC8A8K64D4开发板开箱体验:从零搭建你的第一个物联网小项目(附完整代码)
  • 未知物体自动标注流水线
  • 别再死记硬背UNet结构了!用PyTorch手把手拆解那个经典的U型编码-解码器
  • 暗黑破坏神2存档编辑器终极指南:5分钟打造你的完美游戏角色
  • 【微软MVP亲测】C# 14原生AOT×Dify客户端:如何用1个.csproj配置砍掉63% Azure Functions账单?