插入、更新、删除数据
插入、更新、删除数据
插入
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 继续从上一个自增量开始(存在文件中,不会丢失)