day7-java&oracle总结

JAVA

变量的作用域和生存期:

变量的作用域:

   作用域从变量定义的位置开始,到该变量所在的那对大括号结束;

生命周期:

   变量从定义的位置开始就在内存中活了;

   变量到达它所在的作用域的时候就在内存中消失了;

数 组:

用于存储同一类型数据的一个容器。好处:可以对该容器中的数据进行编号,从0开始。数组用于封装数据,就是一个具体的实体。

定义数组的两种方式。

1)、元素类型[] 变量名 = new 元素类型[元素的个数];

2)、元素类型[] 变量名 = {元素1,元素2...};

元素类型[] 变量名 = new 元素类型[]{元素1,元素2...};

 

冒泡排序:

每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

算法:

public static void main(String[] args) {

                    //为冒泡排序  从小到大进行排序

                   intas[] = {1,25,4,68,102,8,99,97};

                   for(inti=0;i<as.length-1;i++){

                           

                            for(intj=0;j<as.length-1-i;j++){

                                     if(as[j]>as[j+1]){

                                               //交换 as[j] 和 as[j+1]的值

                                               inttemp = as[j];

                                               as[j]= as[j+1];

                                               as[j+1]= temp;

                                     }

                            }

                           

                   }

                   //打印数组

                   for(inti = 0 ; i<as.length;i++){

                            System.out.println(as[i]);

                   }

选择排序

在要排序的一组数中,选出最小的一个数与第一个位置的数交换;

然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止

算法:

int ass[] = {200,1,25,4,68,102,8,99,97};

                   for(inti=0;i<ass.length;i++){

                            //因为已经排序过的数字不参与排序所以为j=i+1

                            for(intj=i+1;j<ass.length;j++){

                                     if(ass[i]>ass[j]){

                                               inttemp = ass[i];

                                               ass[i]= ass[j];

                                               ass[j]= temp;

                                     }

                            }

                           

                   }

                  

                   for(inti = 0; i<ass.length;i++){

                            System.out.println(ass[i]);

                   }

 

         }

}

 

 

Oracle

聚合函数

聚合函数:一组值进行计算,并返回计算后的值,具有统计数据的作用。分组函数会自动忽略空值。

sum

语法:sum(distinct|all)

参数:all表示对所有的值 (缺省),distinct只对不同的值

解释:求总和

示例:

select sum(distinct sal) from emp;

select sum(all sal) from emp;

avg

语法:avg(distinct|all)

参数:all表示对所有的值 (缺省),distinct只对不同的值

解释:求平均值

示例:

select avg(distinct sal) from emp;

select avg(all sal) from emp;

max

语法:max(distinct|all)

参数:all表示对所有的值 (缺省),distinct只对不同的值

解释:求最大值

示例:

select max(distinct sal) from emp;

min

语法:min(distinct|all)

参数:all表示对所有的值 (缺省),distinct只对不同的值

解释:求最小值

示例:

select min(all sal) from emp;

count

语法:count(distinct|all)

参数:all表示对所有的值 (缺省),distinct只对不同的值(相同值只取一次)

解释:求记录、数据个数。

示例:

select count(sal) from emp;

select count(distinct sal) from emp;

分组查询

       在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析。创建分组是通过GROUP BY子句实现的。与WHERE子句不同,GROUP BY子句用于归纳信息类型,以汇总相关数据。GROUP BY的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。

group by

语法:select 字段名,聚合函数()  

from 表名

group by 字段名;

解释:主要用来对一组数进行统计

示例:

求每个部门的平均工资,要求显示:部门号,部门的平均工资

select deptno ,avg(sal) from emp group by deptno;

说明:

在使用groupby关键字时,在select列表中可以指定的项目是有限制的,select语句中仅许以下几项:

(1)被分组的列

(2)为每个分组返回一个值得表达式,例如用一个列名作为参数的聚合函数

group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。

当GROUPBY子句中用于分组的列中出现NULL值时,将所有的NULL值分在同一组,即认为它们是“相等”的。

having

语法:SELECT column,SUM(column) 

FROM table

GROUP BYcolumn

HAVING SUM(column)condition value

解释:

对分组统计再加限制条件进行筛选

示例:

select deptno,count(*),sum(sal)

from emp

group by deptno

having count(*)>=5;

说明:HAVING通常与GROUP BY子句同时使用。当然sum()也可以是其他聚合函数。

HAVING子句与WHERE子句的区别

having子句和where子句的相似之处在于,它也定义搜索条件。都是对查询结果的一种筛选。不同之处在于:

1、    where不能跟在group by子句后面,having是跟group by子句一起连用的,跟在其后面。

2、where条件中不能有聚合函数,而having可以有。

3、where子句只能接收from子句输出的数据,对其进行筛选;having对使用group by进行分组统计后的结果进行进一步的筛选。

语句执行顺序

select列 from 表列表名/视图列表名

where 条件

groupby (列)

having条件

orderby 列列表

 

执行顺序:

where group having select order

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值