Oracle数据库之数据处理

来源:互联网 发布:破解windows开机密码 编辑:程序博客网 时间:2024/05/29 17:26

Oracle数据库总结:

Oracle数据库之集合运算
Oracle数据库之数据处理
Oracle数据库之建表和管理表
Oracle数据库之对象视图、索引、序列、同义词

SQL> SQL的类型

SQL> 1. DML(Data Manipulation Language 数据操作语言):insert update delete select
SQL> 2. DDL(Data Definition Language 数据定义语言): create/drop/alter/truncate table
SQL> create/drop view,sequence,index,synonym(同义词)
SQL> 3. DCL(Data Control Langauge 数据控制语言): grant(授权) revoke(撤销权限)
SQL>

SQL> –插入
SQL> insert into emp(empno,ename,sal,deptno)
2 values(1001,’Tom’,3000,10);

SQL> –地址符 &
SQL> insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno);
输入 empno 的值: 1002
输入 ename 的值: ‘Mary’
输入 sal 的值: 3000
输入 deptno 的值: 20
原值 1: insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno)
新值 1: insert into emp(empno,ename,sal,deptno) values(1002,’Mary’,3000,20)

SQL> /
输入 empno 的值: 1003
输入 ename 的值: ‘Mike’
输入 sal 的值: 2000
输入 deptno 的值: 10
原值 1: insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno)
新值 1: insert into emp(empno,ename,sal,deptno) values(1003,’Mike’,2000,10)

\

SQL> select empno,ename,&t
2 from emp;
输入 t 的值: sal
原值 1: select empno,ename,&t
新值 1: select empno,ename,sal

 EMPNO ENAME             SAL                                                

  7369 SMITH             800                                                  7499 ALLEN            1600                                                  7521 WARD             1250                                                  7566 JONES            2975                                                  7654 MARTIN           1250                                                  7698 BLAKE            2850                                                  7782 CLARK            2450                                                  7788 SCOTT            3000                                                  7839 KING             5000                                                  7844 TURNER           1500                                                  7876 ADAMS            1100                                                 EMPNO ENAME             SAL                                                

  7900 JAMES             950                                                  7902 FORD             3000                                                  7934 MILLER           1300                                                  1001 Tom              3000                                                  1002 Mary             3000                                                  1003 Mike             2000                                                

SQL> /
输入 t 的值: job
原值 1: select empno,ename,&t
新值 1: select empno,ename,job

  EMPNO ENAME      JOB                                                       ---------- ---------- ---------                                                       7369 SMITH      CLERK                                                           7499 ALLEN      SALESMAN                                                        7521 WARD       SALESMAN                                                        7566 JONES      MANAGER                                                         7654 MARTIN     SALESMAN                                                        7698 BLAKE      MANAGER                                                         7782 CLARK      MANAGER                                                         7788 SCOTT      ANALYST                                                         7839 KING       PRESIDENT                                                       7844 TURNER     SALESMAN                                                        7876 ADAMS      CLERK                                                          EMPNO ENAME      JOB                                                       ---------- ---------- ---------                                                       7900 JAMES      CLERK                                                           7902 FORD       ANALYST                                                         7934 MILLER     CLERK                                                           1001 Tom                                                                        1002 Mary                                                                       1003 Mike                                                                 

SQL> select * from &t;
输入 t 的值: dept
原值 1: select * from &t
新值 1: select * from dept

  DEPTNO DNAME          LOC                                                   ---------- -------------- -------------                                                 10 ACCOUNTING     NEW YORK                                                      20 RESEARCH       DALLAS                                                        30 SALES          CHICAGO                                                       40 OPERATIONS     BOSTON                                                

SQL> –批处理
SQL> create table emp10 as select * from emp where 1=2;

表已创建。

SQL> select * from emp10;

SQL> desc emp10

 名称                                      是否为空? 类型 ----------------------------------------- -------- ---------------------------- EMPNO                                              NUMBER(4) ENAME                                              VARCHAR2(10) JOB                                                VARCHAR2(9) MGR                                                NUMBER(4) HIREDATE                                           DATE SAL                                                NUMBER(7,2) COMM                                               NUMBER(7,2) DEPTNO                                             NUMBER(2)

SQL> –一次性将emp所有10号部门的员工插入到emp10中
SQL> insert into emp10
2 select * from emp where deptno=10;

已创建 3 行。

SQL> select * from emp10;

  EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM ---------- ---------- --------- ---------- -------------- ---------- ----------     DEPTNO                                                                      ----------                                                                            7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10                                                                            7839 KING       PRESIDENT            17-11月-81           5000                    10                                                                            7934 MILLER     CLERK           7782 23-1月 -82           1300                    10                                                                      

SQL> 海量插入数据:
SQL> 1. 数据泵
SQL> 2. SQL*Loader
SQL> 3. 外部表

delete和truncate的区别:

SQL> 1. delete逐条删除,truncate先摧毁表 再重建
SQL> 2. ** delete是DML(可以回滚) truncate是DDL(不可以回滚)
SQL> 3. delete会产生碎片 truncate不会
SQL> 4. delete不会释放空间 truncate会
SQL> 5. delete可以闪回(flashback) truncate不可以

SQL> select count(*) from testdelete;

COUNT(*)                                                                      ----------                                                                            5000       

测试delete和truncate的效率

SQL> set timing on
SQL> delete from testdelete;
已用时间: 00: 00: 00.08

SQL> set timing off

SQL> select count(*) from testdelete;

  COUNT(*)                                                                      ----------                                                                            5000        

SQL> set timing on
SQL> truncate table testdelete;
已用时间: 00: 00: 04.52

SQL> set timing off

SQL> Oracle中事务的标志

SQL> 1. 起始标志: 事务中第一条DML语句
SQL> 2. 结束标志:提交 显式 commit
SQL> 隐式 正常退出exit,DDL,DCL
SQL> 回滚 显式 rollback
SQL> 隐式 非正常退出,掉电,宕机
SQL>

SQL> create table sihaitest
2 (tid number, tname varchar2(20));

表已创建。

SQL> insert into sihaitestvalues(1,’Tom’);

已创建 1 行。

SQL> insert into sihaitestvalues(2,’Mary’);

已创建 1 行。

SQL> –定义保存点
SQL> savepoint a;

保存点已创建。

SQL> select * from sihaitest;

     TID TNAME                                                                ---------- --------------------                                                          1 Tom                                                                           2 Mary             

已选择 2 行。

SQL> insert into sihaitestvalues(3,’sihai’);

已创建 1 行。

SQL> select * from sihaitest;

       TID TNAME                                                                ---------- --------------------                                                          1 Tom                                                                           2 Mary                                                                          3 sihai                                                                 已选择 3 行。

SQL> rollback to savepoint a;

回退已完成。

SQL> select * from sihaitest;

    TID TNAME                                                                ---------- --------------------                                                          1 Tom                                                                           2 Mary                                                                 

SQL> commit;

提交完成。

//oracle中有三种隔离级别。
//将事务设置为只读级别时,只能读取。

SQL> set transaction read only;

事务处理集。

SQL> select * from sihaitest;

       TID TNAME                                                                ---------- --------------------                                                          1 Tom                                                                           2 Mary                                                                 已选择 2 行。

SQL> insert into sihaitestvalues(3,’sihai’);
insert into sihaitestvalues(3,’sihai’)
*
第 1 行出现错误:
ORA-01456: 不能在 READ ONLY 事务处理中执行插入/删除/更新操作

0 0
原创粉丝点击