三、MySQL 高级(DML 增删改)
三、MySQL 高级(DML 增删改)
3.1 DML 数据操纵语言
DML(Data Manipulation Language)DML对数据库中表记录的执行操作
-
插入(INSERT) 插入单行数据 插入多行数据 将查询结果插入到新表 更新(UPDATE) 删除(DELETE)
软件开发人员日常使用最频繁的操作,必备技能!!!
3.2 插入数据
-
INSERT 一次向表中插入一条记录
INSERT INTO 表名 [(字段名列表)] VALUES (值列表); # 增
INSERT into gradeinfo (grade) VALUES (ACCP);
字段名是可选的,如省略,则依次插入所有字段 多个列表和多个值之间使用逗号分隔 值列表和字段名列表一 一对应 如果插入表中的部分字段数据,则字段名列表必填 每个数据值的数据类型、精度和小数位数必须与相应的列匹配 不能为标识列指定值(主键) 如果在设计表的时候就指定了某列不允许为空,则必须插入数据 如果字段具有默认值,可以使用DEFAULT关键字来代替插入的数值
-
INSERT 一次向表中插入多行数据
INSERT INTO 表名 [(字段名列表)] VALUES (值列表1), (值列表2), (值列表n); # 增
INSERT INTO gradeinfo (grade) VALUES (ACCP),(BCSP);
为避免表结构发生变化引发的错误,建议插入数据时写明具体字段名!
-
INSERT 将查询结果插入到新表
INSERT INTO 表名(字段1,字段2 , ……) SELECT 字段1,字段2 , …… FROM 原表; # 事先创建且与插入数据字段相符
CREATE TABLE patient_address (SELECT patientName, address FROM patient ) ; # 无须事先创建
如果新表已存在,将会报错!
3.3 更新数据
-
UPDATE 更新数据记录
UPDATE 表名 SET 字段1=值1, 字段2=值2, …, 字段n=值n [WHERE 条件]; # 更新表数据
UPDATE gradeinfo SET gradeinfo.grade=BCSP WHERE gradeinfo.id=2;
3.4 删除数据
-
DELETE 删除数据记录
DELETE FROM 表名 [WHERE条件]; # 删除表信息
DELETE FROM patient WHERE patientID =1
DELETE条件删除语句中,如果未指定WHERE条件语句,则将删除表中的所有数据
DELETE FROM gradeinfo WHERE gradeinfo.id=1;
-
TRUNCATE 格式化表记录
TRUNCATE TABLE 表名; # 格式化表
TRUNCATE TABLE gradeinfo;
使用 TRUNCATE 语句删除表中记录后,将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比 DELETE 语句快
3.5 比较 DROP、DELETE 与 TRUNCATE 语句
-
执行速度 一般来说,DROP>TRUNCATE>DELETE 使用 DROP、TRUNCATE 语句时,要慎重 如果使用 DELETE 语句删除表中部分数据要带上 WHERE 子句,且要注意表空间要足够大 如果要删除表,使用 DROP 语句 如果要保留表但删除表中所有数据,如果与事务无关可以使用 TRUNCATE 语句 如果与事务有关,则使用 DELETE 语句