ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle数据库学习(7)增删改操作与事务控制

2022-01-21 16:02:26  阅读:170  来源: 互联网

标签:语句 INSERT NAME 数据库 增删 employee Oracle my INTO


先建一个测试表:

Create table my_employee ( id number(3),
first_name varchar2(100),
                            Last_name  varchar2(100),
                            User_id    varchar2(100),
                            Salary     number(5));

 

一:插入操作

方式一:普通插入数据

语法:

INSERT INTO table [(column [, column...])]

VALUES (value [, value...]);

使用这种语法一次只能向表中插入一条数据

 

若按照列的顺序赋值,可以不用写列名

INSERT INTO MY_EMPLOYEE VALUES(1,'AAA','aaa','aaac',10000)

如果不是按列的顺序复制,就一定要写列名

INSERT INTO MY_EMPLOYEE(id,FIRST_NAME,LAST_NAME,SALARY) VALUES (2,'bbbb','BBBB',9000)

 

方式二:从其他表拷贝数据插入

INSERT INTO MY_EMPLOYEE(FIRST_NAME,LAST_NAME,user_id,SALARY) SELECT FIRST_NAME,LAST_NAME,EMPLOYEE_ID,SALARY FROM EMPLOYEES WHERE DEPARTMENT_ID=80;

 

 

二:更新操作

语法:

UPDATE   table
SET   column = value [, column = value, ...]
[WHERE   condition];

 

使用:

UPDATE MY_EMPLOYEE SET FIRST_NAME='lrcc' WHERE id=1;

 

 

三:删除操作

语法:

DELETE FROM   table
[WHERE   condition];

使用示例:

DELETE FROM MY_EMPLOYEE WHERE id=1;

 

 

四:数据库事务

事务的概念:一组逻辑操作单元,使数据从一种状态变换成另一种状态

事务的的特性:

1、原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。

2、一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

3、隔离性(Isolation):一个事务的执行不能被其他事务干扰。

4、持续性(Durability):一个事务一旦提交,它对数据库中数据的改变就应该是永久性的

 

数据库事务由以下部分组成:

  • 一个或多个DML 语句
  • 一个 DDL(Data Definition Language – 数据定义语言) 语句
  • 一个 DCL(Data Control Language – 数据控制语言) 语句

以第一个 DML 语句的执行作为开始

以下面的其中之一作为结束:

  • COMMIT 或 ROLLBACK 语句
  • DDL 语句(自动提交)
  • 用户会话正常结束
  • 系统异常终止

 

1、COMMIT和ROLLBACK

优点

  • 确保数据完整性。
  • 数据改变被提交之前预览。
  • 将逻辑上相关的操作分组

 

2、保留点(SAVEPOINT)

使用 SAVEPOINT 语句在当前事务中创建保存点。
使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。

语法:

UPDATE...
SAVEPOINT update_done;
Savepoint created.
INSERT...
ROLLBACK TO update_done;
Rollback complete.

 

3、事务进程

自动提交在以下情况中执行:

  • DDL 语句。
  • DCL 语句。
  • 不使用 COMMIT 或 ROLLBACK 语句提交或回滚,正常结束会话。

会话异常结束或系统异常会导致自动回滚。

 

4、提交或回滚前的数据状态

  • 改变前的数据状态是可以恢复的
  • 执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正
  • 其他用户不能看到当前用户所做的改变,直到当前用户结束事务。
  • DML语句所涉及到的行被锁定, 其他用户不能操作。

 

5、提交后的数据状态

  • 数据的改变已经被保存到数据库中。
  • 改变前的数据已经丢失。
  • 所有用户可以看到结果。
  • 锁被释放,其他用户可以操作涉及到的数据。
  • 所有保存点被释放。

 

6、回滚后的数据状态

  • 数据改变被取消。
  • 修改前的数据状态被恢复。
  • 锁被释放。

 

 

练习题:

  1. 向my_employee表中插入下列数据

ID

FIRST_NAME

LAST_NAME

USERID

SALARY

1

patel

Ralph

Rpatel

895

2

Dancs

Betty

Bdancs

860

3

Biri

Ben

Bbiri

1100

4

Newman

Chad

Cnewman

750

5

Ropeburn

Audrey

Aropebur

1550

 

INSERT INTO my_employee VALUES(1,'patel','Palph','Rpatel',895);
INSERT INTO my_employee VALUES(2,'Dancs','Betty','Bdancs',860);
INSERT INTO my_employee VALUES(3,'Biri','Ben','Bbiri',1100);
INSERT INTO my_employee VALUES(4,'Newman','Chad','Cnewman',750);
INSERT INTO my_employee VALUES(5,'Ropeburn','Audrey','Aropebur',1550);

 

2、提交事务,锁定了插入操作的数据:

commit;

 

3、 将3号员工的last_name修改为“drelxer”

UPDATE my_employee SET last_name = 'drelxer' WHERE id = 3;

 

4、将所有工资少于900的员工的工资修改为1000

UPDATE my_employee SET salary = 1000 WHERE salary< 900;

 

5、查询修改后的数据:

SELECT * FROM my_employee WHERE salary <= 1000

 

 

7、删除所有数据

DELETE FROM my_employee;

 

 

8、 清空表my_employees

TRUNCATE TABLE my_employee

标签:语句,INSERT,NAME,数据库,增删,employee,Oracle,my,INTO
来源: https://www.cnblogs.com/lrc123/p/15828475.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有