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,deptno) values(&empno,&ename,&sal,&deptno);
输入 empno 的值: 1002
输入 ename 的值: ‘Mary’
输入 sal 的值: 3000
输入 deptno 的值: 20
原值 1: insert into emp(empno,&deptno)
新值 1: insert into emp(empno,deptno) values(1002,’Mary’,20)
sql> /
输入 empno 的值: 1003
输入 ename 的值: ‘Mike’
输入 sal 的值: 2000
输入 deptno 的值: 10
原值 1: insert into emp(empno,deptno) values(1003,’Mike’,2000,10)
\
sql> select empno,&t
2 from emp;
输入 t 的值: sal
原值 1: select empno,&t
新值 1: select empno,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,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> 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 事务处理中执行插入/删除/更新操作