• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
博雅居
要想跟上时代,就得不断学习!
博客园    首页    新随笔    联系   管理    订阅  订阅
oracle中给表和列起别名
SELECT xxmc,sname as xsxm,sex,phone,address jzdz 
FROM student s
LEFT 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个英文大写字符,正常执行
FROM STUDENT

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


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

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

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

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

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

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

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

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

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

SELECT ID 学号--正常执行
FROM STUDENT

SELECT ID "学号"--正常执行
FROM STUDENT

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

SELECT ID StudentId--正常执行
FROM STUDENT

SELECT ID "StudentId"--正常执行
FROM STUDENT

SELECT 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"
FROM STUDENT

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

SELECT ID AS "(学号)"--正常执行
FROM STUDENT

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

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

SELECT ID "(学号)"--正常执行
FROM STUDENT

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

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

SELECT ID "学 号"--正常执行
FROM STUDENT

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

SELECT 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

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(*) C
FROM STUDENT
GROUP BY ID
      HAVING C>0--执行时报"ORA-00904: "C": invalid identifier"
      
SELECT ID,COUNT(*) C
FROM STUDENT
GROUP BY ID
      HAVING Count(*)>0--正常执行   

SELECT ID,COUNT(*)C
FROM STUDENT
GROUP BY ID
      HAVING COUNT(*)>0
ORDER BY C--正常执行


SELECT ID ID_
FROM STUDENT
ORDER BY ID_--正常执行

SELECT ID ID_
FROM STUDENT
ORDER BY 1--正常执行

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

SELECT XUEHAO
FROM (SELECT ID XUEHAO FROM STUDENT) 
WHERE XUEHAO > 1--正常执行

SELECT XUEHAO
FROM (SELECT ID xuehao FROM STUDENT) 
WHERE XUEHAO > 1--正常执行

SELECT XUEHAO
FROM (SELECT ID "XUEHAO" FROM STUDENT) 
WHERE XUEHAO > 1--正常执行

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

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

SELECT XUEHAO
FROM (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子句的!

 

If opportunity doesn’t knock, build a door
posted on 2018-11-28 11:28  博雅居  阅读(26489)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3