數(shù)據(jù)庫DDL語句書寫規(guī)范
|
數(shù)據(jù)庫DDL語句書寫規(guī)范 1.SQL語句編寫說明 編寫SQL語句應(yīng)遵循統(tǒng)一的規(guī)范,包括大小寫、空格、換行、縮進等等,只有完全一樣的SQL才能在數(shù)據(jù)庫中共享,從而減少硬解析。 字段類型、長度:根據(jù)數(shù)據(jù)情況定義合適的字段數(shù)據(jù)類型及長度。 對于無法確認字段長度的情況,采用變長的數(shù)據(jù)類型,比如使用varchar2代替char。char類型為固定長度,對于長度不足的數(shù)據(jù)會用空格補齊,這種情況下會造成空間浪費。對于日期時間數(shù)據(jù),使用date數(shù)據(jù)類型,避免使用number、varchar2等數(shù)據(jù)類型存儲轉(zhuǎn)換后的日期,因為數(shù)據(jù)庫優(yōu)化器在分析該字段時無法知道這是日期、時間,按數(shù)字、字符類型分析出的結(jié)果可能與實際情況有較大偏差,從而造成執(zhí)行計劃選擇不正確,影響性能。避免不必要的數(shù)據(jù)類型變換,比如字符類型的字段也可以用來存儲數(shù)字類型數(shù)據(jù),但數(shù)據(jù)庫要做數(shù)據(jù)類型轉(zhuǎn)換,因而增加了數(shù)據(jù)庫負擔。 分區(qū)表:對于較大的表應(yīng)考慮使用分區(qū)。 2.新增數(shù)據(jù)庫對象2.1創(chuàng)建數(shù)據(jù)表 -- Create table create table MUB2C.PUBSALE_INFO
注意點: ①創(chuàng)建表時,應(yīng)在表名前加上schema,表名和字段長度都不能超過30個字符。②number類型默認情況下,精度為38位,取值范圍1-38之間。 ③應(yīng)為新建表指定數(shù)據(jù)表空間,生產(chǎn)庫上數(shù)據(jù)表空間一般為:SCHEMA_DAT。schema:模式是一個數(shù)據(jù)庫對象(如表、約束、索引、視圖、序列等)的集合。 -- Add comments COMMENT ON TABLE MUB2C.PUBSALE_INFO
注意點:
注意點:
-- Create/Recreate primary, unique and foreign key constraints alter table MUB2C.PUBSALE_INFO 注意點: ①建表語句和建主鍵約束/唯一性約束語句要分開寫,主鍵約束/唯一性約束一定不要寫在建表中語句中。 ②在創(chuàng)建主鍵約束/唯一性約束時,Oracle會自動為所使用的字段創(chuàng)建一個索引,因此無需再為該字段創(chuàng)建索引。 ③應(yīng)為新建約束指定索引表空間,生產(chǎn)庫上索引表空間一般為:SCHEMA_IDX。 ④為便于查找和區(qū)分,主鍵約束名稱命名:PK_+主鍵約束名稱,唯一性約束名稱命名:UK_+唯一性約束名稱,約束名稱長度不能超過30個字符。 ⑤表名前一定要加上schema。 alter table MUB2C.PUBSALE_INFO add constraint FK_PUBSALE_INFO_REF_PRODUCT foreign key (PUB_ID) references MUB2C.PUBSALE_PRODUCT (ID); 注意點: ①一般的外鍵約束會使用兩個表進行關(guān)聯(lián)(也存在同一個表自連接的情況)。外鍵是指“當前表”(即外鍵表)引用“另外一個表”(即被引用表)的某個列或某幾個列,而“另外一個表”中被引用的列必須具有主鍵約束或者唯一性約束。 ②外鍵約束名稱命名:FK_…_REF_…,約束名稱長度不能超過30個字符。 ③外鍵表和被引用表的表名前一定要加上schema。 2.3創(chuàng)建索引 -- Create/Recreate indexes create index MUB2C.IDX_PNR_INFO on MUB2C.PNR_INFO (PNR_NAME, PNR_CODE)tablespace MUB2C_IDX; 注意點: ①根據(jù)查詢條件,選擇選擇性好的字段建立索引,對于多個字段的聯(lián)合索引,將選擇性好的字段放在前面。避免同一字段出現(xiàn)在多個索引中。 ②索引名稱命名:IDX_+索引名稱,索引名長度不能超過30個字符。索引名稱前一定要加上schema。 ③應(yīng)為新建索引指定索引表空間,生產(chǎn)庫上索引表空間一般為:SCHEMA_IDX。 ④表名前一定要加上schema。 2.4創(chuàng)建序列 --Create sequence create sequence MUB2C.SEQ_CITYCUSS_ALL minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 cache 20; 注意點: ①序列名稱命名:SEQ_+序列名稱,序列名長度不能超過30個字符。序列名前一定要加上schema。 ②序列最大值為18個9。 ③不建議在一個schema下創(chuàng)建多個序列,一般為2-3個。 -- Grant/Revoke object privileges GRANT SELECT ON MUB2C.SEQ_CITYCUSS_ALL TO R_SELMUB2C; 注意點: 數(shù)據(jù)表創(chuàng)建后,需添加授權(quán): SELECT——將查看的權(quán)限授權(quán)給角色R_SELSCHEMA 3.修改數(shù)據(jù)庫對象 --重命名字段 ALTER TABLE EBSVRF.POINT_TASK_TRACK RENAME COLUMN PNRD_VERIFIED_NUM TO ET_VERIFIED_NUM; comment on column EBSVRF.POINT_TASK_TRACK.ET_VERIFIED_NUM is '通過ET驗證成行的旅客人數(shù)'; --增加字段 ALTER TABLE MUB2C.DS_INFO ADD DS_RANK NUMBER(18); comment on column MUB2C.DS_INFO.DS_RANK is '記錄點殺的名次'; --修改字段添加默認值 ALTER TABLE MUB2C.DS_INFO MODIFY CRT_DT DEFAULT SYSDATE; --修改字段類型 ALTER TABLE MUB2C.DS_INFO MODIFY DS_RANK NUMBER(19); --刪除某個字段 ALTER TABLE MUB2C.DS_INFO DROP COLUMN TEST_DT; 注意點: ①修改數(shù)據(jù)庫對象,在表名前一定要加上schema。 ②如有重命名字段或增加字段,需為該字段添加注釋。 |
浙公網(wǎng)安備 33010602011771號