DML语句和事务

作者:gqk:


DML:可以在下列条件下执行:

  • 向表中插入数据
  • 修改现在的数据
  • 删除现在的数据

使用insert语句可以向表中添加数据:

 --插入数据 insert into 表名 [(列1,列2,……)] values (值1,值2,……);
--省略列列表,默认就是表中的所有列
--列和值必须要个数,顺序,类型相同

--增加一个新部门
INSERT INTO departments (department_id,department_name,manager_id,location_id)
VALUES (120,'NEC',206,1700);
INSERT INTO departments VALUES (120,'NEC',206,1700);
INSERT INTO departments (department_id,department_name) VALUES (120,'NEC');
INSERT INTO departments VALUES (120,'NEC',NULL,NULL);

--把查询结果保存为表

CREATE TABLE new_emp
AS
SELECT employee_id,last_name,salary
FROM   employees;

CREATE TABLE new_dept
AS
SELECT * FROM departments WHERE 1=0;


--插入多行 insert into 表名 [(列1,列2,……)] 子查询;

INSERT INTO new_dept SELECT * FROM departments;

--更新数据 update 表名 set 列1=值,列2=值,……[where 子句]  

--修改100员工的姓名为张三

UPDATE new_emp SET first_name='三',last_name='张' WHERE employee_id=100;

--修改60号部门员工的工资上浮50元

UPDATE new_emp SET salary=salary+50 WHERE department_id=60;

--修改103号员工的工资和100号员工相同

UPDATE new_emp SET salary=(SELECT salary FROM new_emp WHERE employee_id=100)
WHERE  employee_id=103;

--删除数据 delete from 表名 [where 子句]

--删除103员工

 DELETE FROM new_emp
WHERE  employee_id = 103;   

--删除部门名称为IT的部门的员工

DELETE FROM new_emp
WHERE  department_id = (SELECT department_id
                        FROM   departments
                        WHERE  department_name = 'IT');

 -事务的ACID特性
--原子性:任何事务都是一个整体,不可分割,要么一起成功执行,要么一起失败回退
--一致性:必须从一个正确的状态直接切换到另一个正确的状态
--隔离性:一个会话看不到另一个会话未提交的事务操作
--持久性:提交事务以后,事务操作会被持久化到数据库中,不可回退,别的会话可以看到事务操作的结果 

--TCL事务控制语言
--提交 commit
--回退 rollback
--事务的生命周期:以任意的DML语句开始,以提交或回退结束
--提交事务:COMMIT,DDL或DCL,正常退出会话
--回退事务:ROLLBACK,异常退出会话
 

  

  

  

  

  

  

 

猜你喜欢

转载自www.cnblogs.com/520gqk/p/9851818.html
今日推荐