mysql对数据操作 事物_Mysql(2.2)数据操作(增删改查)、事务控制

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 ('工程','大连')

10d1128eeccc

该语法一次只能插入一条数据

列名列表和值列表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)//外键值可以为空

10d1128eeccc

批量插入数据

多条语句用逗号间隔

//批量插入数据

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表

10d1128eeccc

copy_dept表

10d1128eeccc

修改数据(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

隐式回滚:客户端强行退出,系统崩溃

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值