DML数据操作语言
- 插入:insert
- 修改:update
- 删除:delete
3.1 插入
3.1.1 value
支持一次性插入多行
支持子查询:将values等价(替换即可)于select语句
insert into 表名(列名) #默认所有列就可以省略括号
values (值)
insert into 表名(列名) #默认所有列就可以省略括号
select 字段
- 插入的值类型与列类型须一致或兼容
- 主key值出现重复将无法插入
- 列插入顺序可以调换
- 列数与值数须一致(指insert语句中)
示例INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id) VALUES(13,'天才','女','1990-4-4','17769277876',NULL,9) ,(15,'天才2','女','1993-4-4','17769227876',NULL,10) ,(17,'天才3','女','1992-4-4','17749277876',NULL,6) SELECT * FROM beauty
nullable列可以不插入内容:
- null
- 直接不写(逗号不涉及)自动填充:相关列名也不涉及
3.1.2 set
只能单行插入
insert into 表名
set 列名=值,...
可以只插入自己想插入的指定列,其他未指定列将作默认处理自动填充
3.2 修改(整体修改)
3.2.1 修改单表
update 表名
set 列=新值,列=新值,...
where 筛选条件
举例
#修改beauty表中姓魏的电话为17769277876
update beauty set phone='17769277876'
where name like '魏%'
#记得刷新
3.2.2 修改多表
sql92的多表修改:
实际是内连接再修改
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件
sql99语法:
update 表1 别名
inner(or whatever) join 表2 别名
on 连接条件
set 列=值,... #多表的列都可
where 筛选条件 #依然是确定更新对象用的
例如:
#张无忌的女朋友手机号错了,修改为114
update boys bo
inner join beauty b
on bo.id = b.boyfriend_id
set b.phone='114'
where bo.boyName='张无忌'
3.3 删除
3.3.1 delete:一删删整行
单表删除
delete from 表名
where 筛选条件 #不加全删除
#删除手机号结尾为9的女生信息
delete from beauty
where phone like '%9'
多表删除
delete 表1别名(,表2别名)
from 表1 别名
inner(or whatever) join 表2 别名
on 连接条件
where 筛选条件
删的到底是谁呢?删除表1的
查联合表,删指定表
#删除张无忌的女朋友信息
delete b
from beauty
inner join boys bo
on b.boyfriend_id=bo.id
where bo.boyName='张无忌'
3.3.2 truncate:
不能加where。。。清空作用,效率更高(高到返回时不知道删了几行)
truncate table 表名