MySQL数据管理的DML语言

学习B站狂神的数据库记下的一点笔记

insert—增

形式:

INSERT INTO `表名` (`字段名1`, `字段名2`, ... ,`字段名n`) 
VALUES (`11`, `12`, ... ,`1n`),(`21`, `22`, ... ,`2n`),(`值m1`, `值m2`, ... ,`值mn`)

实例:

-- 插入语句(添加)
-- insert into 表名 ([字段名1, 字段名2, 字段名3, ...]) values('值1'),('值2'),('值3'), (...)

INSERT INTO `grade` (`gradename`) VALUES ('大四')

-- 由于主键自增我们可以省略主键(如果不写表的子弹, 他就会一一匹配)
INSERT INTO `grade` VALUES ('大三')
-- 错误: Column count doesn't match value count at row 1

-- 一般写插入语句, 我们一定要数据和字段一一对应

-- 插入多个字段
INSERT INTO `grade` (`gradename`) VALUES ('大二'),('大一')

INSERT INTO `student` (`name`) VALUES ('张三')
INSERT INTO `student` (`name`,`pwd`,`gender`)
VALUES ('罗小黑','aaaaaa','男')

INSERT INTO `student` (`name`, `pwd`, `gender`)
VALUES ('李四','bbbbbb','女'),('王`,'888888',''),('孙五','777777','男')

注意事项:

  1. 字段和字段之间使用英文逗号隔开
  2. 字段是可以省略的, 但是后面的值必须要一一对应!也就是说, 前面字段省略的话, 后面的值要写全了(自增的字段可以不用去管)
  3. 可以同时插入多条数据, VALUES后面的值需要使用,隔开VALUES(),()

update—改

-- 修改学生名字, 带了简介
UPDATE `student` SET `name`='丁午' WHERE id = 1;

-- 不指定条件的情况下, 会改动所有表, 如果是这样, 跑路去吧
UPDATE `student` SET `name`='苍老师'
-- 不要这样改

-- 语法:
-- update `表名` set column_name = '值' where [条件] 

-- 修改多个属性, 逗号隔开
UPDATE `student` SET `name`='马邦德', `email`='1234567@qq.com' WHERE id = 1;
-- update `表名` set column_name1 = '值', column_name2 = '值' where [条件]

关于where子句运算符:
正好使用sql创建表格~

CREATE TABLE `after_where`(
`id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年纪id',
`操作符` VARCHAR(50) NOT NULL COMMENT '操作符',
`含义` VARCHAR(50) NOT NULL COMMENT '含义',
`范围` VARCHAR(50) NOT NULL COMMENT '范围',
`结果` VARCHAR(50) NOT NULL COMMENT '结果',
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO `after_where` (`操作符`,`含义`,`范围`,`结果`)
VALUES ('=','等于','5=6','false'),('<>或!=', '不等于','5<>6或5!=6','true')

INSERT INTO `after_where` (`操作符`,`含义`,`范围`,`结果`)
VALUES ('>','大于','5>6','false'),('<', '小于','5<6','true'),('>=','大于等于','5>=6','false'),('<=','小于等于','5<=6','true')

INSERT INTO `after_where` (`操作符`,`含义`,`范围`,`结果`)
VALUES ('BETWEEN...AND...','在某个范围内','[2,5]','null'),('AND','两个条件和','5>1AND1>2','false'),('OR','两个条件或','5>1OR1>2','true')

在这里插入图片描述

注意:

  • column_name是数据库的列, 尽量带上``
  • 条件是进行筛选的条件, 如果没有指定, 则会修改所有的列
  • value, 是一个具体的值, 也可以是一个变量
  • 多个设置的属性之间, 使用英文逗号隔开

delete—删

DELETE FROM 表名[where 条件]

delete和TRUNCATE的区别

  • 相同点: 都能删除数据, 都不会删除表结构
  • 不同:
    TRUNCATE重新设置自增列, 计数器会归零
    TRUNCATE不会影响事务(后面会学)

举个栗子

新建一张表

CREATE TABLE `test1`(
`id` INT(4) NOT NULL AUTO_INCREMENT,
`coll` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO `test1` (`coll`) VALUES ('1'),('2'), ('3')

在这里插入图片描述
执行delete之后:

DELETE FROM `test1`
-- 不会影响自增

在这里插入图片描述
右键改变表, 选择advanced标签,发现自动增量是4

在这里插入图片描述
这时我们再添加新的数据, 是从4开始计数的

在这里插入图片描述
如果使用TRUNCATE删除

TRUNCATE TABLE `test1`

表被删除

在这里插入图片描述

自动增量也被置1了

在这里插入图片描述

了解即可:delete删除的问题, 重启数据库存在一个现象

  • innoDB, 重启的时候, 自增列会从1开始(因为数据库存在内存中, 断电即失)
  • MyISAM: 重启的时候, 自增会从上一个自增量开始(存在文件中的, 不会丢失)

面试问你delete和truncate区别的时候, 可以把这个也带着提提

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值