• Oracle常出现的问题


    1、很多程序员,为了测试,创建用户时都喜欢用123为密码。在oracle里,密码不能以数字开头。

    密码前面加个字母就可以创建成功了。

    2、创建成功后,首先想到的就是试着连接一下呀,好了,又报错:

    要在sysdba里操作授权(conn /as sysdba)不然的话,会报“未连接”的错误。

    完整的授权语句一般是:

    grant connect,create session,resource,dba to test;

    3、如果您在创建用户时确认加上密码,连接也带上正确的密码,但还是出现以下错误的话(至于是什么原因,请看红色字体标示),

    就要用:alter user test identified by a123;来修改一下密码了。

    pl/sql developer里登录时,如果在登录框里的“连接为”选择Normal也会出现这种情况,选择:sysdba却可以成功登录。

     

    Oralce用户以normal状态登录不进去了,但是用sysdba确可以登录。究其原因有以下两点:
    A. oracle的dba组是操作系统相关的,ORA_DBA是windows下的dba组。因为使用了操作系统认证的原因。不要用户名和密码都能以sysdba身份登陆。
    B. 通过重新设置system用户的密码,可以解决以上问题。(以system用户sysdba状态登录,然后用alter user system identified by system(system为密码)语句修改密码,修改成功后即可登录。)

    4、当你登录时如果有以下错误提示(这种错误很简单,记住以下解锁语句即可):

    conn /as sysdba;---在sysdba用户下才可以进行解锁操作。

    alter user test account unlock;

    以下为一些常用操作语句:

     1 --给用户解锁命令:
     2 alter user scott account unlock;(在sys用户下执行)
     3 
     4 --查询表结构:
     5 desc emp;
     6 desc dept;
     7 desc salgrade;
     8 
     9 --查询系统当前时间
    10 select sysdate from dual;
    11 
    12 selec ename,sal*12 from emp;--每人的年薪
    13 
    14 用双引号括着的字段表示外号,能保持原形(不会大小写改变)
    15 注意:任何含有空值的数学表达式最后都是空值
    16 字符串连接用:||
    17 去除重复记录:select distinct deptno from emp;
    18 select ename,sal from emp where ename>'CBA';--比较字符串实际和
    19 java一样,都是比较ASCII码
    20 
    21 select ename,sal from emp where sal between 800 and 1500;与
    22 select ename,sal from emp where sal >=800 and sal<=1500 等值的
    23 select ename,sal,comm from emp where comm is null;--查询空值,不能comm=null;
    24 不是空值:is not null;
    25 
    26 select ename,sal from emp wehre ename like '%$%%' escape '$'-- 查询含有%有,且自定义$为转义字符(一般/为转义字符)。

    oracle版本之间的差异造成的问题:

    1、innerjoin

    1 select * from tab1 a inner join tab2 b on a.id=b.id --在oracle 8i里出现上图的错误
    2 
    3 --改为以下写法则没问题
    4 select * from tab1 a ,tab2 b where a.id=b.id

     2、正则表达式:

    1 select * from tab 
    2 where 
    3 regexp_like(substr(code, -2) ,'^[0-9]+[0-9]$') --过滤字段为数字
    4 order by code desc
    5 --以上写法在oracle 8i里出现上图的错误,改为以下写法问题解决:
    6 
    7 select * from tab 
    8 where 
    9 trim(translate(substr(code, -2) ,'1234567890','')) is  null --过滤字段为数字

    oracle实现TOP N的功能:

    select * from ( select  name,age,sex  from  tab  order by a.t_date desc) where  rownum<=200
  • 相关阅读:
    Android源码服务专家(申明:来源于网络)
    Android超精准计步器开发-Dylan计步(申明:来源于网路)
    eclipse中一个项目引用另一个项目的方法(申明:来源于网络)
    javaweb(二十九)——EL表达式
    javaweb学习总结(二十八)——JSTL标签库之核心标签
    javaweb(二十六)——jsp简单标签标签库开发(二)
    javaweb(二十四)——jsp传统标签开发
    javaweb(二十三)——jsp自定义标签开发入门
    javaweb(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
    javaweb(二十一)——JavaWeb的两种开发模式
  • 原文地址:https://www.cnblogs.com/comrd/p/3578281.html
Copyright © 2020-2023  润新知