MySQL(6):SQL之DML

一、DML

DML:数据操作语言:insert、update、delete

(1)插入语句(insert)

INSERT INTO 表名(1,列 2,列 3....) VALUES(1,值 2,值 3......);
  1. 普通用法(id是自增所以会自动加一)
INSERT INTO student (name,sex,birthday) VALUES ('品如',0,'2021-09-30 00:00:00');
  1. 指定字段(其他项则是default)
INSERT INTO student (name) VALUES('珊珊');
  1. 插入多条数据
INSERT INTO student (name,sex) VALUES ('世贤',1),('艾莉',0);
  1. 复制数据(创建一个新表,表的定义要和旧表相同)
INSERT INTO student_new (id,name,sex,birthday)
SELECT id,name,sex,birthday
FROM student;

注意:

INSERT INTO           -- 数据库会检查主键(PrimaryKey),如果重复的话会报错。
INSERT IGNORE INTO	  -- 如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条插入语句。

(2)修改语句(update)

UPDATE 表名 SET1=新值 1 ,2 = 新值 2,.....WHERE 条件;
  1. 修改所有数据(不推荐使用,不带条件会全部修改)
UPDATE `student` SET `name = '珊珊';
  1. 指定条件修改
UPDATE `student` SET `name`='艾莉',`sex`=0 WHERE id=1;
  1. 多表更新
-- 修改雷佳音的电话号码, phone在表user_detail
UPDATE `user` u
INNER JOIN `user_detail` ud ON u.`id` = ud.`user_id` 
SET ud.`phone` = '13866888866' 
WHERE
	u.`name` = '雷佳音';

(3)删除语句(delete)

DELETE FROM 表名 WHERE 条件;
  1. 单表删除
DELETE FROM `student` WHERE `id` = 1; -- 不带条件会删除所有
  1. 多表删除
-- 删除雷佳音的所有信息
DELETE 
  u,
  ud
FROM
  `user` u
INNER JOIN `user_detail` ud ON u.`id` = ud.`user_id` 
WHERE 
	u.`name` = '雷佳音';

(4)清空表(truncate)

TRUNCATE TABLE school; -- 相当于按照原表的格式创建一张新表

二、重点:删除三兄弟的区别。

  • delete:一行一行地删除表中数据,删除内容但不删除定义;

    delete是DML语言,操作时原数据会被放到 rollback segment中,可以被回滚。

  • drop:删除内容和定义,释放空间,即删除整个表;

  • truncate:清空表中全部数据,删除内容但不删除定义。

    1. truncate后自增id标识列从头开始计算,但delete后是从上一个数开始;

    2. truncate是DDL语言,操作时不会进行存储,不能进行回滚。

    执行速度:drop > truncate > delete

引用:

image-20210930110757067

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值