一、伪列与伪表
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 子句中使用组函数。