数据库意义:数据存储,数据管理
DML语言:数据操作语言(insert、update、delete)
语法:
insert into 表名(字段1,字段2,字段3,...) values('值1'),('值2'),('值3'),('...')
例:
①

- --插入语句(添加)
- INSERT INTO `grade`(`gradename`) VALUES ('大一')
-
- --由于主键自增我们可以省略(如果不写表的字段,他就会一一匹配)
- INSERT INTO `grade` VALUES('大三')
②
- CREATE TABLE IF NOT EXISTS `student2`(
- `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
- `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
- `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
- `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
- `birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
- `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
- `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
- PRIMARY KEY(`id`)
- )ENGINE=INNODB DEFAULT CHARSET=utf8
插入语句:
- --一个字段插入多个值
- INSERT INTO `grade`(`gradename`) VALUES('大二'),('大一')
- INSERT INTO `student`(`name`) VALUES('张三')
-
-
- --多个字段插入一个值
- INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES ('张三','aaaaaa','男')
-
-
- --多个字段插入多个值
- INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES ('李四','aaaaaa','男'),('王五','aaaaaa','男')
-
-
- --没有指定字段插入值
- INSERT INTO `student` VALUES (5,'李四','aaaaaa','男','2000-01-01',1,'西安','email')
注意:
修改谁(条件) set原来的值=新值
语法:
UPDATE 表名 SET column_name=value [,column_name2=value2,...] [WHERE condition];
例:
- -- 修改学员名字
- UPDATE `studenttest1` SET `name`='xiaoming' WHERE id = 1
-
- -- 不指定条件的情况下,会改动所有的表!
- UPDATE `studenttest1` SET `name`='xiaohong'
-
- -- 修改多个属性,逗号隔开
- UPDATE `studenttest1` SET `name`='小明',`email` = '123@qq.com' WHERE id =1;
-
- -- 通过多个条件定位数据 trim--可以删除多余逗号
- UPDATE `student` SET `birthday` = CURRENT_TIME WHERE `name`='小红' AND sex='女'
-
- -- 语法:
- -- UPDATE 表名 set colnum_name = value.[colnum_name = value,.....] where [条件]
where条件字句
可以简单的理解为:有条件地从表中筛选数据
| 运算符 | 含义 | 范围 | 结果 |
| = | 等于 | 5=6 | false |
| <>或!= | 不等于 | 5!=6 | true |
| > | 大于 | 5>6 | false |
| < | 小于 | 5<6 | true |
| >= | 大于等于 | 5>=6 | false |
| <= | 小于等于 | 5<=6 | true |
| BETWEEN | 在某个范围之间 | BETWEEN 5 AND 6 | |
| AND | 并且 | 5>1 AND 1>2 | false |
| OR | 或 | 5>1 OR 1>2 | true |
例:
- -- 通过多个条件定位数据
- -- 修改学员名字,带了简介
- UPDATE student SET `name`='小红' WHERE `name`='小明' WHERE id BETWEEN 2 AND 5
注意:
语法:
DELETE from 表名 [where 条件]
注意:如果不指定筛选条件,则会删除该表所有列数据
例:
- -- 删除数据 (避免这样写,会全部删除)
- DELETE FROM `student`
-
- -- 删除指定数据
- DELETE FROM `student` WHERE id = 1;
作用:完全清空一个数据库表,表的结构、索引和约束不会变!
例:
- -- 清空 student表
- TRUNCATE `student`
测试 DELETE 和 TRUNCATE:
- -- 创建一个测试表
- CREATE TABLE `test` (
- `id` INT(4) NOT NULL AUTO_INCREMENT,
- `coll` VARCHAR(20) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8
-
- -- 插入几个测试数据
- INSERT INTO test(coll) VALUES('row1'),('row2'),('row3');
-
- -- 删除表数据(不带where条件的delete)
- DELETE FROM test;
- -- 结论:如不指定Where则删除该表的所有列数据,自增当前值依然从原来基础上进行,会记录日志.
-
- -- 删除表数据(truncate)
- TRUNCATE TABLE test;
- -- 结论:truncate删除数据,自增当前值会恢复到初始值重新开始;不会记录日志.
-
扩展:
同样使用DELETE清空不同引擎的数据库表数据.重启数据库服务后
InnoDB:自增列从初始值重新开始 (因为是存储在内存中,断电即失)
MyISAM:自增列依然从上一个自增数据基础上开始 (存在文件中,不会丢失)