MySQL数据库——DML语言

#DML语言
/*
数据操作语言
插入:insert
修改:update
删除:delete
*/

#一、插入语句
#方式一:经典插入!
/*
语法:
    insert into 表名(列名,...)
    values(值1,...);
*/
#案例1:
#1.插入的值的类型要和列的类型一致或者兼容
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','','1990-4-23','1888888888',NULL,2);

SELECT *
FROM beauty;

#2.不可以为null的列必须插入值;可以为null的列如何插入值?
#方式一:
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','','1990-4-23','1888888888',NULL,2);
#方式二:
INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
VALUES(13,'唐艺昕','','1990-4-23','1888888888',2);
#列也不写,null也不写
#3.列的顺序是否可以调换
#只要列和值一一对应即可!
#4.列和值必须匹配,无论是值还是个数
#5.可以省略列名,默认所有列,而且列的顺序和表的顺序一致

#方式二:
/*
语法:
    insert into 表名
    set 列名=值,列名=值...;
*/
#案例:
INSERT INTO beauty
SET id = 19,NAME = '刘涛',phone='999';
#两种方式大pk

1.方式一支持插入多行,方式二不支持
INSERT INTO beauty
VALUES (...),(...);
2.方式一支持子查询,方式二不支持
INSERT INTO beauty
SELECT 26,'宋茜','118';#将查询的结果集插入表中

#二、修改语句
/*
1.修改单表中的记录☆
语法:
    update 表名①
    set 列=新值,列=新值,...③
    where 筛选条件;#跟查询时候的一样的②

2.修改多表的记录【补充】
语法:
    sql92语法
    update 表1 别名, 表2 别名
    set 列= 值,...
    where 连接条件
    and 筛选条件
    sql99语法
    update 表1 别名
    连接类型 join 表2 别名
    on 链接条件
    set 列=值,...
    where 筛选条件
*/
#案例:修改beauty表中姓唐的电话都改成138
UPDATE beauty
SET phone = '138'
WHERE NAME LIKE '唐%';
#案例:修改张无忌的女朋友的手机号为114
UPDATE boys bo
INNER JOIN beauty b
ON b.`boyfriend_id` = bo.`id`
SET b.`phone` = '114'
WHERE bo.`boyName` = '张无忌';
#案例:修改没有男朋友的女神的男朋友编号都为2号
UPDATE boys bo
RIGHT JOIN beauty b
ON b.`boyfriend_id` = bo.`id`
SET b.`boyfriend_id` = 2
WHERE bo.`id` IS NULL;

#三、删除语句
/*
方式一:delete 一次删除一整行
语法:
    1.单表删除
    delete from 表名 where 筛选条件
    2.多表删除
    sql92
    delete 表1 别名, 表2 别名
    from 表1 别名, 表2 别名
    where 连接条件
    and 筛选条件
    
    sql99
    delete 表1别名, 表2别名
    from 表1 别名
    连接方式 join 表2 别名
    on 连接条件
    where 筛选条件

方式二:truncate 表全部删除
语法:
    truncate table 表名;
*/

#方式一:
#1.单表删除
#案例:删除beauty表手机编号最后一位味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`='黄晓明';

#方式二
#案例:将魅力值大于100的男神删除
TRUNCATE TABLE boys; #全删整个表

#delete pk truncate【面试题】
1.delete可以加WHERE条件,TRUNCATE不可以
2.使用TRUNCATE删除,效率高一点点
3.加入要删除的表中有自增长列,如果用DELETE删除后,再插入数据,自增长列的值从断点开始
,而TRUNCATE删除后,再插入数据,自增长列从1开始
4.truncate删除没有返回值,DELETE删除有返回值,也就是不返回到底几行成功了
5.truncate删除不能回滚,DELETE删除可以回滚

 

posted @ 2021-02-20 14:45  不妨不妨,来日方长  阅读(64)  评论(0编辑  收藏  举报