数据库(函数),表设

函数:

根据函数的返回结果,分为单行函数和多行函数

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 删除主表的同时级联删除主从表之间约束关系。

 

posted @ 2019-12-11 18:57  凌晨之曦  阅读(234)  评论(0)    收藏  举报