4.表记录的更新操作

2022-09-13 14:44:34 浏览数 (1)

表记录的插⼊

批量插⼊多条记录

例如: insert…select插⼊结果集 注意:字段列表1与字段列表2的字段个数必须相同,且对应字段的数据类型尽量保持⼀致。例如:

使⽤replace插⼊新记录 insert into表名[(字段列表)] values(值列表) insert into表名[(字段列表)] values (值列表1), (值列表2), (值列表n); insert into student values ('2012001','张三','15000000000',1), ('2012002','李四','16000000000',1), ('2012003','王五','17000000000',3), ('2012004','⻢六','18000000000',2), ('2012005','⽥七','19000000000',2);

insert into⽬标表名[(字段列表1)] select (字段列表2) from源表 where 条件表达式; insert into new_student select * from student; replace into表名[(字段列表)] values(值列表) replace [into]⽬标表名[(字段列表1)] select (字段列表2) from源表where条件表达式

replace [into]表名 set字段1=值1,字段2=值2

MySQL中的特殊字符序列 转义后的字符

" 双引号“ ' 单引号‘ \ 反斜线 n 换⾏符 r 回⻋符 t 制表符 ASCII 0(NUL) b 退格符

replace语句的功能与insert语句的功能基本相同,不同之处在于,使⽤replace语句向表插⼊新记录 时,如果新记录的主键值或者唯⼀性约束的字段值与旧记录相同,则旧记录先被删除(注意:旧记录删 除时也不能违背外键约束条件),然后再插⼊新记录。

表记录的修改

表记录的删除

使⽤truncate清空表记录

从逻辑上说,该语句与“delete from表名”语句的作⽤相同,但是在某些情况下,两者在使⽤上有所区 别。例如,如果清空记录的表是⽗表,那么truncate命令将永远执⾏失败。如果使⽤truncate table成 功清空表记录,那么会重新设置⾃增型字段的计数器。truncate table语句不⽀持事务的回滚,并且不 会触发触发器程序的运⾏。

MySQL特殊字符序列

update表名 set字段名1=值1,字段名2=值2,…,字段名n=值n [where条件表达式] delete from表名[where条件表达式] truncate [table]表名 注意:NUL与NULL不同。例如,对于字符集为gbk的char(5)数据⽽⾔,如果其中仅仅存储了两个汉字 (例如“张三”),那么这两个汉字将占⽤char(5)中的两个字符存储空间,剩余的3个字符存储空间将存 储“”字符(即NUL)。“”字符可以与数值进⾏算术运算,此时将“”当作整数 0处理;“”字符还可 以与字符串进⾏连接,此时“”当作空字符串处理。⽽NULL与其他数据进⾏运算时,结果永远为 NULL。

表记录的检索

select语句基本格式

使⽤谓词过滤记录 使⽤谓词distinct过滤结果集中的重复记录。 使⽤谓词limit查询某⼏⾏记录多表连接

多表连接

内连接

外连接(左、右、完全) 注意:MySQL暂不⽀持完全连接 使⽤逻辑运算符 逻辑与(and)、逻辑或(or)以及逻辑⾮() 使⽤like进⾏模糊查询 %:匹配零个或多个字符 _:匹配任意⼀个字符 使⽤聚合函数汇总结果集 sum()函数、平均值avg()函数、统计记录的⾏数count()函数、最⼤值max()函数和最⼩值min()函数 group by⼦句与with rollup选项 group by⼦句将结果集分为若⼲个组,使⽤聚合函数可以对每个组内的数据进⾏信息统计,有时对各个 组进⾏汇总运算时,需要在分组后加上⼀条汇总记录,这个任务可以通过with rollup选项实现。

合并结果集

select字段列表 from数据源 [ where条件表达式] [ group by分组字段[ having条件表达式] ] [ order by排序字段[ asc | desc ] ] union与union all的区别:当使⽤ union时,MySQL会筛选掉select结果集中重复的记录(结果集合并 后会对新产⽣的结果集进⾏排序运算,效率稍低)。⽽使⽤union all时,MySQL会直接合并两个结果 集,效率⾼于 union。如果可以确定合并前的两个结果集中不包含重复的记录,则建议使⽤ union all。

⼦查询

如果⼀个select语句能够返回单个值或者⼀列值,且该select语句嵌套在另⼀个SQL语句(例如select语 句、insert语句、update语句或者delete语句)中,那么该select语句称为“⼦查询”(也叫内层查询), 包含⼦查询的SQL语句称为“主查询”(也叫外层查询)。为了标记⼦查询与主查询之间的关系,通常将 ⼦查询写在⼩括号内。⼦查询⼀般⽤在主查询的where⼦句或having⼦句中,与⽐较运算符或者逻辑运 算符⼀起构成where筛选条件或having筛选条件。 当⼦查询返回⼀个值时,⼀般使⽤⽐较运算符(=、>等等),当返回⼀列值时,⼀般使⽤关键字IN、 exists、any、all 如果检索A班⽐B班最低分⾼的学⽣信息,则可以使⽤select ..... from A where score >any(select score from b),检索A班⽐B班最⾼分⾼的学⽣信息,则可以使⽤select ..... from A where score >all(select score from b)

使⽤正则表达式模糊查询

需要⾃学正则表达式 select字段列表1 from table1 union [all] select字段列表2 from table2...

0 人点赞