【Oracle】表、檢視、序列、索引
阿新 • • 發佈:2020-09-08
表(資料型別、約束)、修改表結構
表的建立:create table 表名(欄位名 資料型別 [約束]); 表的刪除:drop table 表名; oracle表包括: 表名、欄位、資料型別、[約束] 其中: (1)資料型別 ①數字 number 預設長度為38,小數長度為0 number(n) 最大長度為n number(n,m) 最大長度為n,其中小數部分長度為m integer 相當於number(38) ②字串 char(n) 字串長度固定為n,不足的用空白字元補充 varchar2(n) 字串最大長度為n,長度為填入的字串長度 注:char的資料管理效率高,但空白字元浪費空間,varchar2節省空間 例:名字 varchar2 手機號 char(11) (因為不作運算和比較) 郵箱 varchar2 ③日期 date 精確到秒 例:insert into 表(日期屬性) values(to_date(‘1999-8-9’, ‘yyyy-mm-dd’)); (2)約束 ①主鍵約束 primary key (非空、唯一) ②唯一約束 unique (表明列值不重複,例如手機號) ③非空約束 not null (表明列值不為空) ④檢查約束 check(約束語法) 例如: --- phone_num char(11) check(length(phone_num) = 11) --- email varchar2(100) check(email like ‘%@%’) --- sex char(2) check(sex in(‘男’, ‘女’)) ⑥外來鍵約束(forienkey) references 其他表名(欄位名) 例如: --- stu_class char(20) references classes(class_id), (3)修改表結構: ①編輯表的欄位: 語法:ALTER TABLE 表名 MODIFY(列名,資料型別); eg1a:alter table skate_test modify (author number(10,0) ) 在修改列的長度時候,只能編輯比現有欄位實際存的長度還要大 eg2:alter table skate_test modify (author varchar2(10) ) 在修改列的資料型別的時候,所修改的列必須為空 ②增加一個列: 語法: ALTER TABLE 表名 ADD(列名,資料型別); eg1:ALTER TABLE skate_test ADD(author NUMBER(38,0) not null); ③改列名: 語法:ALTER TABLE 表名 RENAME COLUMN 當前列名 TO 新列名; eg1:ALTER TABLE skate_test RENAME COLUMN author TO authorer_new ④刪除一個列: 語法:ALTER TABLE 表名 DROP COLUMN 列名; eg1:alter table skate_test drop column author ⑤改表名: 語法:ALTER TABLE 當前表名 RENAME TO 新表名; eg1:alter table skate_test rename to test_sakte ⑥給表加註釋: comment column on 表名.列名 is '註釋內容'; //修改表的列的註釋 COMMENT ON TABLE MOVO_NEW.TEST_SAKTE IS '註釋內容'; //修改表的註釋
檢視、序列、索引
刪除:drop view/sequence/index 檢視名/序列名/索引 ① 檢視:將查詢結果作為檢視,供查詢使用,虛擬表 建立檢視:create view 檢視名 as select語句; 檢視檢視:select 列名 from 檢視名; 優點:①簡化SQL語句 ②安全性,可以實現對開發人員遮蔽原表名和欄位名 注意:檢視不會提高查詢效率,本質是儲存了select語句,基本不佔用硬碟空間 ② 序列:oracle提供的工具,產生一系列連續且不重複的值; 建立序列:create sequence 序列名 [start with 數字] // 不寫start,預設從1開始; 獲取序列值:序列名.nextval 例如: create sequence seq_keyValue start whith 100001; … insert into employee(id, name) values(seq_keyValue.nextval, ‘xyz’); ③ 索引: 建立索引:create index 索引名 on 表名(欄位名); 使用序列:不需要手動使用,預設會使用索引的欄位條件查詢,此時的資料會自動使用索引查詢資料 特點: ①本身會佔用磁碟空間 ②對於增、刪、改,會有維護,降低DML效率 ⑤主鍵(primary key)和唯一(unique) 資料庫會自動新增索引