1、查询语句分组:根据指定的规则对数据进行分组:
--group by 分组字段
语法:select 数据 from 数据源 where 行过滤条件 group by 分组having 组过滤信息 order by 排序字段;
执行流程:from ->where ->group by ->having ->select ->order by
如果select 后面一旦出现组函数,不能使用非分组字段
如果一旦分组,只能使用分组字段或者组函数
where中 不能使用字段别名,不能使用组函数,因为执行流程问题
3、92语法
select 数据 from 数据源1,数据源2...where 行过滤条件 group by 分组字段1,分组字段2.. having 组过滤信息 order by排序字段1...desc|asc;
--笛卡尔积:交叉连接
--表连接条件:过滤通过连表产生的不满足要求的表连接数据
--等值连接:判断两个数据源中的两个字段值相等或者不相等
--非等值连接:判断区间,判断范围的条件
--92语法中表连接条件定义在where后面
--如果要使用的字段来自于多个数据源中都存在,需要指明限定词\出处
--自连接:一张表作为两个数据源使用
--内连接:满足连接条件查询到不满足过滤掉
--外连接:某一个数据中的数据不满足连接条件的时候也能显示
--左外连接 | 左连接:from后面主表在左边
--右外连接 | 左连接:from后面主表在左边
--主表:主表中的数据无论是否满足连接条件都能显示
--92语法:在连接条件位置,主表的对面添加(+)
4、99语法
--自然连接:自动做等值连接(同名字段|主外键字段)natural join
注意:在自然连接中同名字段的不能使用限定词
--join ...using(同名字段)指定使用哪个同名字段做等值连接
注意:在join...using中同名字段不能使用限定词
--既能做等值连接也能做非等值连接
--数据源1 join 数据源2 on 连接条件
注意:在join..on中同名字段必须使用限定词
--内连接:(inner) join
--外连接:主表中的数据无论是否满足连接条件都显示
--左外连接|左连接:left join
--右外连接|右连接:right join
--全连接:两张表都是主表 full join
5、表设计
--字段类型:number char varchar2 date
--字段约束:
主键约束(唯一->非空)
唯一约束
非空约束
默认约束
检查约束
外键约束
设计两张表:
父表|主表
子表|从表:子表中添加一个外键字段,关联主表的主键字段
外键字段的值只能为主表中主键字段已有的值
--设计表的三范式:
最终目的避免数据重复冗余
1NF->列不可再分最下原子(避免重复)
2NF->主键依赖(确定唯一)
3NF->消除传递依赖(建立主外键关联 拆分表)