一、简介
用于数据的增删改
DML执行完成没有直接提示
DML执行完成时需要配合commit(提交)同时使用,将数据持久化
DML可以使用rollback(回滚)将没有提交的sql语句回滚,提交之后就不可以回滚了
二、分类
(1)insert数据插入
语法:
insert into 表名[(字段名.可以省略)]
values(值(必须和字段一一对应))
插入数据时,需要按照约束条件去插入,一旦违反了约束会报出相应的错误
语法:INSERT INTO 表名(字段1,字段2...) VALUES(值1,值2,...)
--1.复制一个dept表[复制的表没有主键]
CREATE TABLE deptNew
AS
SELECT * FROM dept;
SELECT * FROM deptNew;
--插入全部数据
INSERT INTO deptNew VALUES(66,'后勤部','高新园区');
--一次插入多个值
--注意:每句结束后必须有分号
INSERT INTO deptNew(deptno,dname) VALUES(67,'游戏部');
INSERT INTO deptNew(deptno,dname) VALUES(68,'技术部');
--练习题:向员工表emp中插入一条数据,员工编号8988 姓名xiaowang,工资8000,奖金300
--日期2022-6-1,领导编号7698,部门30号
INSERT INTO emp(empno,ename,sal,comm,hiredate,mgr,deptno)
values(8988,'xiaowang',8000,300,to_date('2022-6-1','yyyy-mm-dd'),7698,30);
SELECT * FROM emp;
(2)update修改数据
语法:UPDATE 表名 SET 字段1 = 值1,字段2 = 值2....
WHERE 条件
--修改员工表中的员工工资为3000,king
SELECT * FROM emp;
UPDATE emp SET sal = 3000 WHERE ename = 'KING';
--将SMITH的工资设置为与20部门最高的工资一样
UPDATE emp SET sal = (SELECT MAX(sal) FROM emp WHERE deptno = 20)
WHERE ename = 'SMITH';
--将所有人的工资都涨1000
UPDATE emp SET sal = sal + 1000;
--将xiaowang的职位设为与SMITH一样
UPDATE emp SET job = (SELECT job FROM emp WHERE ename = 'SMITH')
WHERE ename = 'xiaowang';
注意:不写where,把表中数据全部修改
(3)delete删除数据
语法:delete [from] 表名 where 条件
注意:如果省略where就是删除全部数据
--删除表中的数据
--删除deptNew表中的所有数据
DELETE FROM deptNew;
SELECT * FROM deptNew;
--删除指定条件的数据
DELETE FROM deptNew WHERE deptno = 67;
--删除表
DROP TABLE deptNew;