DML语言(全记住)
数据库意义:数据存储、数据管理
DML语言:数据操作语言
- Insert
- update
- delete
- truncate
1.insert 添加
错误示例:
-- 1.指定1个字段,插入1条记录
-- insert into 表名 [(字段1,字段2,字段3,...)] values('值1'),('值2'),('值3'),...
INSERT INTO `grade`(`gradename`) VALUES('大四')
-- 2.未指定字段,则需插入全部字段
INSERT INTO `teacher1` VALUES('1','黎明','111','女','1999-01-01','西安','123')
-- 一般写插入语句,数据和字段要一一对应
-- 3.指定1个字段,插入多条记录
INSERT INTO `grade` (`gradename`)
VALUES('大二'),('大一')
-- 4.指定多个字段、插入多条记录
INSERT INTO `student` (`name`,`pwd`,`sex`,`birthday`,`gradeid`,`address`,`email`)
-- VALUES('李四','bbb','女',CURRENT_TIME,'2','南极','654321@qq.com')
VALUES('王五','ccc','男',CURRENT_TIME,'3','银河','123@qq.com'),
('赵六','ddd','女',CURRENT_TIME,'1','火星','1234@qq.com')
语法:insert into 表名 [(字段1,字段2,字段3,...)] values('值1'),('值2'),('值3'),...
注意:
- 字段和字段间用 英文逗号 隔开
- 字段是可以省略的,但是后面的值必须要和表中字段 一一对应,不能少
- 可以同时插入多条记录,VALUES后面的值,需用 , 隔开即可,如 (),()
2.update 修改
修改谁 (条件) set 原来的值 = 新值
-- 修改年级名字,带了条件
SELECT * FROM `grade`
UPDATE `grade` SET `gradename` = '大四' WHERE `gradeid` = '2'
SELECT * FROM `grade`
-- 不指定条件时,会改动所有表
UPDATE `grade` SET `gradename` = '大三'
SELECT * FROM `grade`
-- 修改多个字段,逗号隔开
SELECT * FROM `student`
UPDATE `student` SET `name`='666',`sex`='女',`address`='家' WHERE `id`=1
SELECT * FROM `student`
语法:
update 表名 set 字段名=值[,字段名=值,字段名=值,...][where 条件]
条件运算符:
操作符 | 含义 |
---|---|
= | 等于 |
<>或!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN ... AND.... | 在某个范围内 |
AND | 我和你 && |
OR | 我或你 || |
-- 通过多个条件定位记录,进行修改
UPDATE `student` SET `name`='555' WHERE `name`='李四' AND `sex`='女'
注意:
- 字段是数据表的列,尽量带上 ``
- 条件,如果没有指定,则会修改所有的数据
- 值可以是一个具体的值,也可以是一个变量
- 多个设置的字段间,使用 英文逗号 隔开
3.delete 删除
语法:delete from 表名 [where 条件]
-- 删除数据(避免这样写,会全部删除)
DELETE FROM `student`
-- 删除指定数据
DELETE FROM `student` WHERE `id`=1
4.truncate 完全清空一个数据库表,表的结构和索引约束不变
-- 清空 student 表
TRUNCATE `student`
5.delete 与 truncate 区别
-
相同点:都能删除数据,都不会删除表结构
-
不同:
- truncate 重新设置 自增列 ,计数器会归零
- truncate 不会影响事务
-- 测试 delete 和 truncate 区别
CREATE TABLE `test`(
`id` INT(4) NOT NULL AUTO_INCREMENT,
`coll` VARCHAR(20) NOT NULL,
PRIMARY KEY(`id`)
)
INSERT INTO `test`(`coll`) VALUES('1'),('2'),('3')
DELETE FROM `test` -- 不会影响自增
TRUNCATE TABLE `test` -- 自增会归零
另一点:DELETE 删除的问题,重启数据库,现象
- InnoDB 自增列会从1开始(存在内存中,断电即失)
- MyISAM 继续上一个自增量(存在文件中,不会丢失)