1. 程式人生 > >Oracle常用資料庫表操作

Oracle常用資料庫表操作

配置資料庫:

 user:orcl.passward:71911.Hao全域性資料庫名:orcl。、解鎖資料庫使用者名稱,SCOTT,SYSTEM,SYS,   PWD:71911.Hao輸入sqlplus,然後提示輸入使用者名稱,直接輸入user/[email protected]就可以了,然後出來sql>,就可以輸入各種語句了sqlplus scott/[email protected], 後面要指定是連線哪個庫(密碼不顯示,沒事)sqlplus sys/719118Ha as sysdbadesc table;tablespace 表空間名add constraint PK_IICL_ALT primary key (ID)//新增主鍵using index 可以指定存在的索引   pctfree 10  initrans 1  maxtrans 255  storage  (    initial 64K    next 1M    minextents 1    maxextents unlimited  );//SQL code  tablespace 表空間 --指定建立物件的表空間   pctfree 10 --塊預留10%空間用於以後資料更新   initrans 1  --初始化事務槽數   maxtrans 255 --最大事務槽數   storage --下面是儲存引數   (   initial 64K --初始化擴充套件區為64k   next 1M --下次擴充套件1m   minextents 1 --最小區數為1   maxextents unlimited --最大區數無限制   ); alter user scott account unlock;

配置主鍵和唯一性約束:alter table test add constraint pk_id primary key(id);  ALTER TABLE dm_pk_transgap_analysis ADD CONSTRAINT UQ_DTAC_CODE UNIQUE(CODE);

三種配置外來鍵方法: 1  categoryId number(10) not null references Category(id)

2   ALTER TABLE  books ADD CONSTRAINT FK_Book_categoryid FOREIGN KEY(categoryId ) REFERENCES Category(id);

3  CONSTRAINT FK_LOCATION_ZONE FOREIGN KEY(ZONE_CODE) REFERENCESCALM_ZONE_INFORMATION(ZONE_CODE)

聯合主鍵:

alter table zcz add constraints zcz_name_age primary key (name,age);

alter table AdItem drop constraint AdOrder_AdItem_FK1

聯合唯一約束(下面該條sql的作用是name和age不能同時相等):

CREATE UNIQUE INDEX zcz_name_age ON zcz(NVL2(name,age,NULL),NVL2(name,name,NULL));

ALTER TABLE DM_ADMISSION_PERMIT_USER ADD CONSTRAINT UQ_DAPU_CHECK_ORG UNIQUE(CHECK_ORG,TYPE);

修改表名: alter table gld_STA_INFLOW_REPORT rename to STA_INFLOW_REPORT;

重新命名欄位和修改欄位屬性:

 ALTER TABLE CALM_BUSINESS_UNIT RENAME COLUMN BU_REMARK TO REMARK; ALTER TABLE CALM_BUSINESS_UNIT MODIFY REMARK VARCHAR2(100);

增加和刪除列:

ALTER TABLE table_name ADD column_name datatype

ALTER TABLE table_name DROP COLUMN column_name

建立序列:

CREATE SEQUENCE 序列名[INCREMENT BY n]     --每次加幾[START WITH n]         --序列從幾開始[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --最小值、最大值的限制比如CREATE SEQUENCE s_test start with 1 increment by 1;   --就是建立了額一個從1開始每次加1的序列。訪問序列時,用  序列名稱.nextval的語法。比如對於上表,如果想要id欄位實現自增。則在每次插入記錄時,使用下面類似的語法(前提是表和序列已經建好)。insert into test values (s_test.nextval,'張三');

可見在Windows預設情況下,VARCHAR2(2) 就等於是 VARCHAR2(2 BYTE)  一個漢字佔2個位元組

可見在Linux預設情況下,VARCHAR2(2) 就等於是 VARCHAR2(2 BYTE)  一個漢字佔3個位元組

INSERT INTO TEST VALUES('測試');分別需要4個位元組和6個位元組。

--備份或者修改表字段:

create table contract_basis_bakas as select * from contract_basis;

DELETE from contract_basis;

ALTER TABLE contract_basis modify cont_name nvarchar2(300);

ALTER TABLE contract_basis modify cont_relative_name nvarchar2(300);

insert into contract_basis select * from contract_basis_bakas2;

DROP TABLE contract_basis_bakas;

--備份表結構:

create table MP_APP_ROLE_R_WELL as select * from MP_APP_ROLE_R_RESOURCE where 1=2;