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子句的!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM