1. 程式人生 > >oracle 資料庫表字段新增、修改、刪除等DDL操作

oracle 資料庫表字段新增、修改、刪除等DDL操作

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);