zoukankan      html  css  js  c++  java
  • 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子句的!

  • 相关阅读:
    结对作业(1)--疫情统计可视化(原型设计)
    软工实践寒假作业(2/2)疫情统计程序
    最长回文
    吉哥系列故事——完美队形II ——Manacher算法
    友情链接
    代码互改——第二次个人编程作业
    汉字编程——第一次个人编程作业
    谈谈自己
    OO第一次博客
    OO第一单元作业总结
  • 原文地址:https://www.cnblogs.com/CandiceW/p/10031104.html
Copyright © 2011-2022 走看看