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

ORACLE对象大小写问题的更多相关文章

  1. 【Mysql】MySQL与Oracle的大小写问题

    转载来源:http://aofengblog.blog.163.com/blog/static/63170212010101065030136/ MySQL与Oracle在大小写处理上的区别: 1MY ...

  2. Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象

    作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么 ...

  3. Oracle对象-视图和索引

    Oracle 对象-视图 视图概念 ​ 视图就是提供一个查询的窗口,所有的数据来自于原表 创建视图[必须有dba权限] --查询语句创建表 create table emp as select * f ...

  4. 黑马oracle_day02:04.oracle对象&&05.oracle编程(a)

    01.oracle体系结构 02.oracle的基本操作 03.oracle的查询 04.oracle对象&&05.oracle编程(a) 05.oracle编程(b) 04.orac ...

  5. 使用Navicat迁移MySQL数据至Oracle时大小写原因报“表或视图不存在”问题处理

    使用Navicat提供的数据传输工具将JEECMSv9的MySQL的数据迁移至Oracle数据库,数据迁移成功表都存在,但是在程序启动时提示表或视图不存在. Caused by: java.sql.S ...

  6. oracle对象类型

    Oracle的对象类型 对象类型 在PL/SQL中,面向对象的程序设计师基于对象类型来完成的.对象类型是用户自定义的一种复合数据类型,它封装了数据结构和用于操纵这些数据结构的过程和函数. 数据库的对象 ...

  7. 查看解决Oracle对象锁住的问题

    在编译的一个存储过程的时候,对象可能由于被锁住而处于假的卡死状态,这个时候有的是因为,这个过程正在运行中,所以无法编译: 上次我遇到一次,我很清楚的确定这个过程没有运行,可以我就是无法编译,对象一直被 ...

  8. oracle 对象上锁,不能插入或删除情况

    ora-00054:resource busy and acquire with nowait specified解决方法 当某个数据库用户在数据库中插入.更新.删除一个表的数据,或者增加一个表的主键 ...

  9. ORACLE对象模式

    在oracle数据库中,数据对象是以模式(Schema)为单位进行组织和管理的.所谓模式是指一系列逻辑数据结构或对象的集合. 模式与用户相对应,一个模式只能被一个数据库用户所拥有,并且模式名称与这个用 ...

随机推荐

  1. ADO对SQL Server 2008数据库的基础操作

    最近在学习ADO与数据库的相关知识,现在我将自己学到的东西整理写出来,也算是对学习的一种复习. 这篇文章主要说明如何遍历某台机器上所有的数据库服务,遍历某个服务中所有的数据库,遍历数据库中的所有表以及 ...

  2. unisound_asr 云知声 语音识别 python版接口

    抽空,实现了一份云知声 语音转写的python版本. 使用python通过调用动态库实现. 云知声官网: http://dev.hivoice.cn/sdk_download/schema_sdk.j ...

  3. Setup Automapper in ASP.NET Core

    1.添加Nuget Package Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection 2.修改Startup.cs ...

  4. js中时间的处理

    转自 : http://blog.csdn.net/xichenguan/article/details/45512541 //将格林时间转换成字符串格式的,用于显示带页面 time : 格林时间 v ...

  5. cs231n spring 2017 lecture7 Training Neural Networks II 听课笔记

    1. 优化: 1.1 随机梯度下降法(Stochasitc Gradient Decent, SGD)的问题: 1)对于condition number(Hessian矩阵最大和最小的奇异值的比值)很 ...

  6. ubuntu下查看-卸载软件(卸载.net core sdk的方法)

    查看已安装的包:dpkg --list 查看正则匹配的包:dpkg --list 'dotnet-*' //查看以dotnet-开头的包 卸载匹配的包:sudo apt-get --purge rem ...

  7. 微积分入门("SX"T版)

    哎,微积分,表示暂时并没有很深入的研究……虽然高中有教,但是好像跟小西瓜学的顺序不太一样,嗯……教微积分之前不应该把极限学下来么……不管了,本文按傻X腾的理解来搞吧. 极限……大学的东西喔,我们先来认 ...

  8. NYoj_171聪明的kk

    聪明的kk 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 聪明的"KK" 非洲某国展馆的设计灵感源于富有传奇色彩的沙漠中陡然起伏的沙丘,体现出本国不 ...

  9. Can you find it?(哈希)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 Can you find it? Time Limit: 10000/3000 MS (Java ...

  10. 从XMLHttpRequest请求响应里getResponseHeader(header)报错:Refused to get unsafe header "**" 问题解决

    问题产生原因: 原因1:W3C的 xhr 标准中做了限制,规定客户端无法获取 response 中的 Set-Cookie.Set-Cookie2这2个字段,无论是同域还是跨域请求: 原因2:W3C ...