oracle入坑日記<五>數據表


 

1
 
數據表

1.1、數據表是存放數據字段信息的地方;在Oracle,數據表擁有者單位是用戶,同時數據表屬於表空間。如: 登錄my_user用戶在orcl表空間下創建的表就是 my_user用戶在ocrl表空間下的數據表(有點繞,多用用就了解了

2
 
創建數據表

2.1、創建數據表

create table RYXXB(    -- 創建表名
   RYID number(5) primary key,  -- primary key 設置主鍵
   RYXX varchar(10) not null,   -- not null 不可為空
   RYBH varchar(10) unique,     -- unique 唯一約束
   RYXB char(4) default '' check(RYXB in ('','')), --check條件約束 默認值為'男'
   RYNL number(3) check(RYNL > 1 and RYNL < 101)   --check條件約束(同時滿足多條件)
);
create table RYSFB(    -- 創建表名
   SFID number(5) primary key,  -- primary key 設置主鍵
   RYID number(5) references RYXXB(RYID),   -- references 外鍵約束
   SFSM varchar2(100)
);

2.2、數據類型(這里僅介紹常用數據類型

  2.2.1、number(數字) : number(3) 三位整數(最大值999),number(3,5) 整數部分三位,小數部分五位的小數(最大值999.99999);

  2.2.2、char(定長字符) : char(5) 長度為5的字符,若長度不足5自動以空格填滿;

  2.2.3、varchar2(變長字符):varchar2(5)最大字符長度為5,若長度不足5不會自動空格填滿;

  2.2.4、clob(大文本):儲存較多文字數據,比如,新聞,文章,介紹等;

  2.2.5、blob(其他文件):儲存圖片,音頻,視頻等文件,將文件以二進制方式存儲(好像2G以下文件都能用這個類型存);

  2.2.6、datetimestamp(時間):兩個都是用來儲存時間,且都是可以儲存 年月日 時分秒,但是timestamp的精確度更高;

     date: timestamp:

     數據庫同時執行多條命令時,不到一秒就能執行完畢,如果用date記錄對某條數據操作的先后是做不到的,這種情況使用timestamp就可以看到操作記錄的先后;

  2.2.7、nvarchar2(變長字符):與varchar同為變長字符,二者區別詳見此處

  2.2.8、更多數據類型,作為SQLserver的用戶,表示沒有int 沒有bit 有點不習慣。

  

2.3、約束類似(這里僅介紹常用約束類型

  2.3.1、primary key(主鍵約束):不可為空,一張表有且只有一個主鍵不可重復(可以有復合主鍵)。

  2.3.2、references(外鍵約束):關聯另一張表,兩張表字段相關聯,無法單獨刪除父表被關聯字段數據(僅為普通外鍵,還有級聯外鍵約束、置空外鍵約束 詳見此處 )。

  2.3.3、check(檢查約束):自定義約束條件。

  2.3.4、not null(非空約束):該字段不可為空。

  2.3.5、unique(唯一約束):唯一性約束指表中一個字段或者多個字段聯合起來能夠唯一標識一條記錄的約束。聯合字段中,可以包含空值。

  2.3.6、unique和primary key非常像,都有唯一性,組合性。二者也有區別:(二者區別詳見此處

    2.3.6.1、primary key所有組成主鍵的列都不能包含空值,而unique 如果唯一性約束由多列組成,其中的部分列可以包含空值。

    2.3.6.2、同一列不能即為primary key 又為 unique ,二者只能選其一。

3
 
刪除數據表

 3.1、刪除數據表  drop table [user].[tablename]; --[user]操作其他用戶表是需指定用戶 

4
 
清空表數據

 4.1、清空表數據有兩種方法 delete truncate 

  truncate: truncate table [user].[tablename]; --[user]操作其他用戶表時需指定用戶 

  delete: delete from [user].[tablename]; --[user]操作其他用戶時需指定用戶 

4.2、truncate、delete 區別

  delete: 會產生rollback(回滾事務),如果刪除大數據量的表速度會很慢,同時會占用很多的rollback segments(回滾事務)。

  truncate:是DDL操作,不產生rollback,速度快,truncate 慎重使用一旦清除 數據無法rollback segments(回滾事務)恢復。

<<============================================================================================================================================>>

此日記系列僅做普通開發使用Oracle,並非專業DBA


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM