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