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=''--正常执行,注意: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子句的!

oracle中给表和列起别名的更多相关文章

  1. Oracle中truncate表不更新last_ddl_time列

    Oracle中truncate表不更新last_ddl_time列 问题描述 最近发现数据库中定时job的某张表,每天都有truncate动作,由于调整了job的interval时间,想查看last_ ...

  2. 【转】Oracle中dual表的用途介绍

    原文:Oracle中dual表的用途介绍 [导读]dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情. dual是一个虚拟表, ...

  3. 如何在Oracle中建立表和表空间?

    1.建表空间 ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方 ...

  4. 用SQL语句创建和删除Access数据库中的表;添加列和删除列

    用SQL语句创建和删除Access数据库中的表;添加列和删除列 Posted on 2009-08-11 13:42 yunbo 阅读(1240) 评论(0) 编辑 收藏 用SQL语句创建和删除Acc ...

  5. oracle 中删除表 drop delete truncate

    oracle 中删除表 drop delete truncate   相同点,使用drop delete truncate 都会删除表中的内容 drop table 表名 delete from 表名 ...

  6. 向oracle中的表插入数据的方法

    向oracle中的表插入数据的方法有以下几种: 假设表名为User 第一种方法:select t.*,rowid from User t;-->点击钥匙那个标记就可向表中添加数据 第二种方法:s ...

  7. Sql Server中判断表、列不存在则创建的方法[转]

    一.Sql Server中如何判断表中某列是否存在 首先跟大家分享Sql Server中判断表中某列是否存在的两个方法,方法示例如下: 比如说要判断表A中的字段C是否存在两个方法: 第一种方法  ? ...

  8. MSSQL·查看DB中所有表及列的相关信息

    阅文时长 | 0.6分钟 字数统计 | 1013.6字符 主要内容 | 1.引言&背景 2.声明与参考资料 『MSSQL·查看DB中所有表及列的相关信息』 编写人 | SCscHero 编写时 ...

  9. Oracle中dual表的用途介绍

    导读]dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情.     dual是一个虚拟表,用来构成select的语法规则,or ...

随机推荐

  1. Java创建对象的几种方式。

    Java创建对象的几种方式(重要): (1) 用new语句创建对象,这是最常见的创建对象的方法. (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Con ...

  2. kubectl基础支持

    kubectl get deployment -n alpha kubectl get deployment *****-deployment -n alpha -o json kubectl rol ...

  3. Ubuntu 18.04版本下安装网易云音乐

    这是我迄今为止发现的最完美的解决方法,不用改任何东西,只需要安装然后打开即可,后台也有. 参考:http://archive.ubuntukylin.com:10006/ubuntukylin/poo ...

  4. 使用TestServer测试ASP.NET Core API

    今儿给大家分享下,在ASP.NET Core下使用TestServer进行集成测试,这意味着你可以在没有IIS服务器或任何外部事物的情况下测试完整的Web应用程序.下面给出示例: public Sta ...

  5. Android 使alertDialog.builder不会点击外面和按返回键消失

    这个问题之前一直困扰我,我的需求就是点击对话框外面和按返回键对话框不会消失,按返回键还好解决,拦截下返回键就OK了. 但是点击外面不好解决.之前有人说模态对话框,我看了一会,觉得不是我想要的效果.po ...

  6. gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now

    [root@Gris- FMIS2600bak]# tar -zxvf /home/oradata/FMIS2600DMP.tar.gz gzip: stdin: not in gzip format ...

  7. header 格式

    headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,* ...

  8. Spring重要注解@ControllerAdvice

    @ControllerAdvice是一个@Component,用于定义@ExceptionHandler,@InitBinder和@ModelAttribute方法,适用于所有使用@RequestMa ...

  9. django模型表单ModelForm

    如果你正在构建一个数据库驱动的应用,那么你可能会有与Django的模型紧密映射的表单.比如,你有个BlogComment模型,并且你还想创建一个表单让大家提交评论到这个模型中.在这种情况下,写一个fo ...

  10. SpringBoot获取全局配置文件的属性以及@ConfigurationProperties实现类型安全的配置

    在SpringBoot,可以定义一个全局配置文件,全局配置文件有两种形式: 1). application.properties 2).application.yml 二者的后缀名不同,编辑的格式也不 ...