0

示例说明oracle数据库中的对象名大小写及引号使用

Posted by loong on 2020/04/10 in IT系统管理 |

很多接触oracle数据库不久的朋友总是反映在开发过程中经常被oracle数据库里面的大小写、引号使用搞得很头疼,尤其一些开发工具还有自动加引号、统一转换大小写等情况,简直太影响情绪了。这这里就通过示例说明的方式总结一下ORACLE数据库中对象名的大小写及引号使用规则。

oracle数据库中对象名称默认是大小写不敏感的,在数据字典中统一转换成大写存放。
因此,表名TestTable和testTABLE在oracle数据库中是相同的:
SQL> create table TestTable (
2 id int,
3 name varchar(100)
4 )
5 ;

SQL> create table testTABLE (
2 id int,
3 name varchar(80)
4 )
5 ;

create table testTABLE (
*
ERROR at line 1:
ORA-00955: 名称已由现有对象使用

 

因为对象名在数据字典中都是转换成大写存放的,因此在查询数据字典时对象名应该用大写:
SQL> select table_name from user_tables where table_name=’TESTTABLE‘;

TABLE_NAME
————————————————————
TESTTABLE

SQL> select table_name from user_tables where table_name=’TestTable‘;

no rows selected

 

默认创建的字段名也都转换成了大写,如下所示:
SQL> desc TESTtable;
Name Null? Type
—————————————– ——– —————————-
ID NUMBER(38)
NAME VARCHAR2(100)

 

但是表名、列名在使用的时候都不需要区分大小写:

SQL> insert into testtable values (10010,’abcDEF’);

1 row created.

SQL> select * from TESTTABLE;

ID NAME
———- ——————————————————————————————————————————————————————————————————–
10010 abcDEF

SQL> select Id from testtable;

ID
———-
10010

SQL> select NaMe from TESTtable;

NAME
——————————————————————————————————————————————————————————————————–
abcDEF

SQL> select id from testtable;

ID
———-
10010

 

如果确实需要对象名大小写敏感,则需要用双引号将对象名引起来,这样一来对象名在数据字典里也是区分大小写的:
SQL> create table “testTABLE2” (
2 id int,
3 “NAme” varchar(100)
4 )
5 ;

Table created.

 
因为表名在数据字典里也区分大小写了,所以查询数据字典时也要严格区分大小写:
SQL> select table_name from user_tables where table_name=’testTABLE2‘;

TABLE_NAME
————————————————————
testTABLE2

SQL> select table_name from user_tables where table_name=’TESTTABLE2′;

no rows selected

 
列名也是区分大小写的,如下所示:
SQL> desc “testTABLE2“;
Name Null? Type
—————————————– ——– —————————-
ID NUMBER(38)
NAme VARCHAR2(100)

 

注意,对于区分大小写的对象名,以后但凡要使用到这个对象的地方都必须要加双引号并严格区分大小写:
SQL> insert into “testTABLE2″ values (20020,’xyzXYZ’);

1 row created.

SQL> insert into testTABLE2 values (30030,’AAAbbb’);
insert into testTABLE2 values (30030,’AAAbbb’)
*
ERROR at line 1:
ORA-00942: 表或视图不存在

SQL> select * from “testTABLE2″;

ID NAme
———- ——————————————————————————————————————————————————————————————————–
20020 xyzXYZ

 
关于引号,很多编程语言中单引号和双引号可以混用,但是oracle数据库里面单引号和双引号的作用是不一样的,在oracle数据库中,双引号的作用主要就是上面提到的区分大小写;而单引号在oracle数据库中却有3种用途:
1、引用一个字符串常量,也就是界定一个字符串的开始和结束。例如:
select * from testtable where id=10010; 这条SQL语句里面的查询条件“id”的值是数字10010
select * from testtable where id=’10010′; 而这条SQL语句里面的查询条件“id”的值则是字符串’10010′
2、转义符,对紧随其后出现的字符(单引号)进行转义。例如:
insert into testtable values(80080,’我们的网址是”http://nicelife.me”’); 这条SQL语句插入的第二个值是一个带引号的网址’http://nicelife.me’
3、表示单引号本身。例如:
insert into testtable values(90090,’我们叫:”Loong精选”’,好玩又长知识,总有你喜欢的!); 这条SQL语句中的第3、5个单引号就表示字符串中的引号本身。


想更便捷的免费收到本站为你准备的精彩内容?

赶快微信扫一扫微信二维码(或直接添加微信ID:loong_1688)

关注【Loong精选]自媒体矩阵!

我们一起享受精彩的移动互联网生活!!!

微信公众号“Loong精选(ID:Loong_1688)

标签:, , , , , , , ,

欢迎留下您的评论,谢谢!

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Copyright © 2012-2020 blog of loong All rights reserved.