oracle 資料庫表字段新增、修改、刪除等DDL操作
阿新 • • 發佈:2018-11-07
oracle 資料庫表字段新增、修改、刪除等操作
1. 建立表
-- Create table
create table TB_PERMISSION_ORGANIZATION
(
id VARCHAR2(150) not null,
parent_id VARCHAR2(150),
name VARCHAR2(200) not null,
org_code VARCHAR2(200) not null,
org_type NUMBER(2) default 0,
create_date date not null,
update_date date NOT null,
is_delete NUMBER default 0 not NULL
);
alter table TB_PERMISSION_ORGANIZATION add constraint PK_TB_PERMISSION_ORGANIZATION primary key (ID);
alter table TB_PERMISSION_ORGANIZATION add constraint UNIQUE_ORG_CODE unique (ORG_CODE);
COMMIT;
-- Create table
create table TB_PERMISSION_USER
(
id NUMBER(10) not null,
login_name VARCHAR2(200) not null,
password VARCHAR2(200) not null,
name VARCHAR2(50),
phone VARCHAR2(20),
email VARCHAR2(100),
address VARCHAR2(500),
describe VARCHAR2(1000),
organization_id VARCHAR2(150 ),
create_date date not null,
update_date date NOT NULL,
is_delete NUMBER default 0 not NULL
);
-- Add comments to the columns
comment on column TB_PERMISSION_USER.login_name is '登入名稱';
comment on column TB_PERMISSION_USER.is_delete is '是否刪除0:未刪除 1 已刪除';
-- Create/Recreate primary, unique and foreign key constraints
alter table TB_PERMISSION_USER add constraint PK_TB_PERMISSION_USER primary key (ID);
alter table TB_PERMISSION_USER add constraint UNIQUE_TB_PERMISSION_USER unique (login_NAME);
alter table TB_PERMISSION_USER add constraint FK_TB_PERMISSION_USER_ORG foreign key (ORGANIZATION_ID) references TB_PERMISSION_ORGANIZATION (ID) on delete cascade;
COMMIT;
以 tb_permission_user 表示例,且表裡都存在資料。
2. 新增欄位
語法:alter table tablename add (column datatype [default value][null/not null],….);
說明:alter table 表名 add (欄位名 欄位型別 預設值 是否為空);
舉例:ALTER TABLE tb_permission_user ADD(english_name Varchar2(100) DEFAULT 'admin' NOT NULL);
3. 刪除欄位
語法:alter table tablename drop (column);
說明:alter table 表名 drop column 欄位名;
舉例:ALTER TABLE tb_permission_user DROP COLUMN english_name;
4. 修改欄位
1. 修改欄位名稱
**
語法:alter table tablename rename column name to name1;
說明:alter table 表名rename column 原欄位名 to 更改後的欄位名;
舉例:ALTER TABLE tb_permission_user RENAME COLUMN NAME TO ch_name;
2. 修改欄位型別/長度
語法:alter table tablename modify (column datatype [default value][null/not null],….);
說明:alter table 表名 modify (欄位名 欄位型別 預設值 是否為空);
表中無資料,則不管改為什麼欄位型別,均可直接執行
舉例:ALTER TABLE tb_permission_user MODIFY (address VARCHAR2(1000));表中存在資料
舉例:將tb_permission_user表的主鍵id(number(10)–>id(varchar2(100)))
--新增主鍵臨時列id_temp
ALTER TABLE tb_permission_user ADD(id_temp VARCHAR2(100));
--將原id的值複製到id_temp
UPDATE tb_permission_user SET id_temp = ID;
--刪除原主鍵id列
ALTER TABLE tb_permission_user DROP COLUMN ID;
--修改列id_temp為主鍵id列
ALTER TABLE tb_permission_user RENAME COLUMN id_temp TO ID;
--新增id原有的主鍵約束
ALTER TABLE tb_permission_user ADD CONSTRAINT PK_TB_PERMISSION_USER PRIMARY KEY (ID);