+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 Students3.2 指定列查询按需查询效率更高--只查询姓名、地址、班级编号 select StudentName,StudentAddress,ClassId from Students3.3 单条件等值查询--查询年龄14的学生 select StudentName,StudentAddress,ClassId,Age from Students where Age 143.4 不等值查询--查询年龄不等于14的学生 select StudentName,StudentAddress,ClassId,Age from Students where Age ! 143.5 多条件 AND 联合查询并且--条件1年龄13~20之间 select StudentName,StudentAddress,ClassId,Age from Students where Age13 and Age20 --条件1年龄13 AND 条件2性别为男 select StudentName,StudentAddress,ClassId,Age from Students where Age13 and Gernder男四、UPDATE 更新数据重点防止全表更新4.1 危险写法无条件更新更新整张表无WHERE条件修改表中所有数据工作/考试严禁随意使用--将所有学生性别全部改为女 update Students set Gernder 女4.2 单条件、单列更新--指定学生编号只修改姓名 update Students set StudentName 李白 where StudentId 10004.3 单条件、多列更新一次更新多个字段逗号分隔字段--同时修改姓名、年龄 update Students set StudentName 杜甫, Age 20 where StudentId 10014.4 更新核心注意事项UPDATE 必须搭配 WHERE 条件否则更新全表数据多字段更新字段之间用逗号分隔不能加and优先使用主键(StudentId)作为更新条件精准定位数据五、DELETE / TRUNCATE 删除数据必考区别5.1 条件删除删除单条/部分数据--删除指定编号的学生数据 delete from Students where StudentId 10105.2 DELETE 清空全表不重置自增标识--清空所有数据自增列继续递增 --delete from Students5.3 TRUNCATE 清空全表重置自增标识--清空整张表数据、速度更快、重置自增标识列 --truncate table Students六、DELETE 和 TRUNCATE 终极区别简答题满分对比项DELETETRUNCATE删除范围支持条件删除/全表删除只能清空整张表自增列不重置继续递增重置恢复初始值执行速度慢记录日志极快几乎不记录日志事务回滚支持回滚不支持回滚七、CRUD 语法速记模板--新增 insert into 表名(字段1,字段2) values(值1,值2) --查询 select 字段列表/* from 表名 where 条件 --修改 update 表名 set 字段值,字段2值2 where 条件 --删除 delete from 表名 where 条件八、易错踩坑汇总新增字符串、日期类型值必须加单引号数字无需单引号UPDATE 无条件会更新全表考试极易扣分省略列名插入字段数量、顺序必须和表结构完全一致多条件查询用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 条件更新--主键精准更新Id4 的学生改名 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 4as 可以省略直接写别名八、UNION ALL 结果集合并多张查询结果竖向拼接允许重复数据、不校验去重、速度快--自定义多行结果集 select 罗志痒,20 union all select 旺仔小馒头,20 union all select 旺仔小馒头1,20Union 与 UnionAll 区别 Union去重、慢 Union All不去重、快考试优先推荐九、SQL 算术运算--运算并别名展示 select 1-1 as result select 11 as result --where条件支持运算表达式 select * from First where Id 10-5SQL支持 - * / % 运算可直接写在条件、查询字段中十、自定义变量 DECLARESQL局部变量定义、赋值、运算、打印--1.定义int类型变量 a declare a int; --2.赋值方式1select赋值 select a100; --3.复合运算赋值 set a-100; --自减 set a100; --自增 set a a 100; --4.控制台打印输出 print a;变量标识变量名是SQL局部变量固定格式十一、字符串拼接--多个字符串拼接为一个字段展示 select abcdef as newStringSQL中字符串使用拼接数值使用求和十二、本节所有语法考点汇总背诵IDENTITY_INSERTON开启手动自增插入、必须写字段、用完必须OFF模糊查询%匹配任意字符前缀/后缀模糊匹配IN/NOT IN固定多值匹配、排除多值BETWEEN AND数值区间闭区间查询AS别名仅修改展示列名UNION ALL竖向合并结果集不去重变量declare定义、标识变量、print输出字符串拼接号拼接文本