oracle 數據庫創建表


 好好好好久沒更新了,最近真是墮落了,做的都是小菜鳥做的東西,都沒得寫,但是最近數據庫突然從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數據庫,並操作數據庫,有啥問題歡迎留言啊。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM