1.Oracle数据库中的数据是按照表的形式来存储的;
表结构实例:
在数据库操作中,查询是最常用的操作,也是最复杂的操作。根据不同的需求可以写出不同的SQL语句,甚至同一个需求也可以写出多个SQL语句。就像数学中的一题多解一样,其中肯定有一种高效率的写法。所以写好一个SQL语句是非常重要的,它甚至可以影响程序的执行效率,进而决定程序的好坏。
为了从数据库中查询数据,需要使用SQL中的select语句。(关键字不区分大小写,规范的操作是关键字大写),有时候并不需要获取表中所有数据,也可以使用SQL中的一些关键字来对行或者列进行限制。
使用select语句可以进行列选择,即选择表中的列,这些列就是要获取的制定列;使用select语句还可以进行行选择,即根据条件选择表中的行,并返回这些指定的行。使用select语句还可以进行多表连接,这些数据原本就存储在不同的表中,通过select语句在他们之间建立连接,形成一个满足特定连接需求的数据集合。
2.基本select语句
select语句的基本语法形式如下:
SELECT *|字段名|表达式 FROM 表名 [WHERE 条件 [ORDER BY 字段名]]
在最简单的形式中,select语句必须包含一个select子句,制定需要显示的字段;还需要一个FROM子句,指定从那个表获取数据。
语法解释如下。
- *:选择表中的所有字段。
- 字段名:选择表中的字段名称,可以选择多个字段,各个字段间用逗号分隔。(列名)
- 表达式:由字段、函数组成。
- 表名:指定包含字段的表。
- where 条件:查询的条件,可以通过该条件进行行选择。
- order by 字段名:要求在查询结果中进行排序,默认是升序ASC,若希望是降序则使用关键字DESC。
新建一个SQL文件进行写代码;
注意:点击螺帽按钮进行执行语句,也可以使用F8快捷键来执行。
假设要通过SQL语句查询emp表中的所有列、所有行的数据,可以使用下面的语句:
select * from emp;
结果如上图;
注意:在表的上面一绿色箭头,用来显示余下屏幕中未显示的数据(即被屏幕遮挡的数据信息)。
还可以通过字段名来查询,例如:
select ename,job,sal from emp;
查询结果为:
3.算术表达式
数据库表中存储的数据,可能并不是最终要显示的数据,会存在需要修改数据显示内容以达到显示所需数据的目的,这样就可能会用到算数表达式。一个算数表达式可以包含字段名、固定数字值和算数运算符。
Oracle数据库中的算术运算符没有Java的算术运算符丰富,只有“+”、“-”、“*”、“/”四个,其中“/”运算符的结果是浮点数。求余运算符只能借助函数MOD(x,y)来完成,这个函数的作用就是返回x除以y的余数。
要特别说明一点,在Oracle中,可以对DATE和TIMESTAMP类型进行加、减操作。
例如显示员工工作12个月工资都涨了500的工资,查询姓名,工作和工资:
select ename,job,sal*12+500 from emp;
结果为:
4.字段别名
在显示月薪、年薪的例子中,月薪字段的标题为“SAL*12+500”,这样的描述难以理解,不能满足用户的需求,接下来通过字段别名的方法来解决这个问题。
在select所选的字段后面可以指定别名,字段名和别名之间用空格分开。在默认情况下,别名标题用大写字母显示,如果别名中包含空格或者特殊字符(如&或#),或者大小写敏感,需要将别名放在双引号中。
例如:
select ename"姓名",sal"月工资" from emp;
或者select ename as "姓名",sal as "月工资" from emp;
结果:
5.连字运算符
在实际编程过程中,因为业务需求。可能需要将两个或多个字段连接成一个字段显示,这就要用到连字运算符“||”。使用连字运算符,可以进行字段与字段、字段与表达式、字段与常熟值之间的连接,来创建一个字符表达式,连字运算符两边的字段被合并成一个单个的列输出。
例如:select ename||'的工资',sal||'元' from emp;
结果:
注意:如果连接的是数字,则可以不用单引号;如果是字符串或日期类型,则必须使用单引号;如果字符串常量中包含了单引号,则可以使用两个单引号表示一个单引号常量。
6.去重复行
如果查询员工的部门编号,非常简单;
例如:select deptno from emp;
结果:
可以看出有很多的重复部门编号,想去除重复的行可以使用DISTINCT关键字,用来修饰字段。
例如:select distinct deptno from emp;
结果: