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