1. 程式人生 > >視圖序列索引

視圖序列索引

而已 表數 序列 導致 訪問 子查詢 ble nbsp 當前

視圖名字一般是以“V_”開頭

視圖在SQL語句中體現的角色與表相同,但是視圖並不是一張真實存在的表,而只是對應一個 select語句的查詢結果集,並將其當做表看待而已,
使用視圖的目的就是簡化sql語句的復雜度,重用子查詢,限制數據訪問

視圖對應的子查詢中的字段若含有函數或者表達式,那麽該字段必須指定別名。
當師徒對應的子查詢中的字段使用了別名,那麽視圖中該字段就用別名來命名


create view v_emp_10
as
select empno,ename,sal,deptno from emp where deptno=10
select * from v_emp_10
修改視圖
由於視圖僅對應一個select語句,所以修改視圖就是替換該select語句而已
create or replace view v_emp_10 as
select empno id ,ename,sal,deptno from emp where deptno=10


視圖分為簡單視圖與復雜視圖
簡單視圖:對應的子查詢中不含有關聯查詢,查詢的字段不包含函數,表達式,沒有分組,沒有去重。反之則則是復雜視圖。

對視圖的DML操作就是對基於表的操作,那麽操作不當可能對基表數據進行數據汙染
插入和更新有風險
刪除不會對基表產生數據汙染


為視圖添加檢查選項,可以保證對視圖的DML操作後視圖對其可見,否則不允許進行該DML操作,這樣就避免了對基表進行數據汙染。
with check option

為視圖添加只讀選項,那麽該視圖不允許進行DML操作
with read only

查詢數據庫視圖的對象名
select object_name from user_objects
where object_type=‘view‘

select text,view_name from user_views


刪除視圖本身不會影響基表數據
但是刪除視圖數據會對應將基表數據刪除

序列 也是數據庫對象之一
作用是生成一系列數字
序列常用與為某張表的主鍵字段提供值使用
create sequence seq_emp_id
start with 1
increment by 1

序列支持兩個偽列
nextval:獲取序列下一個值
若是新創建的序列,那麽第一次調用返回的是 satart with指定的值,
以後每次調用都會得到當前序列值加上步長後的數字
nextval會導致序列發生步進,且序列不能回退

currval:獲取序列當前值,即:最後一次調用nextval後得到的值,currval不會導致步進。
但是新創建的序列至少調用一次nextval後才可以使用currval

索引
索引是數據庫對象之一
索引是為了提高查詢效率

索引的統計與應用是數據庫自動完成的,只要數據庫認為可以使用某個已創建的索引時就會自動應用。


create index idx_emp_ename on emp(ename)


約束

非空約束、 not null

唯一性約束可以保證表中該字段的值
任何一條記錄都不可以重復,null除外 unique
constraint emp_email_uk unique(email)


主鍵約束 primary key
create table employees1(
eid number(6) primary key,
name varchar2(30),
email varchar2(50),
salary number(7,2),
hiredate date
);

關聯不一定需要外鍵約束(了解)

檢查約束

check()
alter table employees1
add constraint employees1_salary_check check(salary>2000);

視圖序列索引