数据库基础(三)

数据库基础(三)

聚合函数

概念:

查询时需要做一些数据统计,比如,查询职员表中各部门支援的平均薪水,各部门的员工人数。当需要统计的数据并不能在职员表里直观列出,而是需要根据现在的数据计算得到结果,这种功能可以使用聚合函数来实现。

关键字
  • GROUP BY列 按此列名进行分组
  • HAVING进一步限制分组得到结果
  • MAX(列) 此列的最大值(可统计任何数据类型)
  • MIN(列) 此列的最小值(可统计任何数据类型)
  • AVG(列) 此列的平均值(只能统计数字类型,忽略null)
  • SUM(列) 此列的和值(只能统计数字类型,忽略null)
  • COUNT(列) 计算表中的记录条数,即使数据一样也会记录多条数据,忽略null值
查询语句的执行顺序

当一条查询语句中包含所有的子句,执行顺序依下列子句次序:

  • FROM 子句:执行顺序为从后往前、从右到左,数据量较少的表尽量放在后面。
  • WHERE子句:执行顺序为自下而上、从右到左,将能过滤掉最大数量记录的条件写在WHERE 子句的最右。
  • GROUP BY:执行顺序从左往右分组,最好在GROUP BY前使用WHERE将不需要的记录在GROUP BY之前过滤掉。
  • HAVING子句:消耗资源。尽量避免使用,HAVING 会在检索出所有记录之后才对结果集进行过滤,需要排序等操作。
  • SELECT子句:少用*号,尽量取字段名称,ORACLE 在解析的过程中,通过查询数据字典将*号依次转换成所有的列名, 消耗时间。
  • ORDER BY子句:执行顺序为从左到右排序,消耗资源。
关联查询

在实际应用中所需要的数据,经常会需要查询两个或两个以上的表,这种查询两个或两个以上数据或视图的查询叫做连接查询,连接查询通常建立在存在相互关系的父子表之间。

  • 内连接
    例如:

    	# 第一种
    	SELECT table1.column, table2.column FROM table1,table2 WHERE table1.column1 = table2.column2;
    	# 第二种
    	SELECT table1.column,table2.column FROM table1 JOIN table2 ON table1.column1 = table2.column2;
    
  • 外连接
    :内连接返回两个表中所有满足连接条件的数据记录,在有些情况下,需要返回那些不满足连接条件的记录,需要使用外连接,即不仅返回满足连接条件的记录,还将返回不满足连接条件的记录(包含左连接和右连接)。

    SELECT table1.column, table2.column
    FROM table1 [ LEFT | RIGHT ] OUTER JOIN table2
    ON table1.column1 = table2.column2;
    
笛卡尔积

笛卡尔积指关联操作的每一表的每一行都和其它表的每一行做组合,假设两个表的记录条数分别为x和y,笛卡尔积将返回x*y条数据纪律,当两个表进行关联查询时,如果不写连接条件,得到的结果就是笛卡尔积。

等值连接

等值连接是连接查询中最常见的一种,通常是在有主外键关联关系的表间建立,并将连接条件设定为有关系的列,使用等号“=”连接相关的表。

	SELECT table1.column1, table1.column2, table2.column1, table2.column2
	FROM table1, table2 WHERE table1.column3 = table2.column3;
分页查询

关键字:limit num1,num2
num1表示起始行号(行号从0开始)。
num2表示返回数据记录的条数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值