Oracle数据库应用(伪列与伪表、连接符、联合主键、内连接和外连接、分组函数)

一、伪列与伪表

1.1、伪列

创建表时,没有定义过的列,不在表结构中,为存储在表中,查询后,自动附加的列,查询时,自动生成值,只能查询,不能update、delete、insert。常见的伪列分为以下几种。详细介绍rowid、rownum。

CURRVAL 和 NEXTVAL 使用序列号的保留字

LEVEL 查询数据所对应的层级(了解)

ROWID 记录的唯一标识

ROWNUM 限制查询结果集的数量

1.1.1、currval和nextval使用序列号的保留字

CURRVAL:返回当前sequence值

NEXTVAL:增加sequence并返回下一个值

1.1.2、一般用法:

sequence.CURRVAL

sequence.NEXTVAL

1.1.3、RowID:储存表中每一行在记录的物理地址,唯一可以标识表中的一行,插入记录产生的。使用RowID可以快速的定位表中的某一行。(是一种数据类型,不可更改的,索引都是基于伪列的,使用RowID是查询效率最高的一种方式)。一旦一行数据插入数据库,则rowid在该行的生命周期内是唯一的,即使该行产生行迁移,行的rowid也不会改变

例如: select  rowid as 伪列 ,  e.job from  emp e

1.1.4、RowNum:是查询数据生成的,临时的,通常分页的时候用到。

在对表的查询中,每返回一条记录,rownum伪列就返回一个数字,代表查询返回的行的编号

例如:select * from (select rownum rn,t1.* from(select * from scott.emp order by empno desc) t1 where rownum>1*2)t2 where rn<=3*2。

1.2、伪表

1.2.1、DUAL

该表主要目的是为了保证在使用SELECT语句中的语句的完整性而提供的

SELECT  SYSDATE  from  dual

二、连接符

把列与列,列与字符连接在一起。    

用 ‘||’表示。 可以用来‘合成’列

select ename||job from emp;

SELECT   ename || ' 的岗位是 ' || job  as 数据  from emp

三、联合主键

方法1:CREATE  table result(

              studntno  CHAR(5)  ,

              subjectid number  ,

              score  number(5,2),

               primary key(列1,列2)

)

方法2:alter table 表名

            add constraint 主键约束名 primary key(列1,列2)

四、内连接和外链接

内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行

外连接: 两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行 ,这种连接称为左(或右)               外连接。没有匹配的行时, 结果表中相应的列为空(NULL)

五、分组函数

1.1、分组函数作用于一组数据,并对一组数据返回一个值

         AVG, COUNT,MAX,MIN,SUM

         COUNT(计数)函数

         COUNT(*) 返回表中记录总数,适用于任意数据类型

         COUNT(expr) 返回expr不为空的记录总数

1.2、DISTINCT 关键字

              COUNT(DISTINCT expr)返回expr非空且不重复的记录总数

1.3、GROUP BY

         过滤分组: HAVING 子句

         嵌套组函数

         显示各部门平均工资的最大值

注意: 不能在 WHERE 子句中使用组函数。

         可以在 HAVING 子句中使用组函数。

猜你喜欢

转载自blog.csdn.net/qq_41139281/article/details/81086190