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数据库,并操作数据库。
标签:insert,name,autoinc,创建,数据库,fund,oracle,commit,select 来源: https://www.cnblogs.com/xbxxf/p/11057588.html