SQL学习笔记11——SQL中操作数据之插改删

SQL学习笔记11——SQL中操作数据之插改删

回顾

前面我们学习了SQL中查询数据的一些基础,它们都属于DQL语言,即数据查询语言;接下来我们将学习DML语言,即数据操作语言,主要包含:

  • 插入:insert
  • 修改:update
  • 删除:delete

插入语句

语法:

# 方式一:经典的插入
insert into 表名(字段名,...) values(值,...);
# 插入多行
insert into 表名(字段名,...) values(值,...),(值,...),...;
# 方式二
insert into 表名 set 字段=值,字段=值,...;

特点

  1. 插入的值的类型要与列的类型一致或兼容
  2. 不可以为NULL的列必须插入值
  3. 可以为NULL的列有以下两种方式插入值
    • 插入NULL值
    • 直接省略,默认以NULL填充
  4. 列的顺序可以交换,只要值得顺序与之对应即可,这当然就要求了列数和值的个数必须一致
  5. 可以省略列名,默认则是所有列,而且列的顺序和表中列的顺序一致
  6. 方式一做子查询时必须省略value,方式如下
    INSERT INTO customers ( cust_id, cust_name )
    SELECT 1211111121,‘1211111121‘;
    

两种插入方式的对比

是否支持插入多行 是否支持子查询
方式一 YES YES
方式二 NO NO

修改数据

修改单表的记录★

语法

update 表名 set 字段=值,字段=值 【where 筛选条件】;

修改多表的记录

语法

# sql92语法
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件;

# sql99语法
update 表1 别名 
left|right|inner join 表2 别名 
on 连接条件  
set 字段=值,字段=值,... 
【where 筛选条件】;

案例

  1. 修改没有男朋友的女神的男朋友编号都为2号
UPDATE boys bo
RIGHT JOIN beauty b
ON bo.id = b.boyfriend_id
SET b.boyfriend_id = 2
WHERE b.id IS NULL;

删除数据

方式一:使用delete

删除单表的记录★

语法:

delete from 表名 【where 筛选条件】【limit 条目数】

案例:

  1. 删除手机号以9结尾的女神信息
    DELETE FROM beauty WHERE phone LIKE ‘%9‘;
    

删除多表的记录

语法:

#sql92
delete 表1的别名,表2的别名#总之,这里写要删数据的表的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;


#sql99
delete 表1的别名,表2的别名#总之,这里写要删数据的表的别名
from 表1 别名
inner|left|right join 表2 别名
on 连接条件
where 筛选条件;

案例:

  1. 删除张无忌的女朋友的信息
    DELETE b
    FROM beauty b
    INNER JOIN boys bo
    ON b.boyfriend_id = bo.id
    WHERE bo.boyName = ‘张无忌‘;
    

方式二:使用truncate

语法:

#整表删除
truncate table 表名;

deleta vs truncate

可否加where 效率 删除后再插入数据自增长列的值起始值 是否有返回值 可否回滚
delete YES 低一点 从断点开始 可以
truncate NO 高一点 从1开始 不能

SQL学习笔记11——SQL中操作数据之插改删

上一篇:Mysql企业级常用配置


下一篇:编写Hive的UDF(查询平台数据同时向mysql添加数据)