学习 了一下Oracle数据库,在这里做一下记录

Oracle常用内置函数

--首字母大写
select initcap('iloveChina') from dual;

--转换为小写字母
select lower('ILOVECHINA') from dual;

--转换为大写字母
select upper('ilovechina') from dual;

--从左输入的字母开始截取
select ltrim('iloverchina','i') from dual;

--从右边开始,截取给定的字符,无论出现多少次
select rtrim('vipppppipippppp','ip') from dual;

--进行匹配,进行相应的字符进行匹配,然后替换
select translate('jack','abcd','1234')from dual;

--替换指定的字符
select replace('ilovejava','love','hate') from dual;

--返回指定的查找子串的位置
select instr('ilovejava','love') from dual;

--截取字符串 从第一个参数是要截取的字符串,第二个参数是指定位置开始,第三个是截取的长度
select substr('ilovejava',2,4) from dual;

--连接字符串,只能拼接一次
select concat(concat('i','love'),'java') from dual;

--将当前时间转换为字符类型
select to_char(sysdate,'yyyy-MM-dd') from dual;

--返回两个日期之间相差月份
select months_between(to_date('2020-1-20','yyyy-mm-dd'),sysdate) from dual;

--当前日期加上一个月,返回新日期
select add_months(sysdate,1) from dual;

--返回当前日期的下一个星期几
select next_day(sysdate,'星期五') from dual;

--若exp1为空,则返回exp2  nvl(exp1,exp2)
select userid,uname,upwd,nvl(usex,'未知') from t_user t;

--nvl2(exp1,exp2,exp3)
select userid,uname,upwd,nvl2(usex,'男','1'),uage from t_user t;

Oracle中的关联查询有两种写法

--关联查询
select * from t_gust g,t_role r where g.rid = r.rid;
--内联查询
select * from t_gust g inner join t_role r on g.rid = r.rid;

--外连接:左外连接,以左表为准,
select * from t_gust g left join t_role r on g.rid = r.rid;
select * from t_gust g , t_role r where  g.rid = r.rid(+);


--外连接:右外连接,以右表为准,
select * from t_gust g right join t_role r on g.rid = r.rid;
select * from t_gust g , t_role r where  g.rid(+) = r.rid;

Oracle中的分页查询,根据伪列rownum进行查询
例:十一条记录,分为四页,查询第三页 数据

-- 根据id排序,然后使用行id即rownum进行查询,起始位置>pagesize*(page-1),结束位置<=(pasize*page)
select * from 
(select t1.*,rownum rn from (select * from t_user t order by userid) t1  where rownum <=9) t2
where t2.rn > 6;
;

Oracle中的存储过程
与mysql的存储过程没有太大的差别,只是语法不同。在Oracle中将存储过程分包进行存储,则有包头和包体,包头就是该存储过程的声明,包体是该存储过程的具体实现,PLSQL的图形化界面中通过测试方法调用存储过程,mysql调用存储过程需要使用call方法调用;
例如:创建一个存储过程,将存储过程存放到packet目录下,则具体的代码实现为

-创建存储过程的包头

--创建一个包
create or replace package pck1301
as
--声明游标
type refcursor is ref cursor;

--添加
procedure add_User(
  user_id in number, 
  u_name in varchar2,
  u_pwd in varchar2,
  u_sex in char,
  u_age in number,
  msg  out varchar2
  );



--修改
procedure update_User(
  user_id in number, 
  u_name in varchar2,
  u_pwd in varchar2,
  u_sex in char,
  u_age in number,
  msg  out varchar2
  );



--删除
procedure delete_user(
           user_id in number
           ,msg out varchar );
--模糊查询         
procedure query_all(
         name in varchar,
         p_list  out refcursor
         );
         
--查询全部
procedure get_all(
   p_list  out refcursor
  );


end pck1301;

创建存储过程的具体实现(包体)

sql server 查询时自动变大写 sql查询首字母大写的信息_java

sql server 查询时自动变大写 sql查询首字母大写的信息_java_02

create or replace package body pck1301
as


--定义添加的存储过程
procedure add_User(
  user_id in number, 
  u_name in varchar2,
  u_pwd in varchar2,
  u_sex in char,
  u_age in number,
  msg  out varchar2
  )
is

--定义一个标志判断id是否为空
 cnt number(4):= 0;
begin
      select count(*)  into cnt from t_user where userid=user_id;
      if   cnt>0 then
        msg := '用户已存在,插入失败!';
      else
         insert into t_user(userid,uname,upwd,usex,uage) values(user_id,u_name,u_pwd,u_sex,u_age);
        commit;
         msg := '插入成功';
      end if;
exception
  when others then
     msg := '插入失败';

end add_User;



procedure update_User(
  user_id in number, 
  u_name in varchar2,
  u_pwd in varchar2,
  u_sex in char,
  u_age in number,
  msg  out varchar2
  ) is
begin
    
  update t_user set uname =u_name,upwd=u_pwd,usex=u_sex,uage=u_age where userid=user_id;
  commit;
  msg := '修改成功!';
  exception
  when others then
     msg := '修改失败!';


end update_User;




--定义删除的存储过程
procedure delete_user(
           user_id in number
           ,msg out varchar ) is
      --定义一个标志判断id是否为空
 cnt number(4):= 0;
begin
      select count(*)  into cnt from t_user where userid=user_id;
      if   cnt>0 then
          delete  from t_user where userid = user_id;
          commit;
          msg := '删除成功';
      else
        msg := '用户不存在,删除失败!';
      end if;
exception
  when others then
     msg := '删除失败';
end delete_user;

--定义查询的存储过程
procedure query_all(
         name in varchar,
         p_list  out refcursor
         ) is
begin
   open p_list for 
     select * from t_user where uname like '%'||name||'%';

end query_all;

--查询全部

procedure get_all(
   p_list  out refcursor
  )
  is
  begin
    open p_list for 
     select * from t_user;
  end get_all;         


end pck1301;