MySQL笔记6 DML语言(增删改)

目录

数据操作语言: 

插入语句

一、插入语句方式1之经典插入

语法:

注意:

二、插入语句方式2

语法:

补充:两种插入方式比较

修改语句

1、修改单表的记录★

语法:

2、修改多表的记录(补充)

语法:

删除语句

方式一:delete

                语法:单表删除★ (delete后面不跟其他 直接跟from)

                          多表删除(补充)(delete后面跟要删的哪个表的别名)

方式二:truncate

 语法:

补充:delete与truncate的区别


数据操作语言: 

                           插入:insert

                           修改:update

                           删除:delete

插入语句

一、插入语句方式1之经典插入

语法:

insert into 表名(列名1,列名2,……) values(值1,值2,……);

注意:

1、插入的值的类型要与列的类型一致或兼容(可以转化):

INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id) 
VALUES(13,'刘诗诗','女','1977-7-9','77712',
                     NULL/* 因为此处的类型说明了nullable即可以为空*/,10);

查看是否插入成功 select * from beauty

输出结果

2、不可以为null的列必须插入值,可以为null的列如何插入值?

方式一:值用null表示

INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id) 
VALUES(13,'刘诗诗','女','1977-7-9','77712',NULL,10); #对应photo列可以为null值

方式二:列名和值都不写

INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id) 
                                            #没写photo列
VALUES(13,'刘诗诗','女','1977-7-9','77712',10);
                                            #也没写photo列新增的值

3、列的顺序是否可以调换?

INSERT INTO beauty(NAME,id,sex,borndate,boyfriend_id,phone) 
                                   #列的顺序之间可以调换,但是添加值必须要与列的类型对应
VALUES('倪妮',14,'女','1980-7-9',11,'11111111');

4、列数和值的个数必须一致

5、可以省略列名,但是默认是所有列,而且列的顺序和表中的顺序一致

INSERT INTO beauty
VALUES(15,'刘亦菲','女','1987-1-9','7333322',NULL,NULL);

二、插入语句方式2

语法:

 insert into 表名

 set 列名=新值,列名=值,……

示例1:

INSERT INTO beauty
SET id=19,NAME='刘涛',phone='999';

补充:两种插入方式比较

1、方式一支持插入多行,方式二不支持

例如

INSERT INTO beauty
VALUES(17,'阚清子','女','1987-1-9','737722',NULL,NULL),
(20,'卡琳娜','女','1990-1-9','7338822',NULL,NULL);

2、方式一支持子查询,方式二不支持

例如

INSERT INTO beauty(id,NAME,phone)
SELECT 25,'金珍妮','789787987';

或者

INSERT INTO beauty(id,NAME,phone)
SELECT id,boyname,'689687'
FROM boys WHERE id<3;      #因为表不合适,不输出结果

修改语句

1、修改单表的记录

语法:

 update 表名                          执行顺序①

  set 列 =新值,列=新值,……  执行顺序③

  where 筛选条件;                  执行顺序②

                                              #不筛选的话就修改整个列了,这里筛选条件仍然是逻辑表达式、数                                                   学 表达式、模糊条件

案例1:修改beauty表中姓刘的电话都改成1389988988

UPDATE beauty
SET phone='1389988988'
WHERE NAME LIKE '刘%';
SELECT * FROM beauty;

案例2:修改boys表中的id为2的名字为朴海镇,魅力值1000

UPDATE boys
SET boyname='朴海镇',usercp=1000
WHERE id=2;

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.`boyName`='张无忌';

案例2:修改没有男朋友的女神的男朋友编号都为2号

UPDATE beauty b
LEFT JOIN boys bo
ON b.`boyfriend_id`=bo.`id`
SET b.`boyfriend_id`=2
WHERE bo.id IS NULL;

删除语句

方式一:delete

                语法:单表删除★ (delete后面不跟其他 直接跟from)

                              delete from 表名 where 筛选条件            #若不加筛选条件,则表里的数据都删                                                                                                除了,而且一删除就是整行删除

                                     案例1:删除手机号尾数为9的女神信息

DELETE FROM beauty WHERE phone LIKE '%9';

                          多表删除(补充)(delete后面跟要删的哪个表的别名)

                                 sql92语法:      delete 【表1的别名/表2的别名】

                                                           from 表1 别名,表2 别名

                                                            where 连接条件

                                 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 boyname='张无忌';

                                        案例2:删除黄晓明的信息和他女朋友的信息

DELETE b,bo
FROM beauty b
INNER JOIN boys bo
ON b.`boyfriend_id`=bo.`id`
WHERE bo.boyname='黄晓明';

方式二:truncate

 语法:

           truncate table 表名;     #truncate语句不允许加where 

案例1:将魅力值小于3000的男神删除

TRUNCATE TABLE boys;   #truncate其实就是清空表,全删

补充:delete与truncate的区别

1、delete可以加where筛选条件,truncate不能加

2、truncate删除,效率高一点

3、假如要删除的表中有自增长列,若用delete删除后,再插入数据,那么自增长列的值从断点开         始,而用truncate删除后,再插入数据,自增长列的值从1开始

      示例:删除男神表(id列为自增长列,本来id有1、2、4),然后插入

                先用delete删除

# 用delete去删除

DELETE FROM boys;

   #然后插入

 INSERT INTO boys(boyname,usercp)
 VALUES('刘备',100),('张飞',50),('关云长',200);

插入后结果为

                                                           即再插入后,id是从5开始的

                而用truncate删除

TRUNCATE TABLE boys;

    #然后插入
    INSERT INTO boys(boyname,usercp)
    VALUES('刘备',100),('张飞',50),('关云长',200);

插入后结果为

                                                            即再插入后,id是从1开始的

4、truncate删除没有返回值(即受影响的行数为0行),delete删除有返回值

5、truncate删除不能回滚,delete删除可以回滚  (下节)

测试:……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值