4)DML操作
Posted xuan01
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4)DML操作相关的知识,希望对你有一定的参考价值。
DML操作:
Data Manipulation Language,数据操纵语言;包含insert、update、delete操作;
1、单行插入数据格式:
insert into 表名【字段列表】 values(值列表);
向教师表插入:
insert into teacher values(\'001\',\'李老师\', \'1110000000\'); insert into teacher(teacher_no, teacher_name,teacher_contact) values(\'002\',\'王老师\',\'1110000001\'); insert into teacher(teacher_name,teahcer_no,teacher_contact) values(\'孙老师\',\'003\',\'1110000002\');
向班级表插入:
insert into classes values(null,\'2023自动化1班\',\'自动化\'); insert into classes(class_name,department_name) values(\'2023自动化2班\',\'自动化\'); insert into classes values(3,\'2023自动化3班\',\'自动化\');
向课程表插入:
insert into course values(null,\'c语言\',default,\'暂无\',\'已审核\',\'001\'); 或者 insert into course (course_name,description,status,teacher_no) values(\'c语言\',\'暂无\',\'已审核\',\'001\'); insert into course values(null,\'MySQL\',150,\'暂无\',\'已审核\',\'002\'); insert into course values(nuil,\'c++\',230,\'暂无\',\'已审核\',\'003\');
2、批量插入多行数据格式:
insert into 表名【字段列表】 values(值列表1),(值列表2),..(值列表n);
向学生表批量插入:
insert into student values(\'2023001\',\'张三\',\'2220000000\',1),(\'2023002\',\'李四\',\'2220000001\',1),(\'2023003\',\'王五\',\'2220000002\',3),(\'2023004\',\'马六\',\'2220000003\',2),(\'2023005\',\'田七\',\'2220000004\',2);
3、查询插入多行数据:
insert into 目标表名【字段列表1】 select(字段列表2) from 源表 where 条件表达式;
先创建一个新表:
create table stu1 like student; insert into stu1 select * from student; select * from stu1;
4、update语句:
update 表名 set 字段名1=值1[,字段名2=值2] [where 条件表达式];
新建一个表,做测试:
create table exam ( stu_no int auto_increment primary key, exam_score tinyint unsigned, regular_score tinyint unsigned ); insert into exam values(null,80,85),(null,99,90),(null,65,70),(null,52,null),(null,20,null);
update exam set exam_score=exam_score+5; update exam set exam_score=100 where exam_score>=100; update exam set exam_score=60 where exam_score>=55 and exam_score<60;
update之后,要满足键值约束;
5、删除表数据:
delete from 表名 [where 条件表达式];
条件删除:
delete from exam where exam_score<=50;
清空表:
删除也要满足约束限制;
总结:
对于主表:删除、更新数据可能会违反外键约束,添加数据不会违反外键约束;
对于从表:删除数据不会违反外键约束,添加和更新可能会违反外键约束;
6、truncate语句:
截断表,相当于没有where字句的delete语句;但是不能用于主表,即使没有子表,也不能删除;
格式:
truncate table table_name;
测试:
truncate table student; insert into exam values(null,80,80); truncate table exam; insert into exam values(null,80,80);
对于自增长字段,truncate之后,编号重新从1开始;但是delete数据,编号仍然继续增加;
使用truncate的对于自增长字段的影响:
数据操作语言 - DML
数据操作语言 - DML
本文关键字:数据库、数据操作语言、DML
之前我们已经了解了SQL语言的分类,可以划分为:DDL(数据定义语言)、DML(数据操纵语言)、DQL(数据查询语言)、DCL(数据控制语言)、TPL(事务处理语言)、CCL(指针控制语言),本文将介绍DML。
一、INSERT
INSERT语句用于向数据表中插入数据,我们主要需要注意数据类型的匹配以及插入数据的顺序。
1. 全字段插入
全字段插入是指:根据数据表的表结构,向所有的列中均插入数据,此时可以在INSERT后省略列名,直接使用INSERT INTO语句即可,在插入之前可以先查看一下表结构,或使用DESC命令查看一下表结构。
DESC Student;
当进行全字段插入时,我们需要完全按照定义数据表时预设的字段顺序,来调整插入数据的顺序。数据库在进行插入数据校验时,只能进行数据类型是否匹配的校验。
INSERT INTO Student VALUES(‘001103‘,‘js0001‘,‘王小明‘,‘男‘,‘1981-10-07 00:00:00‘);
2. 指定字段插入
指定字段插入可以只向数据表中的某几列插入数据,其他列会被默认值或NULL值填充,在操作时需要注意未插入数据的列已经设置好了默认值或者允许为空,否则必须向该列插入数据。
由于我们插入的是数据表中的某几列,数据库自身并不能判断我们要向那几列插入数据,所以在表名后一定要指定目标列,并且VALUES中的值的顺序要与列的顺序一致。
INSERT INTO Student(S_no,Class_no,S_name) VALUES(‘001103‘,‘js0001‘,‘王小明‘);
3. 同时插入多条数据
如果想向一个数据表中插入多条数据,直接在VALUES后用逗号隔开。
INSERT INTO
Student(S_no,Class_no,S_name)
VALUES
(‘001103‘,‘js0001‘,‘王小明‘),
(‘001104‘,‘js0002‘,‘张小明‘),
(‘001105‘,‘js0003‘,‘李小明‘);
4. 将查询结果直接插入
如果想要复制一个表的数据到名外一个表,可以使用INSERT INTO SELECT
语句。前提是两个表具有相似的结构,在数据类型上匹配,数据长度上能够兼容,即:查询出的数据到能够放入到目标数据表。
INSERT INTO `目标表`
SELECT * FROM `源数据表`;
INSERT INTO `目标表`(`列名`,...)
SELECT `列名`,... FROM `源数据表`;
二、DELETE
1. 清空数据
在使用DELETE时要尤其注意,在不加任何条件时,会清空数据表中的数据。
DELETE FROM `表名`;
2. DELETE与DROP的区别
之前在讲解DDL时介绍了DROP(传送门地址:数据定义语言 - DDL),在最开始的时候容易混淆,其实很容易理解。DROP删除的是表结构,既然结构都没有了,那数据也就一同被清除了。DELETE只是删除数据,而表结构依然存在。
3. 筛选删除
在执行删除操作时,只能以行为单位(如果要清空某一列,需要使用UPDATE),通过添加WHERE子句来实现,使用规则与查询时相同,可进传送门:数据库单表查询 - 简单筛选查询。
DELETE FROM `表名`
WHERE 筛选条件;
三、UPDATE
1. 全量更新
与DELETE类似,当不添加筛选条件时将会更新整表的数据,可以同时更新多个列,使用逗号隔开,需要用到赋值运算符(=)。
UPDATE `表名` SET `列名` = 值或表达式,`列名` = 值或表达式;
2. 选择更新
通过WHERE子句可以添加筛选条件,对符合条件的数据进行更新。
UPDATE `表名` SET `列名` = 值或表达式,`列名` = 值或表达式
WHERE 筛选条件;
以上是关于4)DML操作的主要内容,如果未能解决你的问题,请参考以下文章