1. 在数据表中用Insert增加记录。
2. 用Update修改数据表中的数据。
3. 用Delete删除表中的数据。4. 了解事务处理过程及其命令。
二、 实验环境
安装了oracle数据库的计算机一台
三、 实验步骤和内容
1.Insert命令
1)用来在数据表中增加记录,格式如下:
INSERT INTO tablename [(column, column, ….)]
VALUES (value, value, ….);
命令中[(column, column, ….)]是可选的。一般情况下,为了编程的方便,最好指定字段列表。该命令每次只能增加一条记录。注意,CHARACTER和DATE必须用
单引号括起来。
例如:INSERT INTO DEPT (DEPTNO,DNAME,LOC)
VALUES (50,’市场部’,’上海’);
在DEPT中增加一个新部门,忽略部门名称,这时字段列表必须指定否则出错,可用如下命令:
INSERT INTO DEPT (DEPTNO, LOC)
VALUES (50,’上海’);
另外,如果部门名称不能确定,可用NULL代替,如下:
INSERT INTO DEPT (DEPTNO,DNAME,LOC)
VALUES (50,NULL,’上海’); 增加DATE类型的数值,常用格式是DD-MON-YY。默认的世纪是20世纪,ORCALE
已克服了Y2K(千年虫)问题。如下:
INSERT INTO EMP (EMPNO,NAM,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
VALUES (7568,’MASON’,’ANALYST’,7566, TO_DATE(‘24/06/2084 9:30’,’DD/MM/YYYY HH:MI’),3000,NULL,20);
2)增加从其他数据表查询出的数据命令格式:
INSERT INTO table [(column, column, ….)]SELECT select-list
FROM table(s); 2.Update命令
在需要修改表中数据时,可使用update命令如下:
UPDATE table[alias]
SET column[,column….] = {expression, subquery}[WHERE condition]; 命令由三部分组成:
① update后跟一个或多个要修改的表,这部分是必不可少的。
② set后跟一个或多个要修改的表列,这也是必不可少的。
③ where后跟查询条件,这是选项;如果WHERE子句忽略,UPDATE命令将修
改数据表中所有记录。
例如:修改EMP表中SCOTT的记录数据,把他调到销售部,并且工资提高10%,
具体命令如下:
UPDATE EMP
SET JOB =’SALESMAN’,HIREDATE = SYSDATE,SAL = SAL*1.1
WHERE ENAME = ‘SCOTT’;
1 record updated.
3.Delete命令
Delete命令用来从表中删除一行或多行记录。命令格式如下:
DELETE FROM table [WHERE condition]; 该命令由两部分组成:
① 关键字delete from 后跟准备要从中删除数据的表名,这是必不可少的。
② 关键字where后跟删除条件,是可选项;如果不用WHERE子句,数据表中的
所有记录将被删除。
例如删除EMP表中部门号是10的记录:
DELETE FROM EMP WHERE DEPTNO = 10;
4.事务(Transaction)
事务是由一串修改数据库的操作组成的。Oracle中有两种事务:DML事务和DDL事务。DML事务是一些DML语句组成的,Oracle把事务作为单个实体或逻辑工作单元来处理;DDL事务只能由一条DDL语句组成。
事务的执行必须是完整的,也就是说事务处理中一部分提交给数据库而其他
部分不提交这是不允许的。对于事务来说,要么事务中所有处理都提交,要么所
有的处理都放弃。
事务是以可执行的DML或DDL命令开始,以下面的情况结束:
① COMMIT/ROLLBACK
② DDL命令(DDL语句是自动提交)③ 一些错误(如死锁)④ 注销(如退出SQL*Plus)⑤ 硬件错误1)、永久性修改
为了使修改变成永久性,这些修改必须提交给数据库。COMMIT命令可以用来使数据库永久性改变。而ROLLBACK可以撤消或放弃修改。在两次提交之间对数据库的修改就是事务。 2)、撤消修改
ROLLBACK可以放弃不提交的修改。ROLLBACK可以恢复上次提交之后修改
过的数据。3)、系统错误
事务被一些严重错误(例如系统错误)的中断时,它将自动回滚。这阻止了由错误造成的对数据不完整的修改,而恢复到最近提交之后的数据表的状态。用这种方式SQL*Plus保护了数据的完整性。自动回滚通常是系统错误造成的,例如断电或RESET。而在输入命令时的错误,例如拼写错误或没有授权的操作,不会造成事务的中断或者自动回滚。这是因为错误是在编译时而不是在运行时检测到的。
4)、用SQL语句控制事务
ⅰ)、COMMIT [WORK];
① 使当前事务永久的修改。
② 清除这个事务中所有的保存点。
③ 结束事务。 ④ 释放事务中的锁操作。
⑤ 关键字WORK是可选的。
一般情况下,应在应用程序中用COMMIT(或ROLLBACK)显式的结束事务。
隐式(自动)结束事务在下列情况发生:
① DDL命令之前。② DDL语句之后。③ 和一个数据库正常断开之后。ⅱ)、SAVEPOINT savepoint_name
① 保存点能把事务分割成更小的部分。
② 保存点允许在任意点阻止工作的进行。 ③ 如果第二个保存点的名字和第一个保存点的名字相同,那么第一个保存点
自动失效。
④ 保存点的最大数默认是5;但可以修改。
ⅲ)、ROLLBACK [WORK] to [SAVEPOINT] savepoint_name
ROLLBACK语句用来撤消工作。
① 关键字WORK是可选的。SAVEPOINT也是可选的。 ② 如果ROLLBACK语句中没有TO SAVEPOINT子句,那么它将结束事务;
回滚这个事务中所有的操作;清除这个事务中所有的保存点;释放这个事务的锁操作。
(二)、实验代码
1. 用Insert在基本表customer中插入数据
SQL>insert into customer values (‘Nicholson’,’CA’,6989.99);
1 row created.
SQL>insert into customer values (‘Martin’,’CA’,2345.45);
1 row created.
SQL>insert into customer values (‘Laursen’,’CA’,34.34);
1 row created.
SQL>insert into customer values (‘Bambi’,’CA’,1234.55);1 row created.
SQL>insert into customer values (‘McGraw’,’NJ’,123.45);1 row created. 2.在表STATE中插入指定的字段
SQL>insert into state (state_name,state_cd)
2values (‘Massachusetttes’,’MA’);
1 row created.
SQL>insert into state (state_name,state_cd)
2values (‘California’, ’CA’);
1 row created.
SQL>insert into state (state_name,state_cd)
2values (‘NewJersey’,’NJ’);
1 created.
SQL>insert into state (state_name,state_cd)2values (‘NewYork’,’NY’);
1 created.
3.修改数据
把state表中NewYork改为Florida,NY改为FD:
UPDATE state SET state_name = ‘Florida’, state_cd = ‘FD’
where state_name = ‘NewYork’ and state_cd = ‘NY’;
4.删除数据
从STATE表删除state_name为Florida和state_cd为FD的记录:
DELETE FROM STATE WHERE state_name = ‘Florida’ AND state_cd = ‘FD’;
四、 结果分析
1. Insert命令可以用来在数据表中增加记录;增加从其他数据表查询出的数据;
2. Update命令用来修改数据;
3. Delete命令用来从表中删除一行或多行记录;
因篇幅问题不能全部显示,请点此查看更多更全内容