4.表记录的更新操作

caid

分类: DataBase、学习笔记 758 0

表记录的插⼊

批量插⼊多条记录

例如:
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 制表符
\0 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个字符存储空间将存
储“\0”字符(即NUL)。“\0”字符可以与数值进⾏算术运算,此时将“\0”当作整数 0处理;“\0”字符还可
以与字符串进⾏连接,此时“\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...

  • 1人 Love
  • 0人 Haha
  • 0人 Wow
  • 0人 Sad
  • 0人 Angry
Mysql、数据库

作者简介: caid

共 0 条评论关于 “4.表记录的更新操作”

Loading...