文章目录
- 前言
- 引入
- 一、插入
- 方式一
- 方式二
- 两种方式大PK
- 二、删除
- 相关概念
- 方式一:delete
- 方式二:truncate
- truncate PK delete【★面试题】
- 三、修改
- 相关概念
- 1、修改单表的记录
- 2、修改多表的记录
前言
DML:数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句,通常是数据库专用编程语言之中的一个子集,例如在信息软件产业通行标准的SQL语言中,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入(意指新增或创建)、更新(修改)与删除(销毁)。在使用数据库的系统开发过程中,其中应用程序必然会使用的指令;而加上 SQL的SELECT语句,欧美地区的开发人员把这四种指令,以“CRUD”(分别为 Create, Read, Update, Delete英文四前缀字母缩略的术语)来称呼;而亚洲地区使用汉语的开发人员,或可能以四个汉字:增 查 改 删 来略称。
注:示例中的SQL只是举的例子,小伙伴可以自己举一反三的写SQL语言
引入
/*
数据操作语言
插入:insert
修改:update
删除:delete
一、插入
方式一
/* 语法: insert into 表名(列名,。。。。) values(值1,…);
*/
1.插入的值的类型要与列的类型一致或兼容
2.不可以为NULL的必须插入值(可以为NULL的插入值的方式有两种:一是直接写成NULL,二是列名不写,值也不写)
3.列的顺序可以调换
4.列数和值的个数必须一致
5.可以省略列名,默认所有的列,而且列的顺序和表中的列的顺序一致
方式二
/* 语法: insert into 表名 set 列名=值,列名=值
*/
INSERT INTO `beauty`
SET `id`=13,`name`='刘涛',`phone`='999'
SELECT * FROM `beauty`
两种方式大PK
方式一支持多行插入,方式二不行
方式一支持子查询,方式二不支持
二、删除
相关概念
/* 方式一:delete 语法:
1.单表的删除【☆】 delete from 表名 where 筛选条件
2.多表的删除【补充】
SQL92语法:
delete (删除的是哪个表就写谁的别名)
from 表1 别名,表2 别名
where 连接条件 and 筛选条件
SQL99语法:
delete (删除的是哪个表就写谁的别名)
from 表1 别名
inner|left|right join 表2 别名
on 连接条件
where 筛选条件
方式二:truncate
语法:truncate table 表名;*/
方式一:delete
#1.单表的删除
#案例、删除手机号以9结尾的女神的信息
SELECT * FROM `beauty`
DELETE FROM `beauty` WHERE `phone` LIKE '%9';
#2.多表的删除
#案例、删除张无忌的女朋友的信息
DELETE b
FROM `beauty` b
INNER JOIN `boys` bo ON b.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='张无忌'
#案例、删除黄晓明和他女朋友的信息
DELETE b,bo
FROM `beauty` b
INNER JOIN `boys` bo ON b.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='黄晓明'
SELECT * FROM `boys`
方式二:truncate
#案例、删除魅力值>100的男神的信息
TRUNCATE TABLE `boys`;
truncate PK delete【★面试题】
/*
1.delete 可以添加where条件,truncate不能添加
2.truncate删除,效率高一丢丢
3.假如要删除的表中有自增长列, 如果用delete删除后,再插入数据,自增长列的值从断点开始 而truncate删除后,再插入数据,自增长列的值从1开始
4.truncate删除没有返回值(就是不会说共几行受影响),delete删除有返回的值
5.truncate删除不能回滚,delete删除可以回滚
*/
三、修改
相关概念
/*
1.修改单表的记录*
语法:
update 表名
set 列=新值,列=新值,...
where 筛选条件
2.修改多表的记录【补充】
语法:
sql92语法:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件
SQL99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件
*/
SELECT * FROM beauty
SELECT * FROM `boys`
1、修改单表的记录
#案例1.修改beauty表中姓周的电话为110
UPDATE `beauty`
SET `phone`='110'
WHERE `name` LIKE '周%'
#案例2.修改男神表中id为2的名字为张飞,魅力值为120
UPDATE `boys`
SET `boyName`='张飞',`userCP`='120'
WHERE id=2
2、修改多表的记录
#案例1.将张无忌的女朋友的手机号都修改为114
UPDATE `beauty` b
INNER JOIN `boys` bo
ON b.`boyfriend_id`=bo.`id`
SET b.`phone`='114'
WHERE bo.`boyName`='张无忌'
#案例2.修改没有男神的女神的男朋友的编号都为2
UPDATE `beauty` b
LEFT JOIN `boys` bo
ON bo.`id`=b.`boyfriend_id`
SET b.`boyfriend_id`='2'
WHERE b.`boyfriend_id` IS NULL