前言
数据库存在的意义在于它对数据存储和管理,在这其中有两个重要的语言。一个是是DML语言(数据操作语言)和DQL语言(数据查询语言),今天我们先来了解一下前者。
DML语言:数据操作语言
- insert
- update
- delete
1. 添加 (Insert)
[1] 插入一组值
-- 插入语句(添加)
-- insert into 表名([字段1,字段2,字段3]) values('值1','值2','值3')
-- 如果不写表的字段,它就会一一对应
INSERT INTO `grade`(`gradeName`) VALUES('大四');
INSERT INTO `student`(`name`,`password`) VALUES('张三','aaa');
[2] 插入多组值
-- 插入多个字段
INSERT INTO `grade`(`gradeName`)
VALUES('大二'),('大一');
INSERT INTO `student`(`name`,`password`,`sex`)
VALUES('王五','ccc','男'),
('赵六','ddd','男');
2. 修改(Update)
语法: update 表名 set column_name = value, [column_name = value,…] where [条件]
注意:
【1】column_name是数据库上的列,尽量带上 ``
【2】条件,筛选的条件,如果没有指定,则会修改所有的列
【3】value, 是一个具体的值,也可以是一个变量
-- 修改学员的名字,带了条件
UPDATE `student` SET `name`='狂神' WHERE id =1
-- 不指定条件的情况下,会改动所有的表(一般不建议这么操作)
UPDATE `student` SET `sex`='男'
-- 修改多个属性
UPDATE `student` SET `name`='狂神1',email='12306' WHERE id=1
-- 语法:
-- update 表名 set column_name = value,[column_name = value,...] where [条件]
3. 删除(delete)
【1】DELETE
-- 删除数据库
Delete from student where id = 2;
【2】与delete命令比较类似的为Truncate命令
Truncate命令的作用:完全清空一个数据表,表的结构和索引不会改变
-- 清空student表
TRUNCATE `student`
delete 与 truncate的异同:
相同点:都是删除数据,都不会删除表结构
不同点:
truncate会重新设置自增列,计数器归零,而delete则不会
truncate不会影响事务,而delete会影响事务
-- 测试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('1'),('2'),('3')
DELETE FROM `test` -- 不会影响自增
TRUNCATE TABLE `test` -- 自增会归零
【3】不同引擎对delete删除后重启数据库的现象
- InnoDB 自增列会从1开始(存在内存中的,断电即失效)
- MyISAM 继续从上一个自增量开始 (存在文件中,不会丢失)