oracle 定义表和基础函数操作

来源:互联网 发布:java方法命名规则 编辑:程序博客网 时间:2024/04/28 04:55
/****************************************************************/>oracle 定义表和基础函数操作/****************************************************************//****************************************************************/>0.根据需求抽象出需要哪写对象,然后找出在这些对象上需要封装的属性 ,然后定义这些对象之间的关联关系,然后开始建库建表.>简单设计用户,角色,权限三张表/****************************************************************/>1.user/****************************************************************/uid,uname,upwd,uemail,eroleid//select * from user_all_tables; --查询当前用户创建的表的具体信息//create table tabl_user//(//  --uid,uname,upwd,uemail,eroleid//  sid number(11,0) primary key, --需要以逗号隔开//  uname varchar2(25) not null,//  upwd varchar(50) not null,//  uemail varchar(50),//  uroleid number(4,0)//);--以分号结束/****************************************************************/>2.role/****************************************************************/rlid,rlname,rldesc//create table tbl_role(//--rlid,rlname,rldesc//rlid number(4,0) primary key, //rlname varchar2(25) not null,//rldesc varchar(250) not null//);/****************************************************************/>3.right/****************************************************************/ rtid,rtname,rtdesc//create table tbl_right(//-- rtid,rtname,rtdesc//rtid number(4,0) primary key,//rtname varchar2(25) not null,//rtdesc varchar2(250) not null//);/****************************************************************/>4.tbl_rl_rt_link/****************************************************************/ lid,rlid,rtid//create table tbl_rl_rt_link//(//--lid,rlid,rtid//lid number(11,0) primary key,//rlid number(4,0) not null,//rtid number(4,0) not null//constraint fk_rlid foreign key (rlid) references tbl_role(rlid), --直接在这里做外键约束//constraint fk_rtid foreign key (rtid) references tbl_role(rlid)//);/****************************************************************/>5.sql定义表主键/****************************************************************/>alter table tbl_user add constraint tbl_user_pk primary key(sid);//alter table 表名字 //add constraint 约束名字//primary key(唯一键字段域名称);/****************************************************************/>6.定义表的外键/****************************************************************/>alter table tbl_rl_rt_link add constraint fk_rlid foreign key (rlid) references tbl_role(rlid);//alter table 外键表名称 //add constraint 约束名称//foreign key (外键表外键字段域名称) //references 主建表(引用主表的字段域名称);/****************************************************************/>7.定义序列对象/****************************************************************/>oracle中并没有类似于sqlserver中的identity来定义主键自动增长,如果要实现主键自增,常用的一个方法是创建序列对象(sequence),然后在插入数据时取出序列的下一个值nextVal.//create sequence seq_fld//start with 0 -- 指定开始值//increment by 1 --指定递增量//minvalue 0//nomaxvalue;//--minvalue 10--指定最小值//--nominvalue; --指定没有最小值//--maxvalue 10000 --指定最大值//--nomaxvalue --没有最大值//--cycle //--nocycle 到达最大值后是否循环生成//--cache  --是否缓存序列//--nocache//--order; --noorder保证序列是否有序//select seq_fld.nextval from dual;--得到下一个产生的序列//select seq_fld.currval from dual;--得到序列的当前值>通过alter sequence seq_fld start with 2....可以修改任何配置>删除为drop sequence seq_fld>添加语句实例:insert into tbl_user(sid,uname,upwd,uemail,uroleid)values(seq_fld.nextval,'zhangyibo','root','zybd163yx@163.com',null);/****************************************************************/>8.oracle中日期,字符窜函数/****************************************************************/--extract就像他的意思一样为在某个字符窜中摘取一个模式字符//select sysdate as now,extract(year from sysdate) yr from dual;--oracle中的字符窜连接符||主要用于sql//select sysdate as now,extract(year from sysdate)||'年'||extract(month from sysdate)||//'月'||extract(day from sysdate)||'日' from dual;--to_char()可以将日期格式化,或者将日期转化为字符窜//select to_char(sysdate)||'日' from dual;--后面加一个日表示已经被转化为字符窜了//select sysdate,to_char(sysdate,'yyyy"年"mm"月"dd"日"') from dual;--需要注意的是'yyyy"月"'这种形式//decode(field_name,value,result)sql中的多重条件结构select decode(u.sid,4,u.sid,5,u.sid,6,u.sid) as multiif,u.uname,u.upwd from tbl_user u;select decode(指定需要条件结构的字段域名称,条件对应的值,处理,条件对应的值,处理) as multiif from dual;//nvl(fld,result1) if(fle==null)result1就将这个字段的值设置为result1//表示如果u.roleid这个字段域的值为空的话返回222否则返回111//select nvl(u.uroleid,111) from tbl_user u;//nvl2(fld,result1,result2)如果fld值为null返回result1否则result2//to_date(日期,模式)将模式字符窜转换成指定的日期//select to_date('2011-1-1','yyyy-mm-dd') from dual;//select * from tbl_test tt where tt.cdate> to_date(sysdate,'yyyy-mm-dd') /****************************************************************/>9.oracle中的索引/****************************************************************/ >创建索引是提高查询速度的有效办法例如lucene全文检索就是基于都排序索引进行提高查询小效率  倒排序索引就是通过关键词在文档中出现的频率来判断文档是否符合查询要求 >(B树索引,位图索引,反向键索引,) >唯一索引,非唯一索引(分类标准看字段值否唯一) >单列索引,组合索引,基于函数的索引/****************************************************************/

原创粉丝点击