oracle学习 第一章 简单的查询语句 ——04

1.5 如何在SQL语句中使用算数表达式

可以在SQL语句中使用表达式。在表达式中可以使用一下4种运算符:+,-,*,/

它们分别代表加、减、乘、除。

设想一下,在某一天,有个社会团体和工会团体参观你们的公司,您的老板为了树立公司的光辉形象,它要求您把午餐和茶水的费用加到员工的工资里并打印一张工资清单。于是您大概算了一下,其费用约合500元/月。之后您用例1-11的查询得到了老板索要的员工的工资清单。

例 1-11

SQL> SELECT empno,ename,sal,500+sal
  2  FROM emp;

例 1-11结果

小提示:如果你发现你查询的结果每10行分页一次,你可以使用语句

SQL>SET PAGESIZE X
--X表示显示的行数,你可以设置一个大的值比如2000

当您把例1-11显示的结果拿给老板时,老板认为应该用年薪并且不能列出原工资。因此您将例1-11的查询语句做了一些修改并产生了例1-12的SQL语句。

例 1-12

SQL> SELECT empno,ename,500+sal*12
  2  FROM emp;

例 1-12结果

看到例1-12显示的结果会让您大吃一惊。很显然这并不是老板索要的结果。其原因是运算符的优先级在作怪。

运算符的优先级是:

丶 先乘除后加减;

丶 在表达式中同一优先级运算符计算次序是从左到右;

丶 如果使用了括号,括号中的运算优先;

丶 如果有多重括号嵌套,内层括号中的运算优先。

因此您不得不再次重新书写例1-13的SQL语句如下。

例 1-13

SQL> SELECT empno,ename,(500+sal)*12
  2  FROM emp;

例 1-13结果

毫无疑问,例1-13显示的结果就是老板所要的员工的工资清单。虽然你得到了正确的结果,但是显示的列标确实令人费解,特别是对您的老板和那些团体的头头们,因为他们对Oracle数据库一窍不通。

1.6 怎样在SQL语句中使用列的别名

为了让老板们明白,您不辞幸苦的再次修改了例1-13中的查询语句,这次,您使用了列的别名,发出了例1-14的SQL语句

例 1-14

SQL> SELECT empno AS "Employee Number",
  2       ename name,(500+sal)*12  "Annual Salary"
  3  FROM emp;

例 1-14结果

上面例1-14显示的结果正是您老板想要的结果。

Oracle有许多Unix和C的影子,在为列命名时,大量使用缩写方式,例如salary(工资)---sal。这些以缩写方式表示列明的好出之一就是它减少了输入量,但对非计算机专业的人来说,这些缩写方式的列明如同天数一般。有没有一种方法既能满足Oracle专业人员习惯于使用缩写的癖好,又使非计算机专业人员看到显示的结果一目了然呢?为列起一个别名就解决了这一难题。

给一列起一个别名的方法很简单。您只需要在列明和别名之间放上AS
或者空格就可以了。虽然从语句的易读性角度来说应该使用
AS 关键字,但是使用这一关键字要多输入两个字符,所以您会发现许多的Oracle专业人员很少使用 AS 这一关键字。

别名对处理表达式表示的列非常有用。您可能已经注意到了,当别名没有被双引号括起来时,别名的显示结果为大写。如果别名中包含了特殊字符,或想别名原样显示,您举要使用双引号把别名括起来。

1.7 连接运算符

您的老板对您为他做的员工的工资清单很满意,但他iang显示的结果是一个完整的英文句子,而且表达式的列标(就是表头)为:Employee’s Salary。这样,那些团体的头头们更容易理解。为此,您不得不再次修改查询语句,写下了例1-15的SQL语句:(可怜的程序员,就是不断的该改改!)

例 1-15

SQL> SELECT ename||'annual salary is '||(500+sal)*12 "Employee's Salary"
  2  FROM emp;

例 1-15结果

当您把这份报告呈交给老板的时候,老板灿烂的微笑告诉您,这正是他所期望的报告,如果您使用的是中文系统,您也可以使用例1-16的带有中文的查询语句。

例 1-16

SQL> SELECT ename||'年薪为'||(500+sal)*12 "员工的年薪"
  2  FROM emp;

例 1-16 结果

在这一查询语句中,我们使用了文本字符串(liteal)和连接运算符。

文本字符串是包含在SELECT子句中的字符、数字或表达式,而不是任何的列明或者列的别名。如文本字符是日起类型和字符型,您必须将他们用单引号括起来。每个字符串在每行输出结果中都输出一次。

连接运算符由两个竖线(||)表示,它把一个或多个列或字符串连接在一起。

1.8 DISTINCT 运算符

设想您刚刚被公司聘为Oracle(DBA)管理员,您想知道您的公司究竟有多少个部门,您可能发出例1-17的查询语句。

例 1-17

SQL> SELECT deptno
  2  FROM emp;

例1-17 结果

Oracle显示了全部的记录,这是Oracle的默认显示方式。如果您所在的公司是一家大型跨国公司,它拥有一百多万名员工,您可以想象出这一查询会造成什么样的后果。

您可以使用DISTINCT帮助您去掉重复的行。请看例1-18语句的查询。

例 1-18

SQL> SELECT DISTINCT deptno
  2  FROM emp;

例1-18结果

很显然,例1-18的结果要比例1-17的结果清楚多了。

注意:当查询比较大的表时应尽可能的避免使用DISTINCT,因为Oracle系统是通过排序的方式来完成DISTINCT这一功能的,所以它会造成Oracle系统的效率降低。通常您可以使用不同的方式来完成同样的工作,例如可以使用例1-19的查询语句来得到所需的部门的信息。

例 1-19

SQL> SELECT deptno
  2  FROM dept;

例 1-19 结果

例1-19查询与前面的插叙一样得到了所有的部门号,但对Oracle系统没有什么冲击,因为部门好(deptno)在dept表中本身就是唯一的。

DISTINCT可以作用于多列,此时显示的结果为每一种列组合只显示一行。例如1-20.

例 1-20

SQL> SELECT DISTINCT deptno,job
  2  FROM emp;

例 1-20 结果

到此为止,我们已经讨论了最基本的查询语句。下面将给出基本查询语句的格式。

1.9 基本查询语句的格式

在这一章中omen只学习了一个基本的查询语句。它只包含了两个子句SELECT和FRO,其格式如下

SELECT  *|{[DISTINCT ]列表,...}

FROM 表名:

其中

列表:
列名|表达式 [别名]

其中,SELECT  * FROM
表名; 为从表名所指定的表中选择所有的列;

SELECT DISTINCT 
列表,  ...

FROM 
表名;

为从表名指定的表中选择列表所规定的列,但不显示重复的数据行(记录)。

-----------------------------------↓↓↓下面是本章小结↓↓↓-----------------------------------------

1.10 应该掌握的内容

在学习下一章之前,请检查您是否已经掌握了以下的内容:(貌似又忘得差不多了,汗!)

1、在查询语句中哪两个子句是必须的?

2、什么是投影操作?

3、怎样在查询语句中选择特定的列激烈的顺序。

4、书写查询语句的约定。

5、什么叫语句?

6、什么叫子句?

7、列标题的默认显示格式。

8、字符和日起理性的数据默认显示格式。

9、数字类型数据的默认显示格式。

10、SQL语句中的算术表达式及它们的优先级。

11、SQL语句中列的别名及其使用。

12、怎样使用文本字符串(literal)和连接运算符(||)?

13、怎样使用DISTINCT关键字以及使用它可能产生的问题。

时间: 2024-10-09 21:21:14

oracle学习 第一章 简单的查询语句 ——04的相关文章

oracle学习 第一章 简单的查询语句 ——03

1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示所有的列,它与在select 之后列出所有的列名是一样的.查询语句以分号( ; )结束.emp(employee)是一个员工表. 1.2 在查询语句中如何选择特定的列 在平时的使用过程中我们需要的往往只是一张表中的某一条或者某几条数据而已,但上面查询的结果可能看起来比较乱.如果我们指向知道若干个特定列的信息,使用select 语句很容易就可以做到.就好比我们去菜市场买东西,不会

Oracle学习——第一章

Oracle数据库特点:安全性高,数据类型丰富 Oracle是由美国甲骨文公司开发的一款数据库产品 ---------------------------------------------------------------------- Oracle版本: oracle oracle8i-------------------- internet   支持通过网络访问 oracle9i oracle10G ------------------- Grid   支持网络运算 oracle11G

web学习第一章

web学习第一章 我是大概9月10日开始走上IT之路的,一开始学习了小段时间的自动化办公软件, 昨天我开始学习客户端网页编程,我了解什么是WEB,一些比较老古董的计算模式和发展历史,印象最让我深刻的是WEB应用程序的工作原理,因为老师为了解释这个画来很多遍图,我当时想的是:为什么还有人没懂?我都听困了. 直到老师说要抽人起来画图,我一下就回过神来了,于是乎老师抽人开始了,我看见同学一个个的被抽上去画,我发现我有些东西怎么没看见过,在他们画的同时我就在下面学,错一个,我就记一个. 今天老师还是继续

oracle学习 第二章 限制性查询和数据的排序 ——03

这里,我们接着上一小节2.6留下的问题:如果要查询的字符串中含有"_"或"%",又该怎样处理呢? 开始今天的学习. 2.7  如何使用转义(escape)操作符 可以是用个转义(escape)关键字来完成此任务.为了进行练习,我们必须先创建一个临时的表,之后再往该表中插入1行记录,其包含通配符.可能您现在还可能十分不理解例2-13和例2-14的SQL语句.没有问题,您只要照着输入就可以了. 例 2-13 SQL> CREATE TABLE dept_temp

C++ Primer快速学习 第一章 入门

很多人说C++Primer不适合于入门,本系列入门文章向大家证明了:这是一个谎言. 第一章 入门 本章介绍 C++ 的大部分基本要素:内置类型.库类型.类类型.变量.表 达式.语句和函数. 1.1. 编写简单的 C++ 程序 每个 C++ 程序都包含一个或多个 函数 ,而且必须有一个命名为 main.函数 由执行函数功能的语句序列组成.操作系统通过调用 main 函数来执行程序, main 函数则执行组成自己的语句并返回一个值给操作系统. 下面是一个简单的 main 函数,它不执行任何功能,只是

【Oracle】第一章创建授权

ORACLE 第一章创建授权 通过命令查看控制文件,数据文件,日志文件: 控制文件 : Desc v$controlfile; 数据文件 :desc v$datafile; 日志文件: desc v$logfile; 1. 执行导入  .sql文件 命令语法如下: directory_path\store_schema.sql 其中 directory_path 是保存 store_schema.sql 脚本的目录和路径 例如:以下代码演示了导入C盘下的 sql 脚本文件: @c:\sql\st

Java基础知识二次学习-- 第一章 java基础

基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一章  JAVA简介 时间:2017年4月24日10:23:32 章节:01章_02节 内容:jdk的配置与安装 完成情况:已经完成,cmd中javac提示出相关命令 时间:2017年4月24日10:30:39 章节:01章_04节 内容:输出HelloWorld 完成情况: 已经完成 javac先将

学习第一章 Android系统的编译和移植实例后的心得体会

说起来,去年在岳老师的带领下就接触了嵌入式系统的编译和移植.而现在我们又开始接触Android系统的编译和移植.第一章主要介绍安卓系统的编译和移植技术.其实安卓和嵌入式非常相似. 安卓 移植涉及的主要过程大致分为六步:1.下载安卓linux内核. 2.安装交叉工具链.3.移植安卓linux内核支持EZ6410平台.4.安装安卓SDK.4.获得安卓根文件系统.5.设置系统环境,完成安卓正常启动.虽然步骤不多,但是涉及了很多东西.在开始内核移植之前,先完成工具链的搭建.在移植过程中会发现硬件差异.差

Oracle学习笔记(5)——查询

基本查询语句 SELECT [DISTINCT] column_name1,...|* FROM table_name [WHERE conditions] 在SQL*PLUS中设置格式 更改显示字段名:COLUMN column_name HEADING new_name   (注意COLUMN可以简写成COL) 例如: col username heading 用户名; select * from users; 设置显示结果的格式:COLUMN column_name FORMAT data