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=''--正常执行,注意: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中给表和列起别名的更多相关文章
- Oracle中truncate表不更新last_ddl_time列
Oracle中truncate表不更新last_ddl_time列 问题描述 最近发现数据库中定时job的某张表,每天都有truncate动作,由于调整了job的interval时间,想查看last_ ...
- 【转】Oracle中dual表的用途介绍
原文:Oracle中dual表的用途介绍 [导读]dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情. dual是一个虚拟表, ...
- 如何在Oracle中建立表和表空间?
1.建表空间 ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方 ...
- 用SQL语句创建和删除Access数据库中的表;添加列和删除列
用SQL语句创建和删除Access数据库中的表;添加列和删除列 Posted on 2009-08-11 13:42 yunbo 阅读(1240) 评论(0) 编辑 收藏 用SQL语句创建和删除Acc ...
- oracle 中删除表 drop delete truncate
oracle 中删除表 drop delete truncate 相同点,使用drop delete truncate 都会删除表中的内容 drop table 表名 delete from 表名 ...
- 向oracle中的表插入数据的方法
向oracle中的表插入数据的方法有以下几种: 假设表名为User 第一种方法:select t.*,rowid from User t;-->点击钥匙那个标记就可向表中添加数据 第二种方法:s ...
- Sql Server中判断表、列不存在则创建的方法[转]
一.Sql Server中如何判断表中某列是否存在 首先跟大家分享Sql Server中判断表中某列是否存在的两个方法,方法示例如下: 比如说要判断表A中的字段C是否存在两个方法: 第一种方法 ? ...
- MSSQL·查看DB中所有表及列的相关信息
阅文时长 | 0.6分钟 字数统计 | 1013.6字符 主要内容 | 1.引言&背景 2.声明与参考资料 『MSSQL·查看DB中所有表及列的相关信息』 编写人 | SCscHero 编写时 ...
- Oracle中dual表的用途介绍
导读]dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情. dual是一个虚拟表,用来构成select的语法规则,or ...
随机推荐
- 使用路由传参时,query与params的区别!
query 1:参数会在地址栏显示 2:参数不需要在路由的path后接:args1/:args2 3:获取参数用this.$route.query.args1 params 1:参数需要在路由的pat ...
- HDU 5976 Detachment(拆分)
HDU 5976 Detachment(拆分) 00 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem D ...
- vue.js精讲01
笔记及源码地址 : https://github.com/wll8/vue_note 01 2017-09-13 view一个 mvvm框架(库),和 ag 类似.比较小巧,容易上手. mvc: mv ...
- 【译】第37节---EF6-异步查询和保存
原文:http://www.entityframeworktutorial.net/entityframework6/async-query-and-save.aspx 你可以在.NET4.5下使用 ...
- 51nod 1689 逛街(优先队列)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1689 题意: 题意: 枚举终点,这样就确定路上的花费,接下来只需要计算进 ...
- java根据URL获取HTML内容
之前我写脚本,是想获取HTML内容的. 但是呢...一方面编码困扰着我,于是我写了这个: java根据URL获取网页编码 然后呢,每个网站是不是GZIP还得判断,贼麻烦... 但是没办法啊,麻烦也得写 ...
- 蚂蚁金服 Service Mesh 渐进式迁移方案|Service Mesh Meetup 实录
小蚂蚁说: 本文是基于在 Service Mesher Meetup 上海站的主题分享<蚂蚁金服 Service Mesh 渐进式迁移方案>内容整理,完整的分享 PPT 获取方式见文章底部 ...
- Codeforces 85 D. Sum of Medians
题目链接:http://codeforces.com/contest/85/problem/D 做法果然男默女泪啊..... 大概就是直接开了一个$vector$每次插入删除都用自带的$insert$ ...
- 初识unittest
unittest是python自带的一个标准木块,单元测试框架 unittest基本使用方法: 我们需要先导入unittest (import unittest) import unittest 定义 ...
- Mysql简单入门
这两天比较懒,没有学习,这个是我问一个学java的小伙伴要的sql的总结资料,大体语句全在上面了,复制到博客上,以后忘记可以查看 #1命令行连接MySQLmsyql -u root -proot;#2 ...