DML:(数据操作语言)主要实现对数据库中表的数据进行增删改的操作
插入数据(INSERT INTO )
INSERT into TABLE [ ( column [ ,column... ] ) ] VALUES (value [ ,value... ] )
//往dept表中插入一条数据,所有列都给值
INSERT INTO dept
VALUES (10,'质量部','沈阳')
INSERT INTO dept(deptno,dname,loc)
VALUES (20,'人力资源部','沈阳')
//往部门表插入数据,主键采用自增的方式生成
INSERT INTO dept(dname,loc)//不要写自增的列
VALUES ('工程','大连')
该语法一次只能插入一条数据
列名列表和值列表bicultural一一对应(个数 数据类型)
列名列表如果省略,代表操作该表的所有列
字符型和日期型数据必须用单引号括起来
column:列名列表,value:值列表
//往部门表插入数据,地点的值为空
INSERT INTO dept(deptno,dname)
VALUES (35,'实施部')
INSERT INTO dept(deptno,dname,loc )
VALUES (36,'研发部',NULL)
//往emp表中添加数据
INSERT INTO emp
VALUES (8888,'lily','MANAGER','9999','1999-1-1',5200,10003,10)//日期要用单引号
//返回系统时间 只包含年月日 SYSDATE()
INSERT INTO emp
VALUES (8891,'lucy','MANAGER','9999',SYSDATE(),5200,10003,20)
INSERT INTO emp
VALUES(8885,'BOB','CLEPK','7788','1985-03-03',3000,NULL,NULL)//外键值可以为空
批量插入数据
多条语句用逗号间隔
//批量插入数据
INSERT INTO emp(ename,job,mgr,hiredate,deptno)
VALUES('test1','MANAGER','8787',SYSDATE(),40),
('test2','MANAGER','8855',SYSDATE(),41),
('test3','MANAGER','8886',SYSDATE(),42)
//采用子查询的方式插入数据
INSERT INTO copy_dept SELECT * FROM dept
emp表
copy_dept表
修改数据(UPDATE)
UPDATE 表名
SET column = value( [ , column = value ]
[ WHERE ] condition )
update :子句限定要修改的表 ,一次只能更改一个表
set:子句限定要修改的那些列, 多个列用逗号间隔
where:表示限定条件,子句先当要修改那些行 ,如果省略 ,则修改表中的所有行数据
condition:代表条件表达式
//根据部门编号 更改部门名称
UPDATE dept
SET dname = '资源部'
WHERE deptno = 20
//没有限定 全部更改 无where
UPDATE dept
SET loc = '北京'
//更改员工表中的编号为8888的员工薪资和奖金
UPDATE emp
SET sal = 6000,comm = 18000
WHERE empno = 8888
//给20 号部门的所有员工的薪资上调500
UPDATE emp
SET sal = sal + 500
WHERE deptno = 20
删除数据(DELETE)
DELETE FROM 表名
[ WHERE condition ]
WHERE如果省略 则整个表的数据全部删除
有外键约束时 不可以删除 会报错
//删除数据
DELETE FROM copy_dept
DELETE FROM dept
WHERE deptno = 20
截断表
删除一个表的全部数据
TRUNCATE TABLE 表名
TRUNCATE TABLE emp
TRUNCATE与DELETE的区别
TRUNCATE 属于数据定义语言(DDL),在清空表的数据之后,数据不可以回滚
DELETE 属于数据操作语言(DML),清空数据可以回滚
事务处理 只与增删改有关
在与数据库交互的过程中,一组DML操作(增删改)要保证同时成功或者同时失败,达到数据的一致性(例子:转账)
事务处理语言(TPL)
COMMIT:用来提交事务,确认DML操作的结果
ROLLBACK:用来回滚事务,取消DML操作的结果
Mysql数据库默认是自动提交
事务的组成
一组DML操作(可以有SELECT语句)+ 一个TPL语句(COMMIT(提交),ROLLBACK(回滚))/DDL语句/(CREATE DROP ALTER TRUNCATE(删除))DCL语句(REVOKE(撤销) GRANT(提交))
事务的特征(ACID)
原子性:组成一个事务的DML操作,要么全部成功,要么全部失败
一致性:一旦事务完成,不管成功与否,整个系统处于一致性
合理性:一个事务不会被另一个事务被干扰
持久性:事务一旦提交,对数据的该表就是永久性的,不可以回滚
//首先取消自动提交
SET autocommit = 0
DELETE FROM dept
WHERE deptno = 35
UPDATE dept
SET loc ='大连'
WHERE deptno = 10
ROLLBACK;//TPL语句:不会自动提交 commit:自动提交;ROLLBACK:回滚
DELETE FROM dept
WHERE deptno = 36
DROP TABLE sc//DDL语句:默认自动提交
隐式提交:DDL DCL
隐式回滚:客户端强行退出,系统崩溃