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;