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 Student3.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 > 204.5 使用别名(AS)
别名可以让查询结果更易读。
-- 方法一:使用AS关键字 SELECT name AS '姓名', id AS '学号' FROM student -- 方法二:使用=号 SELECT 'name' = 姓名, 'id' = 学号 FROM student -- 方法三:省略AS SELECT name '姓名' FROM student4.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 NULL或IS 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 ASC5.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 NULL5.6 排序查询(ORDER BY)
对查询结果进行排序。
-- 升序(ASC是默认值,可省略) SELECT * FROM games ORDER BY 评分 ASC -- 降序 SELECT * FROM games ORDER BY 评分 DESC -- 多列排序:先按评分降序,再按ID升序 SELECT * FROM games ORDER BY 评分 DESC, 游戏ID ASC5.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
📌记住两个原则:
UPDATE和DELETE操作前,先确认WHERE条件是否正确
生产环境中建议先用SELECT验证条件,再转为UPDATE或DELETE
以上就是SQL Server中增删改查操作的核心内容。
