數據庫其他對象
索引
臨時表
外部表
分區(qū)表
簇表
視圖
視圖是一個虛擬表,它同真實表包含名稱改抡,列矢炼,行數據,視圖不在數據中存貯數據值阿纤,他的行和列中的數據來自于視圖的查詢語句所使用的表
數據庫只在數據字典存儲定義視圖本身的SQL語句
用戶可以在視圖上進行 insert句灌,update,delete 操作欠拾,通過視圖修改數據胰锌,實際上修改的存儲的數據
視圖可以基于表創(chuàng)建視圖
可以基于視圖和表創(chuàng)建
創(chuàng)建視圖,主要是為了將一個或多個表中經常被使用到的數據結合到一起藐窄,方便用戶使用
create [or replace] view view_name as <select 語句> [whith check option]
whith check option : 主是要對視圖中數據進行操作的時候驗證
實際上资昧,系統(tǒng)在創(chuàng)建視圖的時候,只是將視圖中定義的SQL存入到了數據庫
create or replace view emp_sal_view as select empno,ename,sal from emp where sal>2000;
select * from emp_sal_view;
可更新視圖
可以通過修改視圖中的數據荆忍,修改基本表榛搔,
一個視圖可以同時包含可更新字段和不可更新字段,字段是否可以被更新主要取決于select語句
一個視圖中东揣。通過計算得到的列不可以被修改
create or replace view emp_comm_view (編號践惑,名稱,工資嘶卧, 獎金)
as
select empno,ename, sal+100, comm from emp;
select * from emp_comm_view;
select * from emp;
update emp_comm_view set 獎金= 300 where 編號 = 7369;
update emp_comm_view set 工資= 1200 where 編號 = 7369;--虛擬列不可被修改
select * from user_updatable_columns where table_name= upper('emp_comm_view');--查看列是否可以被修改
在創(chuàng)建有條件的視圖的時候尔觉,應添加with check option 選項, 可以有效的限制對視圖的操作
檢查約束: with check option芥吟;(where 后面條件)
刪除
drop view view_name;
序列
序列是Oracle提供的用于生產一系列唯一的數字的數據庫對象
使用序列可以實現主鍵值增長侦铜,序列也可以在多用戶下并發(fā)使用
為用戶生產不重復的數字
序列不占用實際的存儲空間专甩,只是在數據字典中存儲定義
創(chuàng)建序列必須要有 create sequence 系統(tǒng)權限
create any sequence
create sequence sequence_name
create sequence emp_seq
start with 1000
increment by 10
nomaxvalue
cache 20
select emp_seq.nextval from dual;
select emp_seq.currval from dual;
同義詞
同義詞就是表,索引钉稍,視圖 涤躲,等模式對象的一個別名,不占用實際存儲空間
公有同義詞: 在數據中所使用的用戶都已使用
私有同義詞: 只有自身使用
create public synonym public_dept for dept;
select * from public_dept; --查看
drop public synonym public_dept; --刪除同義詞
臨時表 ;
只有想臨時表中添加數據的時候才會被Oracle分配存儲空間
堆表
:通過create table語句執(zhí)行后,oracle就會分配一個盤區(qū)
l臨時表存儲數據是以實物或會話為基礎的.
事務級別的臨時表
create global temporary table temp_stu(
id number,
name varchar2(30)
)on commit delete rows;
會話級別:
create global temporary table temp_stu(
id number,
name varchar2(30)
)on commit preserve rows;
退出數據會自動清空
外部表:
oracle系統(tǒng)提供的文件系統(tǒng)數據庫.
oracle 可以將一個格式化的文本文件,轉換成虛擬的數據庫表
create directory wuyu_dir as 'd:\db'; 指向數據文件的目錄(創(chuàng)建一個目錄對象)
create table stu(
id number,
name varchar2(20),
gender varchar2(2),
age number
)
organization external(
type oracle_loader
default directory wuyu_dir
access parameters(
fields terminated by ',')
location('wuyu.txt')
);
oracle_loader : 本地加載進程
default directory : 用來指定所使用的目錄對象,該目錄對象指向外部數據文件所在目錄.
location : 指定源數據文件
access parameters : 設置訪問驅動程序數據格式轉換的參數
fields terminated by : 用來指定字段直接的分隔符
分區(qū)表和分區(qū)索引表
分區(qū)表是指將巨型表分成較小的贡未,可獨立管理的部分种樱,分區(qū)后的表和未分區(qū)的表在執(zhí)行DML操作的時候沒有區(qū)別
優(yōu)點:
增強可用性 : 表的某個分區(qū)出現故障。不影響其他分區(qū)的數據使用
維護方便 : 如果表的某個分區(qū)壞了俊卤,只需要修改該分區(qū)
均衡I/o可以將不同的分區(qū)映射到不同磁盤中
改善查詢性能嫩挤,可以僅搜索某個分區(qū),從而體格哦查詢性能
分類
1. 范圍分區(qū)
2. 散列分區(qū)
3. 列表分區(qū)
4. 組合分區(qū)
5. 組合范圍分區(qū)
create table student(
id number primary key,
name varchar2(20),
subject varchar2(10),
score number
)
partition by range(score)
(
partition part1 values less than(60) tablespace hnkj,
partition part2 values less than(80) tablespace hnkj,
partition part3 values less than(maxvalue) tablespace hnkj
)
create table student2(
id number primary key,
name varchar2(20),
subject varchar2(10),
score number
)
partition by hash(id)
(
partition part1 tablespace hnkj,
partition part2 tablespace hnkj,
partition part3 tablespace hnkj
)
create table student3(
id number primary key,
name varchar2(20),
subject varchar2(10),
score number
)
partition by list(subject)
(
partition part1 values ('java','jsp','javascript') tablespace hnkj,
partition part2 values ('C#','ASP.NET') tablespace hnkj
)
查詢指定分區(qū)中的數據
SQL> select * from student partition(part3)
備份和恢復
物理備份 : 對數據庫的物理文件進行復制消恍,分為脫機備份和聯(lián)機備份
RMAN
邏輯備份 : 通過使用Oracle提供的導出工具進行備份
SQL優(yōu)化
- 避免使用“”代替所有列 用 oracle 數據庫先分析岂昭,在編譯執(zhí)行
2.delete 和truncate
truncate 刪除數據的時候,直接將物理空間收回
表被截斷
delete 保留被刪除的空間提供給新數據使用
delete 是逐行刪除狠怨,性能差约啊,可以被事務回滾
truncate 一次性刪除,效率高佣赖,但是不可回退
- 在確保完整性前提下棍苹,盡量多使用commit
- 減少表的查詢次數
- 使用where 代替having
- 使用 <= 代替<
實體關系模型(E-R圖)
實體(tnrity)
現實世界各種事物的抽象
屬性(attribute)
屬性是實體具有的若干特性
聯(lián)系
實體與實體之間的各種聯(lián)系
一對一
一對多
多對多