zoukankan      html  css  js  c++  java
  • ORACLE对象大小写问题

    在数据库新建一个测试表(数据库版本为ORACLE 10.2.0.1.0),表名为小写的test 脚本如下所示:

    CREATE TABLE test
    (
         id      
    NUMBER(10),
         Name    
    VARCHAR2(20),
         Sex     
    VARCHAR(2)
    )


    --查找不到对应数据
    SELECT * FROM USER_TABLES WHERE TABLE_NAME = 'test'

    --改用大写才可以查到对应的数据
    SELECT * FROM USER_TABLES WHERE TABLE_NAME ='TEST'

    --查找不到对应数据
    SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'test';

    SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME ='TEST'; 

     下面我们用双引号来新建另外一个表(ORACLE 中 " "的作用是强制区分大小写,以及关键字做字段时用"")脚本如下所示:

    CREATE TABLE "test1"

      "id"       
    NUMBER(10),
      "Name"     
    VARCHAR2(20),
      "SEX"      
    VARCHAR(2)
    )
     
    SELECT * FROM USER_TABLES WHERE TABLE_NAME = 'test1';

    SELECT * FROM DBA_TABLES WHERE TABLE_NAME = 'test1';

    SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME ='test1';

    SELECT * FROM "test1";

    --ORA-00942: 表或试图不存在
    SELECT * FROM test1;

    --ORA-00904: "NAME": 标识符无效
    SELECT id, Name, SEX FROM "test1";

    --ORA-00904: "ID": 标识符无效
    SELECT id, "Name", SEX FROM "test1";

    SELECT "id", "Name", SEX FROM "test1";

    --ORA-00942: 表或试图不存在

    SELECT "id", "Name", SEX FROM test1;  

    上面的例子也许会让觉得比较奇怪,这种现象在SQL SERVER里面是不存在的。这是因为ORACLE在建表或者字段时,如果没有双引号,ORACLE会把表名、字段名全部转化为大写字母然后写入数据字典。访问数据字典时,没有双引号ORACLE会将其转化成大写然后再去数据字段中查找。如果加上双引号则能区分大小写。不仅仅关键字不区分大小写,函数名,过程,表名称,pl/sql块中变量名,用户名,密码等都不区分大小写。

    有些人可能不习惯表名、字段全部用大写,而喜欢用小写或大小写混杂的形式,如果是这样的话,你在ORACLE中写脚本时就要注意了,没有处理好,这样会给你带来“无穷的麻烦”

    如上所示,你必须在字段上加上"",否则这里报错,哪里起火。而人有时候又是很粗心、健忘的。所以在ORACLE中,还是建议全部用大写,这样可能开始会让你有些不爽,不过习惯了就好了。总比你用""给后面的开发带来很多隐患要好得多。 

    在ORAClE中,习惯脚本、字段等用大写,有人说能提高效率,这样少了强制转换大写(如果没有双引号的话)开销,也有人说这些开销可以忽略不计,不会有啥性能方面的问题。(当然脚本全部用大写一致,可以避免同一脚本由于大小写问题多次解析,这是可以肯定的)。小弟不才,也不能确定,网上这方面的资料也少,希望大家能讨论 

    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    461. Hamming Distance
    342. Power of Four
    326. Power of Three
    368. Largest Divisible Subset java solutions
    95. Unique Binary Search Trees II java solutions
    303. Range Sum Query
    160. Intersection of Two Linked Lists java solutions
    88. Merge Sorted Array java solutions
    67. Add Binary java solutions
    14. Longest Common Prefix java solutions
  • 原文地址:https://www.cnblogs.com/kerrycode/p/2037151.html
Copyright © 2011-2022 走看看