数据库(函数),表设
函数:
根据函数的返回结果,分为单行函数和多行函数
1、单行函数:一条记录返回一个结果
2、多行函数 组函数 聚合函数 (重点) :多条记录 返回一个结果 (重点)
组函数:
avg 、sum、 min、 max、 count
注意点:
- 格式:select 数据 from 数据源 where 行过滤条件 group by 分组字段 having 组过滤条件 order by 排序字段..; 解析步骤:1)、from 2)、where 3)、group 4)、having 5)、select 6)、order by
- group by :分组 1)、select 出现分组函数,就不能使用 非分组信息,可以使用 group by 字段 2)、group by字段 可以不出现 select 中 ,反之select 除组函数外的,其他字段必须出现在group by 中
- where :过滤行记录,不能使用组函数, having:过滤组 可以使用组函数
判定函数
格式:decode(字段,值1,结果1,值2,结果2...,默认结果) 如果以上值都不匹配,最终函数的结果为默认结果.
--rowid和rownum,相当与伪列
rowid 相当于对象的地址,相当于表中每一条记录的地址,当数据插入到表中时候,就存在的rowid,根据地址转化的,是每一条记录的唯一;
rownum 结果集的序号,只要有一个结果集,这个结果集就存在自己的rownum,结果集中数据的编号,rownum从1开始,每次+1;
分页:
步骤:
1.首先rownum是基于结果集进行编号的。。。
2.ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。
3.列如:select se.*,rownum ro from scott.emp se where ro>5;
从emp表中,取出第一条记录,结果集中现在为空,rownum根据结果集,给它编号1,然后进行条件判断,不满足,丢掉。取出第二条记录,编号为1.。。。。
所以没有一条记录满足条件,自然查询结果为空了。。。
4.解决方法:
1.使用子查询和rownum,先将rownum的结果固定,再进行查询
2.通过子查询和row_number,进行分页查询
例:取出表emp中的5-9条记录

多表链接:
92语法:内连接 :有where ,满足条件才显示,不满足不显示
99语法:select 数据 from 表1,表2,表3...; join
(92)外连接
左外连接|左连接 右外连接|右连接 :主表在逗号的左边叫做左连接,主表在逗号的右边叫做右连接(+)在加号对面的是主表
主表: 主表中的数据无论是否满足连接条件都要显示
(99) left join左连接 right join右连接 全连接 full join 两边的表都作为主表
表设计:
满足三范式 表名 字段名 类型 表和表之间的关系
格式:
create table 表名(
字段名 字段类型,
字段名 字段类型,
....
)
创建表的同时添加约束 (给字段添加要求,在字段后添加),约束没有约束名字的,由系统分配
主键约束:primary key 非空约束:not null 检查约束:(6 char) 唯一约束: unique
主外键关系
当两张表存在主从表关系,删除表的时候,需要注意:默认先删除从表,再删除主表;cascade constraints 删除主表的同时级联删除主从表之间约束关系。



浙公网安备 33010602011771号