| 一、问题简介1、开发环境      操作系统:win10       数 据 库:Oracle11g       数据库连接工具:Navicat  Premium 2、问题简述       在使用SQL Development、Navicat  Premium、powerdesigner生成SQL脚本 或 使用Navicat  Premium的“数据传输”功能,将旧的数据库复制到Oracle数据库后,再使用select查询语句查询表中记录会出错。       二、问题解决方案1、原因分析     Oracle数据库的语法是大小写敏感的,通过SQL语句创建表时,会自动将表名转换成大写。但是如果表名或字段名加上""后,Oracle不会将双引号内的表名变成大写。通过数据库连接工具、数据传输功能生成的SQL语句中的表名生成都带有双引号。                                             在Oracle数据库执行这种语句后,表名就变成了【表名加双引号】的方式。我们可以通过表名加双引号的方式来查询表。 运行结果如下:           2、更改表名和别名 
   1 --修改表名
  2 --方法一:ALTER TABLE "emp"  RENAME TO emp;
  3 --方法二:create emp as select * from "emp";
  4 --方法三:使用rename方法,但只能修改当前用户下的表
  5 rename "emp" to emp;
  6 rename "dept" to dept;
  7 rename "SALGRADE" to SALGRADE;
  8 rename "sysdiagrams" to sysdiagrams;
  9 
 10 --修改字段名
 11 alter table dept rename column "deptno" to deptno;
 12 alter table dept rename column "dname" to dname;
 13 alter table dept rename column "loc" to loc;
 14 
 15  --测试程序
 16 select * from emp;
 17 select * from dept;
 18 select * from SALGRADE;
 19 select * from sysdiagrams;
 20 
 21 select * from dept  where deptno = 10 3、Navicat  Premium解决办法       使用Navicat  Premium进行数据传输,把其他数据库中的数据传输到Oracle数据库时,需要在【高级】选项卡中勾选【转换对象名为大写】才可。         4、PowerDesigner解决办法(1)修改Naming Convention配置     在[Tools->Model Options->Naming Convention]中,把Name和Code的Charcter case属性设成Uppercase(只要不是混合模式即可)。                          (2)修改CaseSensitivityUsingQuote配置       在【Database->Edit current database->Script->Sql->Format】下将CaseSensitivityUsingQuote的comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”即可!              |