Data Management Language,主要的操作对象是表中的数据,主要做的事情就是表中数据的增删改
管理表中数据时主要用到的关键字
插入:insert
修改:update
删除:delete
insert into
语法:
insert into 表名(列名,......) values(值1,......);
特点:
① 插入的值的类型要与列的类型一致或兼容
② 可以为null的列如何插入值?
方式1
:写上列名,插入值时写null ,如案例1
方式2
:列名和值都不写 ,如案例2
③ 列的顺序可以调换,列数和值必须匹配,如案例3
④ 可以省略列名,默认所有列,而且列的顺序和表中列的顺序要一致,如案例4
案例
1 在beauty表中插入一个行的记录
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-02-23','11112222333',NULL,2);
SELECT * FROM beauty;
不可以为null的字段必须插入值,可以为null的列如何插入值?
方式1:写上列名,插入值时写null ,如案例1
方式2:列名和值都不写 ,如案例2
案例
2
INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
VALUES(14,'周迅','女',NULL,'100100',4);
案例
3
INSERT INTO beauty(NAME,id,sex,borndate,phone,boyfriend_id)
VALUES('小小',15,'女','1996-02-19','11111111',3);
案例
4
INSERT INTO beauty VALUES(16,'王菲','女','1978-09-18','1100101010',NULL,2);
insert into 表名
set 列名1=值1, 列名2=值2, .....
案例
5
INSERT INTO beauty
SET id=17,NAME='孙俪',sex='女',phone='11111111';
INSERT INTO beauty(id,NAME,phone)
VALUES(18,'宋茜','1919191919'),(19,'赵李颖','198298298');
INSERT INTO beauty(id,NAME,phone)
SELECT 20,'蔡依林','78650678';
1.修改单表的记录
语法:
UPDATE
表名
SET
列=值,列=值…
where
筛选条件2.修改多表的记录
语法:
update
表名
inner|left outer|right outer join
表2
on
筛选条件
set
列=值,列=值,…
where
筛选条件
案例
6:修改单表记录
UPDATE beauty
SET NAME='蔡林林',phone='0000000'
WHERE id = 20;
UPDATE beauty
SET phone='0000001',NAME='蔡林林'
WHERE id = 20;
注意:
修改多表记录,所谓多表记录,其实是将多个表连接之后再修改的意思
案例
7:修改张无忌的女友的电话号码为1114
UPDATE beauty g
INNER JOIN boys b
ON g.`boyfriend_id` = b.`id`
SET g.`phone` = 1114
WHERE b.`boyName` = '张无忌';
案例
8:修改没有男朋友的女神的男友编号为2
UPDATE beauty g
LEFT OUTER JOIN boys b
ON g.`boyfriend_id` = b.`id` #通过连接条件g.`boyfriend_id` = b.`id`
#连接两个表,beauty为主表
SET g.`boyfriend_id` = 2
WHERE b.`id` IS NULL; #where放在set之后
方式一:delete
(每次删除以行
为最小单位,或者直接删除整张表)
语法:
单表的删除
语法:
delete from 表名(不加where 筛选条件时删除整张表)
where 筛选条件
多表的删除
语法:
delete 表1的别名,表2的别名(注:如果只删除表1中的内容,就只写上表1别名)
from 表1 别名
inner | left outer | right outer join 表2 别名
on 连接条件
where 筛选条件
方式二:truncate
(只能用于删除整个表)
语法:
truncate table 表名;
案例
9 删除手机号以9结尾的女神信息 (我给beauty加了别名,发现并不符合语法)
DELETE FROM beauty WHERE phone LIKE '%9';
案例
10 删除张无忌的女友的信息
DELETE g
FROM beauty g
INNER JOIN boys b
ON g.`boyfriend_id` = b.`id`
WHERE b.`boyName`= '张无忌';
案例
11 删除黄晓明及其女友的信息
DELETE g,b
FROM beauty g
INNER JOIN boys b
ON g.`boyfriend_id` = b.`id`
WHERE b.`boyName` = '黄晓明';
SELECT * FROM boys;
SELECT * FROM beauty;
案例
12:魅力值大于100的男神信息删除
注意
:如果使用truncate
,则不可以加where
筛选条件,所以上述的案例很难满足
TRUNCATE TABLE boys; --直接删除boys表
delete
可以加where
筛选条件;truncate
不可以加,且只能删除整张表truncate
删除的效率高一点点- 如果表中有自增长列:
使用delete
删除数据后,再插入数据,自增长列从断点处开始
使用truncate
删除数据后,再插入数据,自增长列从1开始:如下案例13truncate
删除没有返回值,delete
删除有返回值truncate
删除后不能回滚,但是delete
删除后可以回滚
案例
13:
DELETE FROM boys;
SELECT * FROM boys;
INSERT INTO boys(boyName,userCP)
VALUES('张飞',100),('关羽',100),('刘备',100);
TRUNCATE TABLE boys;
SELECT * FROM boys;
INSERT INTO boys(boyName,userCP)
VALUES('张飞',100),('关羽',100),('刘备',100);