程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> [獨孤九劍]Oracle知識點梳理(五)數據庫常用對象之Table、View,oracletable

[獨孤九劍]Oracle知識點梳理(五)數據庫常用對象之Table、View,oracletable

編輯:Oracle教程

[獨孤九劍]Oracle知識點梳理(五)數據庫常用對象之Table、View,oracletable


本系列鏈接導航:

[獨孤九劍]Oracle知識點梳理(一)表空間、用戶

[獨孤九劍]Oracle知識點梳理(二)數據庫的連接

[獨孤九劍]Oracle知識點梳理(三)導入、導出

[獨孤九劍]Oracle知識點梳理(四)SQL語句之DML和DDL

[獨孤九劍]Oracle知識點梳理(五)數據庫常用對象之Table、View

[獨孤九劍]Oracle知識點梳理(六)數據庫常用對象之Procedure、function、Sequence

[獨孤九劍]Oracle知識點梳理(七)數據庫常用對象之Cursor

[獨孤九劍]Oracle知識點梳理(八)常見Exception 

[獨孤九劍]Oracle知識點梳理(九)數據庫常用對象之package

[獨孤九劍]Oracle知識點梳理(十)%type與%rowtype及常用函數

5、數據庫對象

  Oracle的常用字段類型有:

  • varchar2(128) 用於存儲字符,
  • char(4)固定長度的字符串,不設置長度默認值為1,
  • number(p,s)數字型p是位數總長度,s是小樹的長度,可存儲負數,最長38位,不夠位時會四捨五入
  • date 日期和時間類型
  • lob超長字符,最大可達4G
  • clob 超長文本字符串
  • blob超長二進制字符串
  • bfile超長二進制字符串,保存在數據庫外的文件裡是只讀的

5.1、table的操作

5.1.1、創建表時可以給字段加上約束條件

  • 默認值,如date類型的 設置default sysdate,這樣每次插入、修改時,不用程序操作這個字段,都能得到動作時間
  • 例如: 非空 NOT NULL
  • 不允許重復 UNIQUE
  • 關鍵字/主鍵 PRIMARY KEY
  • 按條件檢查 CHECK (條件)
  • 外鍵 REFERENCES 表名(字段名)

5.1.2、創建表:

 1 create table person
 2 (
 3   ID number primary key,
 4   name varchar2(32),
 5   gender char default 1
 6 )
 7 tablespace tablespaceName; --設置表空間,不加就默認為當前用戶所在表空間
 8 
 9 comment on table person is '人員表'; --添加備注
10 comment on column person.ID is '編號';
11 comment on column person.name is '姓名';
12 comment on column person.gender is '性別';

5.1.3、修改表

1 rename person to people; --修改表名
2 alter table person rename column name to xingming; --修改列名
3 alter table person add phonenumber varchar2(11);--添加列
4 alter table person add birthday date default sysdate not null; --添加列,設置默認值,不可為空
5 alter table person drop column phonenumber; --刪除列
6 alter table person modify name varchar2(64); --修改列長度
7 alter table person modify gender char(2); --修改列精度
8 alter table person modify gender varchar2(2); --修改列的數據類型
9 alter table person modify gender default 2;--修改列的默認值

5.1.4、約束操作

  • primary key
alter table person add constraint pk_person_id parmary key(id);--將id列設置為主鍵
  • foregin key
alter table person add constraint fk_person_gender foreign key(gender); --將gender列設置為外鍵
  • check
alter table person add constraint ck_person_gender check (gender in (1,2));--檢查gender列的值必須在1、2中
  • not null
alter table person modify name constraint not_null_person_name not null;--name列不能為空
  • unique
alter table person add constraint uq_emp_name unique(name); --設置name列唯一約束
  • default
alter table person modify birthday date default sysdate; --設置birthday列的默認值
  • 約束的控制
1 --禁用約束
2 alter table person disable constraint uq_person_name;--禁用uq_person_name這個約束
3 --啟用約束
4 alter table person enable constraint un_person_name;
5 --延遲約束
6 alter table person drop constraint fk_person_gender;
7 alter table person add constraint fk_person_gender foreign key(gender)
     reference genderInfo(genderNo) deferrable initially deferred;

5.1.5、清除、刪除表

1 truncate table person where id>10; --清除表person中的數據,不可恢復
2 delete table person where id>10; --刪除表person中的數據,可恢復
3 drop table person; --刪除表

5.2、View的操作

  這裡泛指普通視圖view,Oracle還包含一種叫物化視圖(materialized view)的視圖。這裡暫不涉及。
  視圖分為簡單視圖( 基於單個基表,且不包含函數和數據分組操作 ) 和復雜視圖( 基於多個基表或視圖);簡單視圖可以通過視圖修改數據. 這些修改包括插入數據. 更新數據和刪除數據. 但是對於復雜視圖來說, 通過視圖修改數據必須滿足一定的規則.

  在視圖定義中沒有設定READ ONLY 的前提下, 如果視圖包含了下面的內容, 那麼不能通過視圖刪除表中的數據:

  [關於通過視圖修改數據的操作這裡不做介紹]

5.2.1、創建view

1 create or replace view v_person --創建或修改視圖
2 [columnName1,columnName2]    --設置列名,也可在select中設置別名
3 as    -- 注1
4 select a.f1,b.f2 from table1 a,table2 b where a.f0=b.f0;

注1:關於Oracl的is和as,

  在存儲過程(PROCEDURE)和函數(FUNCTION)中沒有區別,
  在視圖(VIEW)中只能用AS不能用IS,
  在游標(CURSOR)中只能用IS不能用AS。

5.2.2、union 和union all

  使用union關鍵字進行合並查詢的時候,數據庫引擎會自動過濾掉結果集中的重復記錄。
  使用union all關鍵字進行合並查詢的時候,數據庫引擎就不會過濾結果集中的重復數據,因此在執行效率上將union all比union要高上很多。

5.2.3、刪除視圖

drop view v_person;

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved