插入、更新、删除数据

插入、更新、删除数据

插入

CREATE TABLE IF NOT EXISTS student1(
`id` INT(4) NOT NULL COMMENT '序号',
`name` VARCHAR(30) DEFAULT '匿名' COMMENT '姓名',
`age` INT(3) DEFAULT 0 COMMENT '年龄',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '年龄',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`adress` VARCHAR(50) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(2) DEFAULT NULL COMMENT '电子邮箱',
`gradeid` INT(10) DEFAULT NULL COMMENT '年级id',
PRIMARY KEY(`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO `student1`(id, `name` ,`age`) VALUES(1,'dongdong','1');

插入数据语法

INSERT INTO `表名`([`字段名1`,`字段名2`,...`字段名n`,]) VALUES(值1,值2,...值n);
-- 字段名可以省略,但不建议省略,如果省略部分,会使用默认值,如果省略全部,需要把所有的值按顺序排列好,不建议

更新

DROP TABLE IF EXISTS student1;
CREATE TABLE IF NOT EXISTS student1(
`id` INT(4) NOT NULL COMMENT '序号',
`name` VARCHAR(30) DEFAULT '匿名' COMMENT '姓名',
`age` INT(3) DEFAULT 0 COMMENT '年龄',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '年龄',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`adress` VARCHAR(50) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(2) DEFAULT NULL COMMENT '电子邮箱',
`gradeid` INT(10) DEFAULT NULL COMMENT '年级id',
PRIMARY KEY(`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `student1`(id, `name` ,`age`) VALUES(1,'dongdong','1');
INSERT INTO `student1`(id, `name` ,`age`) VALUES(2,'qiuqiu','0');

UPDATE `student1` SET `sex`='男',`birthday`='2020-12-24' WHERE `name`='dongdong';
UPDATE `student1` SET `sex`='女',`birthday`='2025-6-10' WHERE `name`='qiuqiu';

更新数据语法

UPDATE `表名` SET `字段名1`=值1[,`字段名2`=值2,...`字段名n`=值n,]) WHERE (条件子句);
-- where子句可以省略,但不建议省略,如果省略部分,会系应该所有问题,无法恢复,到时候只能走人了

where子句的语法

操作符 含义 举例 结果
= 相等 2=1 false
<> 或者!= 不相等 2<>1 true
> 大于 2>1 true
< 小于 2<1 false
>= 大于等于 2>=1 true
<= 小于等于 2<=1 false
between...and 再某个范围内,闭区间 between 2 and 4 [2,4]
and 与 等同于&& 2>1 and 2<1 false
or 或 等同于|| 2>1 or 2<1 true
-- 通过多个条件定位数据
UPDATE `student1` SET `sex`='女',`birthday`='2024-6-10' WHERE `name`='qiuqiu' AND `id`=2;
UPDATE `student1` SET `sex`='女',`birthday`='2025-6-10' WHERE `name`='qiuqiu' OR `id`=3;

语法

UPDATE `表名` SET `字段名1`=值1[,`字段名2`=值2,...`字段名n`=值n,]) WHERE (条件子句);

注意点

条件,如果没有指定,则会修改所有的列

value,是一个具体的值,也可以是一个变量或者函数

-- birthday值设置为函数
UPDATE `student1` SET `sex`='女',`birthday`=NOW() WHERE `name`='qiuqiu' OR `id`=3;
-- birthday值设置为变量
UPDATE `student1` SET `sex`='女',`birthday`=CURRENT_TIME WHERE `name`='qiuqiu' OR `id`=3;

删除

CREATE TABLE IF NOT EXISTS grade(
`gradeid` INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '年级id', 
`name` VARCHAR(50) NOT NULL COMMENT '年级名称'
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO `grade`(`name`) VALUES ('大一'),('大二'),('大三');

-- 删除数据
DELETE FROM `grade` WHERE gradeid =2;

-- 删除表中所有数据
-- 不建议使用delete, delete删除数据后再次插入数据id从4开始
DELETE FROM `grade`; 
-- 建议使用truncate,truncate清空数据后再次插入数据从id
TRUNCATE `grade`;

删除数据语法

-- 删除满足一定约束的数据
DELETE FROM `表名` [WHERE 条件];

-- 删除表中所有数据
-- 不建议使用delete, delete删除数据后再次插入数据id从4开始
DELETE FROM `表名`; 
-- 建议使用truncate,truncate清空数据后再次插入数据从id
TRUNCATE `表名`;

了解即可:delete清空数据的问题,重启数据库,现象

  • InnoDB 自增会从1开始(存在内存中,断电即失)
  • MyISAM 继续从上一个自增量开始(存在文件中,不会丢失)
posted @ 2021-12-30 11:46  Oh,mydream!  阅读(38)  评论(0编辑  收藏  举报