Oracle第四節課總結


今天學習了創建和管理表以及表的約束。

創建表:

表名 

列名, 數據類型, 數據類型的大小 

   create table demo (name varchar(20) ) 

使用子查詢創建表: 

時候用 AS subquery 選項,將創建表和插入數據結合起來 

指定的列和子查詢中的列要一一對應 

通過列名和默認值定義列 

SQL>create table demo2 

  2 as 

  3 select ename,sal from emp ; 

Default值: 

執行insert操作時,可以爲其指定默認值 

值、表達式和SQL語句都可以作爲默認值 

其他的列名或者是僞列都是非法的 

默認值的類型必須和該列的類型一致 

CREATE  TABLE hire_dates  (idNUMBER(8),hire_date  DATE  DEFAULT SYSDATE); 

數據類型: 

1、  varchar2(size):可變長字符數據      最大長度爲4000 bytes 可做索引的最大長度爲749 

2、  char(size):固定長字符數據      最大長度爲2000bytes 

3、  number(p,s):可變字符數據    數字類型    P有效位,S爲小數位 

4、  date:日期型數據 

5、  long:可變長字符數據,最大可達2G 

6、  clob:字符數據,最大可達到4G 

7、  raw(long,raw):原始的二進制數據 

8、  blob:二進制數據,最大可達到4G 

9、  bfile:存儲外部文件的二進制數據,最大可達到4G 

10、 rowid:行地址    是一個僞列 

 

ALTERTABLE 語句 

使用 ALTER TABLE 語句追加, 修改, 或刪除列的語法. 

追加一個新列,新列是表中的最後一列 

SQL>alter table demo add ( 

     2 sal number 

     3 ); 

表已更改。 

可以修改列的數據類型, 尺寸, 和默認值。對默認值的修改隻影響今後對錶的修改 

SQL>alter table demo modify (sal varchar2(20)); 

表已更改。 

使用 DROP COLUMN 子句刪除不再需要的列. 

SQL>alter table demo drop column sal; 

表已更改。 

 

刪除表: 

數據和結構都被刪除 

所有正在運行的相關事物被提交 

所有相關索引被刪除 

DROPTABLE 語句不能回滾 

SQL>drop table qqq; 

 

改變對象的名稱: 

執行RENAME語句改變表, 視圖, 序列, 或同義詞的名稱 

必須是對象的擁有者 

SQL>rename demo2 to qqq; 

 

清空表: 

TRUNCATETABLE 語句: 

刪除表中所有的數據 

釋放表的存儲空間 

TRUNCATE語句不能回滾 

可以使用 DELETE 語句刪除數據 

SQL>truncate table qqq; 

約束:

約束 

約束是表一級的限制 

如果存在依賴關係,約束可以防止錯誤的刪除數據 

約束的類型: 

NOTNULL 

UNIQUE  

PRIMARYKEY 

FOREIGNKEY 

CHECK 

約束規則: 

用戶可以自定義約束,也可以使用Oracle Server的sys_cn格式命名約束 

約束創建的時機: 

創建表的時候,同時創建約束 

表結構創建完成後 

約束可以定義在列一級,或者是表一級 

通過數據字典查看約束 

 

非空性約束與唯一性約束: 

createtable checkTable(email varchar2(30) not null,constraint chk_emailunique(email)); 

insertinto checkTable values ('[email protected]'); 

會插入一條記錄,如果再插入一條相同的記錄,會報錯,因爲有唯一性約束,當然如果再增加幾個字段,向其它字段中插入信息而不向email中插入任何數據也是會報錯的,因爲有不爲空的約束,如果email有一個默認值就不會出現由於不能爲空而出現的問題了 

 

主鍵約束: 

  1 create table bookType( 

  2 bt_id number(9), 

  3 bt_name varchar2(30), 

  4 constraint bt_id_pk primary key(bt_id) 

  5* ) 

 

外鍵約束: 

  1 create table books( 

  2 bk_id number(9), 

  3 bk_name varchar2(30), 

  4 bt_id number(9), 

  5 constraint bk_id_pk primary key(bk_id), 

  6 constraint bt_id_fk foreign key (bt_id) references bookType(bt_id) ondelete cascade 

  7* ) 

SQL>/ 

不能刪除有外鍵約束的記錄 

 

 

外鍵約束(續) 

FOREIGNKEY: 在子表中,定義了一個表級的約束 

REFERENCES:指定表和父表中的列 

ONDELETE CASCADE: 當刪除父表時,級聯刪除子表記錄 

ONDELETE SET NULL: 將子表的相關依賴記錄的外鍵值置爲null 

SQL>delete from bookType where bt_id=1; 

 

check約束 

定義每一行記錄所必須滿足的條件 

下面的表達式可以使用在check約束中: 

引用CURRVAL, NEXTVAL, LEVEL, 和ROWNUM 

調用SYSDATE, UID, USER, 和USERENV 函數 

另一個表的查詢記錄 

SQL>create table check01( 

  2  salnumber(3,2) 

  3 , 

  4 constraint sal_ck check(sal>0.2) 

  5  );  

發佈了93 篇原創文章 · 獲贊 10 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章