好好好好久沒更新了,最近真是墮落了,做的都是小菜鳥做的東西,都沒得寫,但是最近數據庫突然從mysql換到oracle,哈哈哈哈哈,還真是挺復雜的
1、首先建表
fund 是表名稱
其他的是字段名稱
create table fund ( id number(11) primary key,/*id 主鍵*/ name varchar2(100),/*字段 name*/
desc clob, /*描述,類型是clob,存儲空間比較大*/ )
創建字段的時候
oracle10G對於表名的長度限制是30個字節,超過會提示標示符過長
2、一般的id是自增的,在mysql里面設置自增點一下就好了,oracle比較麻煩,需要用到序列
2.1設置序列
fund_autoinc 是序列字段,表示從1到9999999999999999999999999999這么大
create sequence fund_autoinc minvalue 1 maxvalue 9999999999999999999999999999 start with 1 increment by 1 nocache;
2.1創建觸發器
create or replace trigger insert_fund_autoinc before insert on fund for each row begin select fund_autoinc.nextval into :new.id from dual; end;
3插入數據 測試一下
insert into fund(name) values ('cccc');
4查看表
select * from fund;
當然我發現我查不到數據,
網上搜了一下發現了這么一條解釋,我比較容易明白
“如果在插入后並且未提交的的情況下新開一個session查詢的話,你是查不到剛插入的數據,這跟Oracle的隔離性有關,但是在當前session是能夠查到的,在commit之后,其它session就能查到了(持久性)”
需要commit,
用法很簡單
insert into fund(name) values ('vvvvvv');
commit;
這樣就真的插入數據了
但是我這個表有點特殊,name是唯一的,需要創建唯一屬性 ,設置唯一屬性,表必須是空的
刪除表數據
delete from fund;//truncate table fund
commit;
delete與truncate的區別:
delete:會產生rollback,如果刪除大數據量的表速度會很慢,同時會占用很多的rollback segments。
truncate: 是DDL操作,不產生rollback,速度快。
然后設置唯一
alter table fund
add constraint tb_fund_u1
unique (name); //name 是字段,可以添加多個 unique (name,company);
最后補充一點,我的字段里面有設置這個CLOB類型的字段,一般寫select *查不出來東西,但是可以用to_char
select to_char(desc) from fund;
寫的有點亂,但是寫的很多,把我踩到的坑全寫出來了,下一篇寫PHP連接oracle數據庫,並操作數據庫,有啥問題歡迎留言啊。