SQL 表的基本操作 数据库增删改查(CRUD)+SQL 进阶语法详解(标识列插入、模糊查询、Union、变量、运算、别名)

SQL 表的基本操作 数据库增删改查(CRUD)

核心内容:INSERT新增、SELECT查询、UPDATE修改、DELETE删除、多条件筛选、两种清空表区别

前置条件:已创建 StudentDataBase 数据库、Students 学生表

考试重点:带列名/省略列名插入、条件查询、多字段更新、DELETE与TRUNCATE区别

一、切换操作数据库

复制代码
use StudentDataBase
go

二、INSERT 新增数据(四种写法)

2.1 写法1:指定全部列插入(规范推荐)

手动写明对应字段,顺序可自定义,可读性最高,不易出错

复制代码
--完整指定列名插入数据
insert into Students(StudentName,Gernder,Birthday,StudentIDCard,Age,Phone,StudentAddress,ClassId)
values('吴亦凡','男','2020-10-1',123434343434343343,14,'1212','加拿大',1)

insert into Students(StudentName,Gernder,Birthday,StudentIDCard,Age,Phone,StudentAddress,ClassId)
values('罗志祥','男','2020-10-1',123434343434343343,14,'1212','加拿大',1)

insert into Students(StudentName,Gernder,Birthday,StudentIDCard,Age,Phone,StudentAddress,ClassId)
values('李易峰','男','2020-10-1',123434343434343343,14,'1212','加拿大',1)

2.2 写法2:指定部分列插入

省略允许为空的字段(本例省略StudentAddress),仅赋值必填字段

复制代码
insert into Students(StudentName,Gernder,Birthday,StudentIDCard,Age,Phone,ClassId)
values('李易峰','男','2020-10-1',123434343434343343,14,'1212',1)

2.3 写法3:省略列名插入

不写列名,必须严格按照表字段顺序赋值,且不可省略字段,适合快速测试

复制代码
--省略列名:严格匹配表结构全部字段顺序
insert into Students values('张启山','男','2020-10-1',123434343434343343,14,'1212','加拿大',1)

2.4 新增核心考点

  • 自增列StudentId(identity) 无需手动赋值,数据库自动生成

  • 带NOT NULL约束的字段,必须赋值,否则报错

  • 省略列名插入,字段顺序、数量必须和建表结构完全一致

三、SELECT 查询数据(高频考点)

3.1 查询整张表所有数据、所有列

复制代码
-- * 代表所有列
select * from Students

3.2 指定列查询(按需查询,效率更高)

复制代码
--只查询姓名、地址、班级编号
select StudentName,StudentAddress,ClassId from Students

3.3 单条件等值查询

复制代码
--查询年龄=14的学生
select StudentName,StudentAddress,ClassId,Age from Students where Age = 14

3.4 不等值查询

复制代码
--查询年龄不等于14的学生
select StudentName,StudentAddress,ClassId,Age from Students where Age != 14

3.5 多条件 AND 联合查询(并且)

复制代码
--条件1:年龄13~20之间
select StudentName,StudentAddress,ClassId,Age from Students where Age>=13 and Age<20

--条件1:年龄>=13  AND 条件2:性别为男
select StudentName,StudentAddress,ClassId,Age from Students where Age>=13 and Gernder='男'

四、UPDATE 更新数据(重点:防止全表更新)

4.1 危险写法:无条件更新(更新整张表)

无WHERE条件,修改表中所有数据,工作/考试严禁随意使用

复制代码
--将所有学生性别全部改为女
update  Students set Gernder = '女'

4.2 单条件、单列更新

复制代码
--指定学生编号,只修改姓名
update Students set StudentName = '李白' where StudentId = 1000

4.3 单条件、多列更新

一次更新多个字段,逗号分隔字段

复制代码
--同时修改姓名、年龄
update Students set StudentName = '杜甫', Age = 20 where StudentId = 1001

4.4 更新核心注意事项

  • UPDATE 必须搭配 WHERE 条件,否则更新全表数据

  • 多字段更新,字段之间用逗号分隔,不能加and

  • 优先使用主键(StudentId)作为更新条件,精准定位数据

五、DELETE / TRUNCATE 删除数据(必考区别)

5.1 条件删除:删除单条/部分数据

复制代码
--删除指定编号的学生数据
delete from Students where StudentId = 1010

5.2 DELETE 清空全表(不重置自增标识)

复制代码
--清空所有数据,自增列继续递增
--delete  from Students

5.3 TRUNCATE 清空全表(重置自增标识)

复制代码
--清空整张表数据、速度更快、重置自增标识列
--truncate table Students

六、DELETE 和 TRUNCATE 终极区别(简答题满分)

对比项 DELETE TRUNCATE
删除范围 支持条件删除/全表删除 只能清空整张表
自增列 不重置,继续递增 重置,恢复初始值
执行速度 慢,记录日志 极快,几乎不记录日志
事务回滚 支持回滚 不支持回滚

七、CRUD 语法速记模板

复制代码
--新增
insert into 表名(字段1,字段2) values(值1,值2)

--查询
select 字段列表/* from 表名 where 条件

--修改
update 表名 set 字段=值,字段2=值2 where 条件

--删除
delete from 表名 where 条件

八、易错踩坑汇总

  1. 新增字符串、日期类型值,必须加单引号,数字无需单引号

  2. UPDATE 无条件会更新全表,考试极易扣分

  3. 省略列名插入,字段数量、顺序必须和表结构完全一致

  4. 多条件查询用AND,多字段更新用逗号,语法不能混淆

SQL 进阶语法详解(标识列插入、模糊查询、Union、变量、运算、别名)

本节核心考点:IDENTITY_INSERT 手动插入自增列、Like模糊查询、IN / NOT IN、BETWEEN区间、字段别名、Union All合并结果集、SQL变量、算术运算、字符串拼接

适配表结构:First(Id(自增),StuName,StuAge,StuSex)

一、自增标识列手动插入(重难点)

1.1 普通插入(无法指定自增ID)

复制代码
--普通插入:自增列不需要写,数据库自动生成Id
insert into First values ('旺仔小馒头',20,'男')

1.2 强制手动指定自增ID(必考语法)

默认自增列(IDENTITY)不允许手动赋值,如需自定义ID,必须开启 IDENTITY_INSERT

复制代码
--开启标识列手动插入权限
set IDENTITY_INSERT First ON

--开启后:必须【写字段列表】,可以手动指定Id
insert into First(Id,StuName,StuAge,StuSex) values (7, '旺仔小馒头',20,'男')

--用完必须关闭,否则后续自动自增失效
set identity_insert First OFF  

铁律: 1、ON状态必须手写全部字段 2、操作完毕必须OFF关闭 3、一张表同一时间只能开启一张表的IDENTITY_INSERT

二、基础查询

复制代码
--查询整张表所有数据
select * from First

三、模糊查询 LIKE(通配符考点)

3.1 开头匹配:旺%

复制代码
--查询【旺】字开头的数据
select * from First where StuName like '旺%'

3.2 结尾匹配:%头

复制代码
--查询【头】字结尾的数据
select * from First where StuName like '%头'

通配符口诀

  • %:匹配任意多个字符(包含0个)

  • _:匹配单个字符

四、IN / NOT IN 固定集合查询

4.1 IN:匹配集合内任意值

复制代码
--查询姓名在指定集合内的数据
select *  from First where StuName in('旺仔小馒头1','旺仔小馒慢')

4.2 NOT IN:排除集合内数据

复制代码
--查询姓名不在该集合的数据
select *  from First where StuName not  in('旺仔小馒头1','旺仔小馒慢')

五、UPDATE 条件更新

复制代码
--主键精准更新:Id=4 的学生改名
update First set StuName = '罗止痒' where Id = 4

六、BETWEEN AND 区间查询

闭区间:包含左右边界值

复制代码
--查询Id 3~5 区间数据
select StuName from First where Id between 3 and 5

七、查询字段别名 AS(结果改名)

仅修改展示列名,不改变数据库真实字段名

复制代码
--字段别名:中文展示
select StuName as 学生姓名,StuAge as 学生年龄 from First where Id = 4

as 可以省略,直接写别名

八、UNION ALL 结果集合并

多张查询结果竖向拼接,允许重复数据、不校验去重、速度快

复制代码
--自定义多行结果集
select '罗志痒',20
union all
select '旺仔小馒头',20
union all
select '旺仔小馒头1',20

Union 与 UnionAll 区别: Union:去重、慢 Union All:不去重、快(考试优先推荐)

九、SQL 算术运算

复制代码
--运算并别名展示
select 1-1 as result
select 1+1 as result

--where条件支持运算表达式
select * from  First where Id = 10-5

SQL支持:+ - * / % 运算,可直接写在条件、查询字段中

十、自定义变量 DECLARE

SQL局部变量定义、赋值、运算、打印

复制代码
--1.定义int类型变量 @a
declare @a int;

--2.赋值方式1:select赋值
select @a=100;

--3.复合运算赋值
set @a-=100;  --自减
set @a+=100;  --自增
set @a= @a +100;

--4.控制台打印输出
print @a;

变量标识:@变量名 是SQL局部变量固定格式

十一、字符串拼接

复制代码
--多个字符串拼接为一个字段展示
select 'abc'+'def' as newString

SQL中字符串使用 + 拼接,数值使用 + 求和

十二、本节所有语法考点汇总(背诵)

  1. IDENTITY_INSERT:ON开启手动自增插入、必须写字段、用完必须OFF

  2. 模糊查询:%匹配任意字符,前缀/后缀模糊匹配

  3. IN/NOT IN:固定多值匹配、排除多值

  4. BETWEEN AND:数值区间闭区间查询

  5. AS别名:仅修改展示列名

  6. UNION ALL:竖向合并结果集,不去重

  7. 变量:declare定义、@标识变量、print输出

  8. 字符串拼接:+号拼接文本

相关推荐
代码的小搬运工8 小时前
网络请求(NSURL、NSURLRequest、NSURLSessionDataTask、协议回调与 JSON 数据的基本流向)
网络·数据库·json
Cx330❀14 小时前
【MySQL基础】一文吃透“表的约束”:从 Null/Default 到主外键的终极安全法则
linux·服务器·数据库·c++·mysql·安全
c2385614 小时前
第二篇:《测试指挥官:可视化单题自测框架(含 assert 实操)》
java·数据库·c++·算法·安全性测试
我科绝伦(Huanhuan Zhou)14 小时前
MySQL极端场景数据丢失防护:从Crash-Safe到异地备份
数据库·mysql
辞旧 lekkk14 小时前
【Redis初阶】常见数据类型
开发语言·数据库·c++·redis·学习·缓存·bootstrap
明志数科15 小时前
人形机器人格斗场景下的技术挑战:动力学控制、感知融合与实时决策
网络·数据库
酉鬼女又兒15 小时前
零基础入门 DeepSeek V4 Pro API 开发:从环境搭建、消息格式规范到翻译函数实战、少样本提示、多轮对话聊天机器人与常见报错全流程详解指南
大数据·网络·数据库·人工智能·macos·机器人·github
笨蛋不要掉眼泪15 小时前
MySQL架构揭秘:MVCC解决读一致性问题
数据库·mysql·架构
Navicat中国16 小时前
开发者入门:无服务器数据库
数据库·云原生·serverless·navicat