侧边栏壁纸
博主头像
coydone博主等级

记录学习,分享生活的个人站点

  • 累计撰写 306 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

数据操作语言DML

coydone
2022-01-04 / 0 评论 / 0 点赞 / 307 阅读 / 2,672 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

插入:insert

特点

1、字段类型和值类型一致或兼容,而且一一对应。

2、可以为空的字段,可以不用插入值,或用null填充。

3、不可以为空的字段,必须插入值。

4、字段个数和值的个数必须一致。

5、字段可以省略,但默认所有字段,并且顺序和表中的存储顺序一致。

方式一:

 /*
 语法:
 insert into 表名(列名,...) values(值1,...);
 */
 INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
 VALUES(13,'唐艺昕','女','1990-4-23','1898888888',NULL,2);

方式二:

 /*
 语法:
 insert into 表名
 set 列名=值,列名=值,...
 */
 INSERT INTO beauty
 SET id=19,NAME='刘涛',phone='999';

比较

 #1、方式一支持插入多行,方式二不支持
 INSERT INTO beauty
 VALUES(23,'唐艺昕1','女','1990-4-23','1898888888',NULL,2),
 (24,'唐艺昕2','女','1990-4-23','1898888888',NULL,2),
 (25,'唐艺昕3','女','1990-4-23','1898888888',NULL,2);

 #2、方式一支持子查询,方式二不支持
 # 把查询到的结果插入到表中
 INSERT INTO beauty(id,NAME,phone)
 SELECT id,boyname,'1234567'
 FROM boys WHERE id<3;

修改:update

修改单表的记录

# 语法:
update 表名
set 列=新值,列=新值,...
where 筛选条件;
#案例1:修改beauty表中姓唐的女神的电话为13899888899
UPDATE beauty SET phone = '13899888899'
WHERE NAME LIKE '唐%';

#案例2:修改boys表中id为2的名称为张飞,魅力值 10
UPDATE boys SET boyname='张飞',usercp=10
WHERE id=2;

修改多表的记录

sql92语法:

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

sql99语法:

update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件;
#案例 1:修改张无忌的女朋友的手机号为114
UPDATE boys bo
INNER JOIN beauty b ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='119',bo.`userCP`=1000
WHERE bo.`boyName`='张无忌';

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

删除:delete

方式一:delete

单表的删除

delete from 表名 where 筛选条件;

多表的删除

sql92语法:

delete 表1的别名,表2的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;

sql99语法:

delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;
#案例:删除手机号以9结尾的女神信息
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`='黄晓明';

方式二:truncate

语法:truncate table 表名;

#清空表的所有数据
TRUNCATE TABLE boys ;

DELETE FROM boys;
TRUNCATE TABLE boys;

delete和truncate区别

  • delete 可以加where 条件,truncate不能加。

  • truncate删除效率高一点点。

  • 假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。

  • truncate删除没有返回值,delete删除有返回值。

  • truncate删除不能回滚,delete删除可以回滚。

MySQL8新特性:计算列

什么叫计算列呢?简单来说就是某一列的值是通过别的列计算得来的。例如,a列值为1、b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。

在MySQL 8.0中,CREATE TABLE 和 ALTER TABLE 中都支持增加计算列。

举例:定义数据表tb1,然后定义字段id、字段a、字段b和字段c,其中字段c为计算列,用于计算a+b的值。 首先创建测试表tb1,语句如下:

CREATE TABLE tb1(
	id INT,
	a INT,
	b INT,
	c INT GENERATED ALWAYS AS (a + b) VIRTUAL
);
INSERT INTO tb1(a,b) VALUES (100,200);
0

评论区