MySQL - DML语言 - 插入数据、自增长列、修改数据、删除数据

DML语言

DML(Data Manipulation language)数据操纵语言
关键字:insert update delete
作用:对表中数据的增删改

一、数据的插入

语法:
插入单行:

INSERT INTO 表名(字段名1,字段名2,……) VALUE (值1,值2,……);

插入多行:

INSERT INTO 表名(字段名1,字段名2,……) VALUE (值1,值2,……),(值1,值2,……),(值1,值2,……);

特点:

  1. 字段和值列表一一对应,包含类型、约束等必须匹配
  2. 数值型的值,不用单引号;非数值型的值,必须使用单引号
  3. 字段顺序无要求

案例一:要求字段和值列表一一对应,且遵循类型和约束的限制

INSERT INTO stuinfo(stuid,stuname,stugender,email,borndate) VALUE(1,'吴倩','男','wuqian@qq.com','2020-5-19');

案例二:可以为空字段如何插入

INSERT INTO stuinfo(stuid,stuname,email) VALUE(3,'哈哈','haha@qq.com');

案例三:默认字段如何插入

方案1:字段名写上,值使用DEFAULT
INSERT INTO stuinfo(stuid,stuname,email,stugender) VALUE(4,'hehe','hehe@qq.com',DEFAULT);
方案2:字段名和值都不写
INSERT INTO stuinfo(stuid,stuname,email) VALUE(4,'hehe','hehe@qq.com');

案例四:可以省略字段列表,默认所有字段

INSERT INTO stuinfo VALUE(8,'林','女','lin@qq.com','2020-10-23');
二、设置自增长列

特点:

  1. 自增长列要求必须设置在一个键上,比如主键或者唯一键
  2. 自增长列要求数据类型为数值型
  3. 一个表至多有一个自增长列

设置方法:
1) 图形化界面设置自增长列
在这里插入图片描述
2) 代码设置自增长列:在约束后面加AUTO_INCREMENT

案例:创建gradeinfo表,将grade列设置为自增长列

CREATE TABLE IF NOT EXISTS gradeinfo(
	grade INT PRIMARY KEY AUTO_INCREMENT,
	gradename VARCHAR(20)
);

在添加了自增长列的表中添加数据

INSERT INTO gradeinfo VALUE(NULL,'一年级'),(NULL,'二年级'),(NULL,'三年级');
INSERT INTO gradeinfo(gradename) VALUES('四年级'),('五年级'),('六年级');
三、修改数据
1. 修改单表的数据

语法:

update 表名
set 列=新值,列=新值,…… #字符型和日期型要加单引号,数值型不用加
where 筛选条件 #和查询的筛选条件类似

案例:修改beauty中的热巴为关晓彤

UPDATE beauty 
SET NAME='关晓彤' 
WHERE id=4;
2. 修改多表的数据

sql92语法:

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

sql99语法:

update 表1 别名
[连接类型] join 表2 别名
on 连接条件
set 列=新值,……
where 筛选条件

案例:修改鹿晗女朋友的手机号为123456789

UPDATE boys bo
JOIN beauty b
ON bo.`id`=b.`boyfriend_id`
SET b.phone=123456789
WHERE bo.id=2;
四、删除数据

方式1:DELETE语句:删除整行

语法:DELETE FROM 表名 WHERE 筛选条件;

方式2:TRUNCATE语句:删除表中所有数据

语法:TRUNCATE TABLE 表名

案例:

#案例一:删除所有吴倩的信息
DELETE FROM stuinfo WHERE stuname='吴倩';
#案例二:删除表中所有数据
TRUNCATE TABLE stuinfo;

[面试题]delete和truncate的区别

  1. DELETE可以添加WHERE条件
    TRUNCATE不能添加WHERE条件,一次性清除所有数据
  2. TRUNCATE的效率更高
  3. 如果删除带自增长列的表
    使用DELETE删除后,重新插入数据,记录从断点开始
    使用TRUNCATE删除后,重新插入数据,记录从1开始
#使用truncate删除表中所有数据
TRUNCATE TABLE gradeinfo;
#向表中添加数据
INSERT INTO gradeinfo VALUE(NULL,'一年级'),(NULL,'二年级'),(NULL,'三年级');

在这里插入图片描述

 #使用delete删除表中所有数据
   DELETE FROM gradeinfo;
   #向表中添加数据
   INSERT INTO gradeinfo VALUE(NULL,'一年级'),(NULL,'二年级'),(NULL,'三年级');

在这里插入图片描述

  1. DELETE删除数据,会返回受影响的行数
    在这里插入图片描述

    TRUNCATE删除数据,不会返回受影响的行数
    在这里插入图片描述

  2. DELETE删除数据,可以支持事务回滚
    TRUNCATE删除数据,不支持事务回滚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值