MySQL数据库——DML语句之增删改
写在前面
-
添加、修改、删除数据时,都有可能存在不成功的情况 可能是由于约束造成的
一、添加数据
1.1 一条一条的添加数据
1、没有指明添加字段
INSERT INTO emp01 VALUES (1,Tom,200-12-21,3400); # 注意:一定要按照声明的字段的先后顺序添加
2、指明要添加的字段(推荐)
INSERT INTO emp01(id,hire_date,salary,`name`) VALUES(2,2022-12-2,3400,Terry);
-
说明:没有进行赋值的 hire_date 的值为null
INSERT INTO emp01(id,salary,`name`) VALUES(2,3400,Jerry);
3、同时插入多条记录
INSERT INTO emp01(id,salary,`name`) VALUES(4,5000,Jim), (5,3400,Jery);
1.2 将查询结果插入到表中
-
查询的字段一定要与添加到表的字段一一对应
INSERT INTO emp01(id,NAME,salary,hire_date) # 查询语句 SELECT employee_id,last_name,salary,hire_date FROM employees WHERE department_id IN (70,60);
-
说明:仅针对上述情况,emp01表中要添加数据的字段的长度不能低于employees表中查询的字段的长度。若不满足,则有添加不成功的风险
二、删除数据
-
语法:delete from…where
DELETE FROM emp01 WHERE id = 1;
-
DML操作默认情况下,执行完以后都会自动提交数据 若希望执行完以后不自动提交数据,则需要使用 set autocommit = false’
三、修改数据
-
语法:update…set…where 可以批量修改数据
UPDATE emp01 SET hire_date = CURDATE() WHERE id = 2;
-
同时修改一条数据的多个字段
UPDATE emp01 SET hire_date = CURDATE(),salary = 6000 WHERE id = 1;
四、Mysql8.0新特性:计算列
CREATE TABLE IF NOT EXISTS test1( a INT, b INT, c INT GENERATED ALWAYS AS (a+b) VIRTUAL # 字段c为计算列 ); INSERT INTO test1(a,b) VALUES(10,20); SELECT * FROM test1; UPDATE test1 SET a = 100; SELECT * FROM test1;
参考:尚硅谷-宋红康老师的视频及课件。