作者: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
--提交 commit
--回退 rollback
--事务的生命周期:以任意的DML语句开始,以提交或回退结束
--提交事务:COMMIT,DDL或DCL,正常退出会话
--回退事务:ROLLBACK,异常退出会话
--提交事务:COMMIT,DDL或DCL,正常退出会话
--回退事务:ROLLBACK,异常退出会话