我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle别名如何使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle别名如何使用

本篇内容主要讲解“Oracle别名如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle别名如何使用”吧!

今天在写一个简单的SQL语句并执行时抛出了如下图所示的一个错误提示信息!

Oracle别名如何使用

恩,此异常信息很明显,在SQL语句中标示符的长度过长了,简短一些就应该没问题了,我查看了一下我的SQL语句发现是我的查询字段的列别名过长,实际测试的结果为列字段别名的最大长度为30个字节!

注意:我的测试数据库是ORACLE 11.2.0.4.0(如下图所示)

Oracle别名如何使用

ok,问题搞定了,对应的更多的错误信息及解决方案,也可以从ORACLE的错误信息手册中查询比如(针对此问题):

Error:
ORA-00972: identifier is too long 
Cause:
You tried to reference a table, cluster, view, index, synonym, tablespace, or username with a value that was longer than 30 characters. 
Action:
The options to resolve this Oracle error are: 
Names for tables, clusters, views, indexes, synonyms, tablespaces, and usernames must be 30 characters or less. You must shorten the name to no more than 30 characters for these objects.

以上内容是我分析和解决我的SQL语句中,查询时列的别名过长问题的过程,也是我分享这篇小博文的引子!

下面是我针对别名的一个小结(注意:我的测试数据库是ORACLE 11.2.0.4.0 字符集是AMERICAN_AMERICA.AL32UTF8)

一:使用别名的好处

   1)简化SQL语句的书写,特别是多表关联查询且表名较长时

   2)增强SQL语句的可读性,特别是当查询出来的列字段较为复杂时效果更为明显

二:测试小结

1)测试时使用的简单表结构

CREATE TABLE SALES.STUDENT(  ID        NUMBER,  NAME      VARCHAR2(20 BYTE),  SEX       CHAR(1 BYTE),  BIRTHDAY  DATE,  HOBBY     VARCHAR2(20 CHAR))

2)测试使用的若干条测试数据

Oracle别名如何使用

3)列名的最大长度——30个字节

SELECT ID ABCDEABCDEABCDEABCDEABCDEABCDE--30个英文大写字符,正常执行FROM STUDENTSELECT ID ABCDEABCDEABCDEABCDEABCDEABCDE1--多加另一个1就会报ORA-00972:identifier is to longFROM STUDENTSELECT ID 我们学校的好学生学号--10个中文汉字字符,正常执行FROM STUDENTSELECT ID 我们学校的好学生学号1--多加另一个1就会报ORA-00972:identifier is to longFROM STUDENT

4)是否可以使用AS关键字——可以使用

SELECT ID AS 学号--使用AS的情况,正常执行FROM STUDENTSELECT ID 学号--不适用AS也可以正常执行,而且代码更简洁,建议使用方式FROM STUDENT

5)是否可以以数字开头——可以以数字开头但必须使用双引号括起来

SELECT ID 123学号--执行时报"ORA-00923: FROM keyword not found where expected"FROM STUDENTSELECT ID "123学号"--正常执行

6)对于中文别名双引号、单引号、不使用引号的区别(注意:全是英文的单引或双引符号)——使用单引符号时报错

SELECT ID 学号--正常执行FROM STUDENTSELECT ID "学号"--正常执行FROM STUDENTSELECT ID '学号'--执行时报"ORA-00923: FROM keyword not found where expected"FROM STUDENTSELECT ID StudentId--正常执行FROM STUDENTSELECT ID "StudentId"--正常执行FROM STUDENTSELECT ID 'StudentId'--执行时报"ORA-00923: FROM keyword not found where expected"FROM STUDENT

7)是否可以使用其他的特殊符号比如:小括号——可以使用但必须使用双引号括起来(注意:其他的特殊符号可能类似,这里以小括号为例做了测试,其他情况如果感兴趣可以自己动手试试)

SELECT ID AS (学号)--英文小括号且使用AS的情形,执行时报"ORA-00923: FROM keyword not found where expected"FROM STUDENTSELECT ID (学号)--英文小括号,执行时报"ORA-00904: "ID": invalid identifier"FROM STUDENTSELECT ID AS "(学号)"--正常执行FROM STUDENTSELECT ID AS(学号)--中文小括号且使用AS的情形,执行时报"ORA-00923: FROM keyword not found where expected"FROM STUDENTSELECT ID(学号)--中文小括号,执行时报"ORA-00904: "ID": invalid identifier"FROM STUDENTSELECT ID "(学号)"--正常执行FROM STUDENT

8)是否可以保留别名中的空格——可以,但必须使用双引号括起来

SELECT ID 学 号--执行时报"ORA-00923: FROM keyword not found where expected"FROM STUDENTSELECT ID "学 号"--正常执行FROM STUDENTSELECT ID XUE HAO--执行时报"ORA-00923: FROM keyword not found where expected"FROM STUDENTSELECT ID "XUE HAO"--正常执行FROM STUDENT

9)使用别名时因SQL语句各子句的执行顺序引起的问题

           ORACLE中的SQL语句, 

            1.WHERE/GROUP BY/HAVING子句中只能直接使用栏位或者常量,而不能使用栏位的别名,除非这个别名来自                   子查询之中,如:SELECT .... FROM (SELECT COLUMN_NAME C FROM TABLE_NAME) WHERE C > 1
            2.而ORDER BY 则可以直接使用别名,如SELECT COLUMN_NAME C FROM TABLE_NAME ORDER BY C

                这和SQL的执行顺序是有关的,SQL语句的执行顺序大致如下所示:

                1. FROM语句

                2. WHERE语句(结合条件)

                3. START WITH语句

                4. CONNECT BY语句

                5. WHERE语句

                6. GROUP BY语句

                7. HAVING语句

                8. MODEL语句

                9. SELECT语句

                10. UNION、MINUS、INTERSECT等集合演算演算

                11. ORDER BY语句

           我们可以看到SELECT子句是在WHERE子句执行后才执行的,当SELECT子句执行时查询列的别名才生成,所以在            WHERE子句中根本看不到列的别名,当然,自然也就无法引用列的别名了。 所以字段、表达式的别名在WHERE子            句和GROUP BY子句都是不能使用的,而在ORDER BY中不仅可以使用别名,甚至可以直接使用栏位的下标来进行            排序,如:ORDER BY ID或者ORDER BY 1

SELECT ID ID_ FROM STUDENT WHERE ID_=11--执行时报"ORA-00904: "ID_": invalid identifier"SELECT ID ID_ FROM STUDENT WHERE ID=11--正常执行SELECT ID ID_ FROM STUDENT WHERE ID='11'--正常执行,注意:ID是NUMBER类型的数据SELECT ID ID_ FROM STUDENT WHERE ID="11"--执行时报"ORA-00904: "11": invalid identifier",注意:ID是NUMBER类型的数据SELECT ID,COUNT(*) CFROM STUDENTGROUP BY ID      HAVING C>0--执行时报"ORA-00904: "C": invalid identifier"      SELECT ID,COUNT(*) CFROM STUDENTGROUP BY ID      HAVING Count(*)>0--正常执行   SELECT ID,COUNT(*)CFROM STUDENTGROUP BY ID      HAVING COUNT(*)>0ORDER BY C--正常执行SELECT ID ID_FROM STUDENTORDER BY ID_--正常执行SELECT ID ID_FROM STUDENTORDER BY 1--正常执行

10)别名是否区分大小写——区分大小写(注意:当不用双引号括起来的时候英文字符大小写不敏感)

SELECT XUEHAOFROM (SELECT ID XUEHAO FROM STUDENT) WHERE XUEHAO > 1--正常执行SELECT XUEHAOFROM (SELECT ID xuehao FROM STUDENT) WHERE XUEHAO > 1--正常执行SELECT XUEHAOFROM (SELECT ID "XUEHAO" FROM STUDENT) WHERE XUEHAO > 1--正常执行SELECT XUEHAOFROM (SELECT ID "xuehao" FROM STUDENT) WHERE XUEHAO > 1--执行时报"ORA-00904: "XUEHAO": invalid identifier"SELECT XUEHAOFROM (SELECT ID "xuehao" FROM STUDENT) WHERE xuehao > 1--执行时报"ORA-00904: "XUEHAO": invalid identifier"SELECT XUEHAOFROM (SELECT ID "xuehao" FROM STUDENT) WHERE "xuehao" > 1--执行时报"ORA-00904: "XUEHAO": invalid identifier"SELECT "xuehao"FROM (SELECT ID "xuehao" FROM STUDENT) WHERE "xuehao" > 1--正常执行

这个小例子也可以看到SQL语句是先执行WHERE子句然后才执行SELECT子句的!

到此,相信大家对“Oracle别名如何使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle别名如何使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Oracle别名如何使用

本篇内容主要讲解“Oracle别名如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle别名如何使用”吧!今天在写一个简单的SQL语句并执行时抛出了如下图所示的一个错误提示信息!恩,
2023-06-30

如何使用 PHP 函数别名?

函数别名允许为现有函数创建新名称,可创建别名的方式为:使用 function_alias() 函数指定要创建的新函数名称和要赋予别名的现有函数名称,如创建 "my_strlen" 的 "strlen" 函数别名。函数别名可增强代码可读性,并
如何使用 PHP 函数别名?
2024-04-16

linux如何定义和使用别名

这篇文章给大家分享的是有关linux如何定义和使用别名的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如何定义和使用别名要定义 Git 的别名,请使用 git config 命令,加上别名和要替换的命令。例如,要为
2023-06-15

vue3使用别名报错如何解决

这篇“vue3使用别名报错如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue3使用别名报错如何解决”文章吧。解决v
2023-07-02

js如何在解构中使用别名

这篇文章给大家分享的是有关js如何在解构中使用别名的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在解构中使用别名解构赋值是一个JavaScript表达式,它可以将数组中的值或对象中的属性解构缩不同的变量中。不必使
2023-06-27

Linux中如何使用命令行别名

这篇文章主要为大家展示了“Linux中如何使用命令行别名”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中如何使用命令行别名”这篇文章吧。Linux命令行别名非常适合帮助你提高工作效率。
2023-06-16

C#中如何使用别名指示符

这篇文章将为大家详细讲解有关C#中如何使用别名指示符,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#别名指示符是什么?通过C#别名指示符我们可以为某个类型起一个别名,主要用于解决两个命名空
2023-06-17

vite中如何使用@ 配置路径别名

这篇文章主要介绍了vite中如何使用@ 配置路径别名,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-12-08

PHP array_key_exists的别名是什么?如何使用

PHParray_key_exists别名PHP中,array_key_exists()函数可检查数组中指定键是否存在。其别名为isset(),用于检查键是否存在且不为NULL。使用array_key_exists()if(array_key_exists("key",$array)){...}//检查键是否存在使用isset()if(isset($array["key"])){...}//检查键存在且不为NULL区别array_key_exists()只检查键是否存在。isset()检查键存在且不为NU
PHP array_key_exists的别名是什么?如何使用
2024-04-02

C++11/14如何使用typedef和using定义类型别名和别名模版

这篇文章主要介绍了C++11/14如何使用typedef和using定义类型别名和别名模版
2023-05-17

SSH如何设置别名

这篇文章主要为大家展示了“SSH如何设置别名”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SSH如何设置别名”这篇文章吧。通常我们在 Termianl 下用 ssh 链接远程主机的时候,每次都需
2023-06-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录