oracle中怎么给列起别名,oracle中给表和列起别名

SELECT xxmc,sname asxsxm,sex,phone,address jzdzFROMstudent sLEFT JOIN xxjbxx x ON x.sid = s.sid

此处的s为student表的别名,x为xxjbxx表的别名,xsxm是sname学生姓名的别名,jzdz是学生地址的别名

ps:

(1)表的别名要在from子句中指定,并且别名位于查询中其余列之前

(2)使用表的别名可以减少查询中输入的文本的数量,并且可能还会减少在输入过程中的错误。

2.给字段起别名

(1)使用AS

在该字段后面空一格,使用AS 空格 别名,这种方式来起别名给字段

(2)直接在字段的后面加空格 或者双引号 将别名括起来都可以。

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

SELECT ID ABCDEABCDEABCDEABCDEABCDEABCDE--30个英文大写字符,正常执行

FROMSTUDENTSELECT ID ABCDEABCDEABCDEABCDEABCDEABCDE1--多加另一个1就会报ORA-00972:identifier is to long

FROMSTUDENTSELECT ID 我们学校的好学生学号--10个中文汉字字符,正常执行

FROMSTUDENTSELECT ID 我们学校的好学生学号1--多加另一个1就会报ORA-00972:identifier is to long

FROM STUDENT

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

SELECT ID AS 学号--使用AS的情况,正常执行

FROMSTUDENTSELECT ID 学号--不适用AS也可以正常执行,而且代码更简洁,建议使用方式

FROM STUDENT

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

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

FROMSTUDENTSELECT ID "123学号"--正常执行

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

SELECT ID 学号--正常执行

FROMSTUDENTSELECT ID "学号"--正常执行

FROMSTUDENTSELECT ID '学号'--执行时报"ORA-00923: FROM keyword not found where expected"

FROMSTUDENTSELECT ID StudentId--正常执行

FROMSTUDENTSELECT ID "StudentId"--正常执行

FROMSTUDENTSELECT ID 'StudentId'--执行时报"ORA-00923: FROM keyword not found where expected"

FROM STUDENT

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

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

FROMSTUDENTSELECT ID (学号)--英文小括号,执行时报"ORA-00904: "ID": invalid identifier"

FROMSTUDENTSELECT ID AS "(学号)"--正常执行

FROMSTUDENTSELECT ID AS(学号)--中文小括号且使用AS的情形,执行时报"ORA-00923: FROM keyword not found where expected"

FROMSTUDENTSELECT ID(学号)--中文小括号,执行时报"ORA-00904: "ID": invalid identifier"

FROMSTUDENTSELECT ID "(学号)"--正常执行

FROM STUDENT

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

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

FROMSTUDENTSELECT ID "学 号"--正常执行

FROMSTUDENTSELECT ID XUE HAO--执行时报"ORA-00923: FROM keyword not found where expected"

FROMSTUDENTSELECT ID "XUE HAO"--正常执行

FROM STUDENT

7)使用别名时因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

SELECTID ID_FROMSTUDENTWHERE ID_=11--执行时报"ORA-00904: "ID_": invalid identifier"

SELECTID ID_FROMSTUDENTWHERE ID=11--正常执行

SELECTID ID_FROMSTUDENTWHERE ID='11'--正常执行,注意:ID是NUMBER类型的数据

SELECTID ID_FROMSTUDENTWHERE ID="11"--执行时报"ORA-00904: "11": invalid identifier",注意:ID是NUMBER类型的数据

SELECT ID,COUNT(*) CFROMSTUDENTGROUP BYIDHAVING C>0--执行时报"ORA-00904: "C": invalid identifier"

SELECT ID,COUNT(*) CFROMSTUDENTGROUP BYIDHAVING Count(*)>0--正常执行

SELECT ID,COUNT(*)CFROMSTUDENTGROUP BYIDHAVING COUNT(*)>0

ORDER BY C--正常执行

SELECTID ID_FROMSTUDENTORDER BY ID_--正常执行

SELECTID ID_FROMSTUDENTORDER BY 1--正常执行

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

SELECTXUEHAOFROM (SELECT ID XUEHAO FROMSTUDENT)WHERE XUEHAO > 1--正常执行

SELECTXUEHAOFROM (SELECT ID xuehao FROMSTUDENT)WHERE XUEHAO > 1--正常执行

SELECTXUEHAOFROM (SELECT ID "XUEHAO" FROMSTUDENT)WHERE XUEHAO > 1--正常执行

SELECTXUEHAOFROM (SELECT ID "xuehao" FROMSTUDENT)WHERE XUEHAO > 1--执行时报"ORA-00904: "XUEHAO": invalid identifier"

SELECTXUEHAOFROM (SELECT ID "xuehao" FROMSTUDENT)WHERE xuehao > 1--执行时报"ORA-00904: "XUEHAO": invalid identifier"

SELECTXUEHAOFROM (SELECT ID "xuehao" FROMSTUDENT)WHERE "xuehao" > 1--执行时报"ORA-00904: "XUEHAO": invalid identifier"

SELECT"xuehao"FROM (SELECT ID "xuehao" FROMSTUDENT)WHERE "xuehao" > 1--正常执行

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值