目录
插入语句
方式一
方式二
两种插入方式的比较
修改语句
修改单表的记录
修改多表的记录【了解】
删除语句
方式一:delete
1、单表的删除【牢记】
2、多表的删除【补充】
方式二 :truncate
delete与truncate的比较【重要】
案例练习
DML语言(Data Manipulation Language)
数据操作语言:
插入:insert
修改:update
删除:delete
语法:
insert into 表名(列名...) values (值1,.....);
#1、插入的值的类型要与列的类型一致或兼容
INSERT INTO `beauty` (`id`, `name`, `sex`, `borndate`, `phone`, `photo`, `boyfriend_id`)
VALUES(13, '唐嫣', '女', '1990-09-21', '15137745620',NULL, 2)
#2、不可以为null的列,必须插入值,可以为null的列如何插入值?两种方式
方式一:插入的值直接为空
INSERT INTO `beauty` (`id`, `name`, `sex`, `borndate`, `phone`, `photo`, `boyfriend_id`)
VALUES(13, '唐嫣', '女', '1990-09-21', '15137745620',NULL, 2)
方式二:可以为空的那一列忽略
INSERT INTO `beauty` (`id`, `name`, `sex`, `borndate`, `phone`, `boyfriend_id`)
VALUES(14, '甄姬', '女', '1990-09-21', '15137745620', 2)
#3、列的顺序是否可以颠倒 ? 可以
INSERT INTO `beauty` (`phone`, `borndate`, `name`, `id`, `sex`, `boyfriend_id`)
VALUES('15912347510', '1990-09-21', '妲己', 15, '女', 1)
#4、列数和值的个数必须一致
#5、可以省略列名、默认所有列,而且列的顺序和表的顺序一致
INSERT INTO `beauty`
VALUES(16, '孙尚香', '女', '1997-09-11', '15942647024', NULL, 2)
语法:
insert into 表名 set 列名=值, 列名=值,....
insert into `beauty`
set id=17, name='虞姬', sex='女', borndate='1998-06-15', phone='14562384
1、方式一支持插入多行
INSERT INTO `beauty`
VALUES(18, '阿珂', '女', '1998-09-11', '15942000704', NULL, 2)
,(19, '瑶', '女', '1999-09-11', '15942678024', NULL, 3)
,(20, '娜可露露', '女', '1910-09-11', '15942457024', NULL, 4)
2、方式一支持子查询(去掉values),方式二不支持
INSERT INTO `beauty`(id, `name`, phone)
SELECT 21, '小乔', '15144547120'
语法:
update 表名
set 列=新值, 列=新值,...
where 筛选条件
案例1:修改beauty表中姓唐的人的电话号为15137742650(单个信息的修改)
UPDATE
`beauty`
SET
`phone` = '15137742650'
WHERE NAME LIKE '唐%'
案例2:修改boys表中id号为2的名称为张飞,魅力值为10
UPDATE
`boys`
SET
boyName = '久森',
userCP = 900
WHERE id = 2
语法:
sql92语法
update 表1 别名, 表2, 别名
set 列=值,...
where 连接条件
and 筛选条件
sql99语法:
update 表1 别名
inner | left | right join 表2 别名
on 连接条件
set 列=值, ...
where 筛选条件
案例1:修改张无忌的女朋友的手机号为114
UPDATE
`beauty` b
INNER JOIN `boys` bo
ON b.`boyfriend_id` = bo.`id` SET `phone` = '114'
WHERE bo.`id` = 1
update
`beauty` b
left outer join `boys` bo
on b.`boyfriend_id` = bo.`id` SET `boyfriend_id`=2
where bo.`id` is null
delete from 表名 where 筛选条件;
案例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 筛选条件
案例:删除张无忌的女朋友的信息(单表删除)
delete
b
from
`beauty` b
inner join `boys` bo
on b.`boyfriend_id` = bo.`id`
where bo.`id` = 1
案例:删除黄晓明的信息以及他女朋友的信息(多表删除)
DELETE
b, bo
FROM
`beauty` b
INNER JOIN `boys` bo
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName`='黄晓明'
truncate table 表名; -- 清空/删除表数据
1、delete可以加WHERE条件,TRUNCATE不能加
2、truncate删除,效率高一点
3、假如要删除的表中有自增长列,
如果用delete删除后,再插入数据,自增长列的值从断点开始,
而truncate删除后,再插入数据,自增长列的值从1开始
4、truncate删除没有返回值,delete删除有返回值
5、truncate删除不能回滚,delete删除可以回滚
运行以下脚本创建表my_employees
USE `myemployees` ;
CREATE TABLE My_employees(
ID INT(10),
first_name VARCHAR(10),
last_name VARCHAR(10),
Userid VARCHAR(10),
Salary DOUBLE(10,2)
);
CREATE TABLE users(
id INT,
userid VARCHAR(10),
department_id INT
);
#习题1:显示表my_employees的结构
DESC `my_employees`
#习题2:向my_employees表中插入下列数据
ID FIRST_NAME LAST_NAME USERID SALARY
1 patel Ralph Rpatel 895
2 Dancs Betty Bdancs 860
3 Biri Ben Bbiri 1100
4 Newman Chad Cnewman 750
5 Ropeburn Audrey Aropebur 1550
INSERT INTO `my_employees`
VALUES(1,'patel', 'Ralph', 'Rpatel', 895),
(2,'Dancs', 'Betty', 'Bdancs', 860),
(3,'Bin', 'Ben', 'Bbiri', 1100),
(4,'Newman', 'Chad', 'Cnewman', 750),
(5,'Ropeburn', 'Audrey', 'Aropebur', 1550)
方式2:
INSERT INTO `my_employees`
SELECT 1,'patel', 'Ralph', 'Rpatel', 895 UNION
SELECT 2,'Dancs', 'Betty', 'Bdancs', 860 UNION
SELECT 3,'Bin', 'Ben', 'Bbiri', 1100 UNION
SELECT 4,'Newman', 'Chad', 'Cnewman', 750 UNION
SELECT 5,'Ropeburn', 'Audrey', 'Aropebur', 1550
习题3:向user表中插入数据
向user表中插入数据
1 Rpatel 10
2 Bdancs 10
3 Bbiri 20
4 Cnewman 30
5 Aropebur 40
INSERT INTO `users` -- 注意中文空格
VALUES(1, 'Rpatel', 10),
(2, 'Bdancs', 10),
(3, 'Bbiri', 20),
(4, 'Cnewman', 30),
(5, 'Aropebur', 40)
习题4:将3号员工的last_name修改为'drelxer'
UPDATE
`my_employees`
SET
`last_name` = 'drelxer'
WHERE ID = 3
习题5:将所有工资少于900 的员工的工资修改为1000
UPDATE
`my_employees`
SET
`Salary` = 1000
WHERE `Salary` < 900
习题6:将userid为Bbiri 的user表和my_employees表的记录全部删除
思路:先根据userid连接两个表,然后再加上删除条件就OK
DELETE
m,
u
FROM
`my_employees` m
INNER JOIN `users` u
ON m.`Userid` = u.`userid`
WHERE u.`userid`='Bbiri';
习题7:删除所有数据
DELETE FROM `my_employees`;
DELETE FROM `users`;
习题8:检查所有的修改
SELECT * FROM `my_employees`;
SELECT * FROM `users`;
习题9:清空my_employees表结构
TRUNCATE TABLE `my_employees`;