文章目录
前言
DML是数据操纵语言
- 插入:insert
- 修改:update
- 删除:delete
一、插入语句
1.语法
INSERT INTO 表名 (列名,...) VALUES (值 1,...);
2.案例
beauty表:
2.1方式一:经典插入【常用】
①插入的值的类型要与列的类型一致或兼容
INSERT INTO beauty (
id,
`name`,
sex,
borndate,
phone,
photo,
boyfriend_id
)
VALUES
(
13,
'唐艺昕',
'女',
'1990-4-23',
'18988888888',
NULL,
2
);
②不可以为NULL的列必须插入值,可以为NULL的列如何插入值?
#方式一:如上,列名写着,值用NULL填充
#方式二:列名与值都省略
INSERT INTO beauty (
id,
`name`,
sex,
borndate,
phone,
boyfriend_id
)
VALUES
(
14,
'金星',
'女',
'1990-4-23',
'13888888888',
9
);
③列的顺序是否可以调换?
INSERT INTO beauty ( `name`, sex, id, phone )
VALUES
( '蒋欣', '女', 15, '15588888888' );
④列数和值的个数必须一致
INSERT INTO beauty ( `name`, sex, id, phone, boyfriend_id )
VALUES
( '关晓彤', '女', 16, '13788888888' );
⑤可以省略列名,默认是所有列,而且列的顺序和表中列顺序一致
INSERT INTO beauty
VALUES
(
17,
'赵丽颖',
'女',
'1988-5-3',
'17788888888',
NULL,
NULL
);
2.2方式二:简单插入【了解】
语法:
INSERT INTO 表名
SET 列名=值,列名=值,...
案例:
INSERT INTO beauty
SET id = 19,
NAME = '刘涛',
phone = '13577777777';
3.两种方式比较
3.1方式一支持插入多行,方式二不支持
INSERT INTO beauty (
id,
`name`,
sex,
borndate,
phone,
photo,
boyfriend_id
)
VALUES
(
23,
'唐艺昕1',
'女',
'1990-4-23',
'18988888888',
NULL,
2
),
(
33,
'唐艺昕2',
'女',
'1990-4-23',
'18988888888',
NULL,
2
),(
43,
'唐艺昕3',
'女',
'1990-4-23',
'18988888888',
NULL,
2
);
3.2方式一支持子查询,方式二不支持
INSERT INTO beauty ( id, `name`, phone ) SELECT
20,
'宋茜',
'17766666666';
二、修改语句
1.修改单表的记录【掌握】
语法:
UPDATE 表名
SET 列=新值,列=新值,...
WHERE 筛选条件;
案例1:修改beauty表中姓唐的女神的电话为13855555555
UPDATE beauty
SET phone = '13855555555'
WHERE
`name` LIKE '唐%';
案例2:修改boys表中id号为2的名称为张飞,魅力值10
UPDATE boys
SET boyName = '张飞',
userCP = 10
WHERE
id = 2;
2.修改多表的记录【了解】
语法:
#sql92
UPDATE 表1 别名,表2 别名
SET 列=值,...
WHERE 连接条件
AND 筛选条件;
#sql99
UPDATE 表1 别名
INNER|LEFT|RIGHT JOIN 表2 别名
ON 连接条件
SET 列=值,...
WHERE 筛选条件;
案例1:修改张无忌女朋友的手机号为18233333333
UPDATE boys bo
INNER JOIN beauty b ON bo.id = b.boyfriend_id
SET b.phone = '18233333333'
WHERE
bo.boyName = '张无忌';
案例2:修改没有男朋友的女神的男朋友编号都为2号
UPDATE boys bo
RIGHT JOIN beauty b ON bo.id = b.boyfriend_id
SET b.boyfriend_id = 2
WHERE
b.boyfriend_id IS NULL;
三、删除
1.delete
3.1单表的删除
语法:
DELETE FROM 表名 WHERE 筛选条件;
案例:删除手机号以9结尾的女神信息
DELETE
FROM
beauty
WHERE
phone LIKE '%9';
3.2多表的删除
语法:
#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 = '张无忌';
案例2:删除黄晓明以及他女朋友的信息
DELETE b,
bo
FROM
beauty b
INNER JOIN boys bo ON b.boyfriend_id = bo.id
WHERE
bo.boyName = '黄晓明';
2.truncate
语法:
TRUNCATE TABLE 表名;
3.两者区别【☆】
- delete可以加where条件,truncate不可以
- truncate删除效率高
- 假如要删除的表中有自增长列,如果用delete删除后再插入数据,自增长列的值从断点开始;而truncate删除后再插入数据,自增长列的值从1开始
- truncate删除不能回滚,delete删除可以回滚