重温Oracle(4)

 

第十一章 Oracle体系结构(DBA)

 

数据库 Database

一系列物理文件(数据文件、控制文件、联机日志等)的集合或与之对应的逻辑结构(表空间,段等)被称为数据库

 

物理存储结构

数据文件、重做日志文件、控制文件

Desc v$logfile

Select member from v$logfile;

v$controlfile

v$datafile

 

逻辑存储结构

表空间、段、区、块

 

数据库实例 Database Instance

Oracle内存结构和后台进程被称为数据库的实例

 

Oracle实时应用集群 RAC,Real Application Clusters

 

数据库服务名 Database Service_Name

 

网络服务名 Net Service Name

 

监听器 Monitor

 

第十二章 DDL数据定义语言

 

创建表

Create table tblName (

 Sid number(10),

 Sname varchar2(20)

) tablespace tt;

说明:tablespace不是必须的。默认不写,则创建在登录用户所在的表空间上。

 

使用子查询创建表

Create table tblName as select * from emp;

Create table tblName as select * from emp where 1=2;  --复制表结构

 

字段操作

Alter table student add age number(5);  --增加字段

Alter table student modify age number(10) ; --修改字段

Alter table student rename column col1 to col2; --修改字段名称

Alter table student drop column age;  --删除字段

 

清空表中数据

Truncate table student;  --截断表清空数据,与”delete from table where 1=1;”不同。

正常情况下删除数据,如果发现删除错了,则可以通过rollback回滚。如果使用了截断表(http://blog.csdn.net/kiqiNie/article/details/8196448),则表示所有的数据不可恢复了。所以数据很快(delete语句要快)

 

删除表

Drop table tblName;

 

重命名表

Rename tbl1 to tbl2;

 

第十三章 DML 数据操作语言

 

Insert语句

Insert into tblName (columns…) values (values…);

insert into dept1(id, name) select deptno,dname from dept; --表间数据拷贝

 

update语句

update tblName set col=value where id=idVal;   --更新ididvalcol列的值为value

update tblName set (cols) = (sub select ) where id=idVal; --更新ididvalcols为子查询的结果,子查询必须返回一条记录。如果子查询返回的是空,则cols字段的值也会更新成NULL.

 

delete语句

delete from tblName;

delete from tblName where id=idVal;

 

merge语句http://blog.csdn.net/launch_225/article/details/7833907

merge的功能是可以根据一张表的数据去更新另一张表。

Merge into tbl1                                    --更新应用到tbl1

Using tbl2                                     --条件表tbl2

On(tbl1.col1 = tbl2.col2)           --关联条件

When matched then                  --匹配的时候执行的语句

    Insert/update/delete statement.

When not matched then           --不匹配的时候执行的语句

    Insert/update/delete statement.

 

第十四章 Constraint约束

 

约束就是指对插入数据的各种限制,例如:人员的姓名不能为空,人的年龄只能在0~150岁之间,约束可以对数据库中的数据进行保护。

约束可以在建表的时候直接声明,也可以为已建好的表添加约束。

 

NOT NULL 非空约束

Create table person(

Pid number,

Name varchar(30) NOT NULL

)

 

PRIMARY KEY 主键约束

不能重复,不能为空。例如身份证号。

Pid number PRIMARY KEY

 

UNIQUE 唯一约束

值不能重复(空值除外),例如电话号码。

Tel varchar(50) UNIQUE

 

CHECK 条件约束

插入的数据必须满足某些条件,例如年龄。

Age number check(age between 0 and 150)

 

Foreign key 外键

引用其他表中的主键,插入的数据必须在其他表中存在。如人所在的部门。

DeptNo number REFERENCES dept(deptno) ON DELETE CASEDE

--建立约束:emp_deptno_fk,与dept中的deptno为主-外键关系

--CONSTRAINT emp_deptno_fk FOREIGN KEY(deptno) REFERENCES dept(deptno)

“ON DELETE CASEDE”—删除主键记录时,同时删除外键的所有记录

“ON DELETE SET NULL”—删除主键记录时,将所有外键的记录的字段值更改为NULL

(http://blog.csdn.net/zb0567/article/details/8071083)

 

Alter table tbl ADD CONSTRAINT emp_eid_pk PRIMARY KEY(eid);--主键

Alter table tbl ADD CONSTRAINT emp_tel_uk UNIQUE(tel);--唯一

Alter table tbl ADD CONSTRAINT emp_age_ck CHECK(age BETWEEN 0 AND 150);--检查

Alter table tbl ADD CONSTRAINT emp_dept_deptno_fk FOREIGN KEY(deptno) REFERENCES dept(deptno) ON DELETE CASCADE;--外键

 

约束操作

Alter table emp drop CONSTRAINT emp_eid_pk; --通过约束名删除

Alter table emp drop unique(tel); --直接删除约束

Alter table emp enable CONSTRAINT emp_dept_deptno_fk; --启用约束

Alter table emp disable CONSTRAINT emp_dept_deptno_fk; --禁用约束

 

第十五章 VIEW 视图

 

视图:是一个封装了各种复杂查询的语句,就称为视图。视图可以屏蔽一些表结构,只将用户需要的一些信息返回给用户,或者将复杂的查询语句以创建为视图,简化用户操作的同时,提升数据库安全性。

 

创建视图

CREATE VIEW viewName(colList) as subSelect

简历一个只包含20部门的雇员信息的视图(雇员的编号、姓名、工资)

Create view empv20 (empno,ename,sal) as select empno,ename,sal from emp where deptno=20;

CREATE OR REPLACE VIEW viewName …  --如果存在同名视图,则替换原有视图

 

更新视图数据

直接更新数据

Update empv20 SET deptno=30 where empno=7369; --更新成功

默认情况下创建的视图,如果更新了,则会自动将此数据从视图中删除,之后会更新原本的数据。

如果这样做的话,肯定存在问题,以为内视图最好不要更新源表数据。

 

可通过以下参数限制视图的更新:

WITH CHECK OPTION保护视图的创建规则

Create or replace view empv20(empno,ename,sal,deptno) as select empno,ename,sal,deptno from emp where deptno=20 WITH CHECK CONSTRAINT empv20_ck;

执行

Update empv20 SET deptno=30 where empno=7369; --视图时按照部门编号建立的,更新失败。

Update empv20 SET ename=’tom’ where empno=7369; --更新成功,

 

WITH READ ONLY只读,不可修改

Create or replace view empv20(empno,ename,sal,deptno) as select empno,ename,sal,deptno from emp where deptno=20 WITH READ ONLY;

现在任意的字段都不可更改,所以现在的视图是只读的。

 

查看视图

 

Select cols from user_view; --查询视图数据

 

----------------------------------------------------------------------------------------------

张文海

你可能感兴趣的:(oracle)