设为首页 加入收藏

TOP

Oracle学习笔记9--数据处理(一)
2014-11-23 21:48:53 来源: 作者: 【 】 浏览:27
Tags:Oracle 学习 笔记 9-- 数据处理

前几次笔记学习了,查询的相关操作和创建管理表,本次笔记学习数据处理,包括:向表中插入数据(INSERT)、修改数据(UPDATE)和删除数据(DELETE)。

为了保存emp中原有的数据,我们创建一个新的表,只是原表中部分数据,并在该表的基础上进行相关的数据操作。

SQL> create table emp1
2 as (select empno ,ename , sal ,hiredate from emp) ;

Table created

SQL> desc emp1 ;
Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
EMPNO NUMBER(4) Y
ENAME VARCHAR2(10) Y
SAL NUMBER(7,2) Y
HIREDATE DATE Y

SQL> select * from emp1 ;

EMPNO ENAME SAL HIREDATE
----- ---------- --------- -----------
7369 SMITH 800.00 1980/12/17
7499 ALLEN 1600.00 1981/2/20
7521 WARD 1250.00 1981/2/22
7566 JONES 2975.00 1981/4/2
7654 MARTIN 1250.00 1981/9/28
7698 BLAKE 2850.00 1981/5/1
7782 CLARK 2450.00 1981/6/9
7788 SCOTT 3000.00 1987/4/19
7839 KING 5000.00 1981/11/17
7844 TURNER 1500.00 1981/9/8
7876 ADAMS 1100.00 1987/5/23
7900 JAMES 950.00 1981/12/3
7902 FORD 3000.00 1981/12/3
7934 MILLER 1300.00 1982/1/23

14 rows selected

上面的查询结果,说明创建表emp1成功 。接下来,进行表的相关数据操作。

添加数据

基本语法:

INSERT INTO table_name (column1 , column2, ..., column n) values (value1 ,value2 , ....,value n ) ;

这种语法一次只能插入一条数据。

例:向emp1中插入一条数据empno 为 7000 ,ename为 zhangsan ,sal 为8000,日期为2014-4-17 ;

SQL> insert into emp1(empno , ename , sal , hiredate) values(7000 , 'zhangsan',8000 , sysdate );

1 row inserted

SQL> select * from emp1 where ename ='zhangsan';

EMPNO ENAME SAL HIREDATE
----- ---------- --------- -----------
7000 zhangsan 8000.00 2014/4/17 1

如果要插入的数据,包含了表中所有的列,那么表名后面括号中的列名,可以省略不写,但是values中列名的值的顺序要与表中的列名的顺序一致,即:insert into emp1 values(7000 , 'zhangsan',8000 , sysdate );与上面的执行结果也是一样的。另外,表名后面括号中的列名没有先后的次序,只要values中值得顺序,也列名对应,都是可以的。上面日期使用了系统当前的日期,其实我们可以指定日期,即:insert into emp1(empno , ename , sal , hiredate) values(7000 , 'zhangsan',8000 , to_date('2013-4-17','yyyy-mm-dd') ); 。

注意:字符和日期都应放在单引号中。

例:只为empno ,ename ,和 sal 提供数据。

SQL> insert into emp1 (empno , ename ,sal) values(7001 , 'lisi' , 9000) ;

1 row inserted

SQL> select * from emp1 where ename ='lisi' ;

EMPNO ENAME SAL HIREDATE
----- ---------- --------- -----------
7001 lisi 9000.00

上面只是插入了部分数据,这样也是可以的。但是必须要为主键和not null 列提供数据。要满足约束的条件。

修改数据

基本语法:

UPDATE table

SET column =value [, column= value, ...]

[WHERE condition];

可以一次更新多条数据。使用where子句指定更新的条件,来确定哪些列需要更新,如果不指定where条件,则表中所有的列都更新。

SQL> update emp1 set sal = 8000 where sal = 950 ;

1 row updated

SQL> update emp1 set sal = 8000 ;

14 rows updated

当不指定更新条件的时候,14条数据更新,指定后有1条更新。一般使用更新语句的都是要跟更新条件。

例:将king的工资改为 13000 ;

SQL> update emp1 set sal = 13000 where lower(ename ) = 'king' ;

1 row updated

SQL> select * from emp1 where lower(ename ) = 'king' ;

EMPNO ENAME SAL HIREDATE
----- ---------- --------- -----------
7839 KING 13000.00 1981/11/17

删除数据

基本语法

DELETE FROM table

[WHERE condition];

后跟where条件,则只删除满足条件的语句,不跟where条件,删除全部的数据。

例:删除编号为7839 的雇员。

SQL> delete from emp1 where empno = 7839 ;

1 row deleted

SQL> select * from emp1 where empno = 7839 ;

EMPNO ENAME SAL HIREDATE
----- ---------- --------- -----------

delete from emp1 ; 后面没有指定删除的条件,将删除所有的记录。

上面的插入操作,删除操作,更新操作,也是可以使用子查询的,只不过要基于另一个表。

数据库事务

事务:是对一个或者多个表中数据进行的一组DML操作,作为一个单元来处理的方法。这些DML是通过INSERT 、UPDATE 、DELETE语句进行的。

提交事务:

commit ;提交事务使用commit 提交事务。其作用是结束当前的事务,并把当前事务所执行的全部修改保存到外存的数据库中,当使用rollback时,数据库中已经更改的数据不会再发生变化。

设置保存点:

savepoint savepoint_name ;通过该语句,来设置一个事务回滚的点。可以通过该语句来设置多个保存点。

撤销事务:

撤销事务使用ROLLBACK语句。该语句的作用是撤销当前事务中所作的修改,即使用update ,insert ,和delete 操作的数据,重新回到原来的状态。

ROLLBACK [TO savepoint _name ] ;

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle如何保持一致读? 下一篇Oracleplsql乱码

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: