Oracle数据库SQL从入门到精通 ---(2.2) Oracle基础篇.表内容的修改查询以及聚合分组

在我们有了表之后,如果我们需要对表内容进行修改,那么我们就会使用一些sql语句,比如:

我们想要插入数据可以使用

insert into 表名[(列名1, 列名2...)]   values(值1,值2,...);

修改表中数据我们可以用

update  表名  
set  列1=值1, 列2=值2, ....
where  修改条件

删除表中数据我们可以用

delete from  表名    
where  删除条件;

值得注意的是,在进行完操作之后想要立即得出效果需要commit 提交,不然只会在当前会话生效

这样我们对于表中的数据就可以随时修改了

接下来我们继续学习表的查询语句

在查询表的时候我们有几个信息点,分别是: 我想要查询哪一行 , 哪一列 , 行名是什么 , 列名是什么 , 某一列中的具体信息对应其他列的数据是什么 ......  有一系列信息需要理清楚 , 所以我们依次介绍

首先 如果想查询表中的所有信息 我们使用的语句如下 

select * 
from 表名称

其中 ,  * 代表着所有行和列 , 一般我们总览一下某个表的时候经常使用该语句 

接下来我们加入条件来进行查询

比如 表格中有很多年份 例如 : 2001 , 2002 , 2003 ... ... 

我们想找到 2001 年所对应的其他列数据该如何查询呢 ?

只需要在后面加入限制条件即可

select * 
from 表明
where 代表年的列名= '2001';

例如上面我们插入的水表信息 , 如果我们想选取表中用户 id 为 2 且 在 2012年他的用水信息我们可以如下编写sql语句

select
    *
from t_account
where year=2012 and id=2 ;

那么我们如果想查询某一特定列 , 不像一下子显示出来全部的列咋办呢 ?

只需要把 * 改成对应列名就可以了 

比如我想查t_account表中 id列和year列 

select
    id,
    year
from t_account

这样我们就轻松完成了 ! ! !

值得一提的是,where 后面的条件 当用 and 连接时 是两个或者多个都要符合才可以,用 or 连接是只要一个满足就会显示出来 

怎么样 , 是不是查询很简单 

 那么接下来我们做几个简单的操作 , 顺便引入一些基础的函数

以 t_account这个表为例子 如果我现在想要得到2012年usenum这列里面最大的数 , 我该如何操作呢 ? 

那么我们需要用到函数 max()

sql可以这样写

select 
max(usenum) 
from T_ACCOUNT 
where year= '2012'

 这样 我们就找出了最大值 , 那么我们可以给他命个名 , 比如就叫 'max_usenumber'   

我们可以这样改进一下

 

select 
max(usenum) as max_usenumber
from T_ACCOUNT 
where year= '2012'

这样我们显示出来这一列会被命名为 max_usenumber

同样 最小值 用 min()

平均值 用 avg()

求和使用 sum()

函数有很多,基础的聚合函数是这几个,当然其他函数大家感兴趣可以自行搜索 , 就不在这里一一罗列了 ~

那么我们进一步思考 : 如果有好多信息重复了我们如何去重呢 ?

我们可以使用两种方法

1. 使用 distinct 去重

2. 使用group by 将数据分组

首先第一种方法只需要在想要去重的列前面加上 distinct 即可

如下

select
    distinct owneruuid
from t_account
;

这种方式简单直接

第二种方法分组 , 分组的意思是 相同的数字(或者字符)算作一组 ,并且只显示这一类相同的中的一个, 因为都相同嘛 , 所以只显示一个 , 比如 一堆一摸一样的香蕉 , 既然都一模一样 , 那么我只显示其中 一个香蕉 是不是就可以了? 

那么如果理解了之后 , 我们可以这样写 sql 来实现分组去重 

 

select
  owneruuid
from t_account
group by owneruuid
;

值得注意的是 分完组后 select 后面只能出现 被分组的列以及聚合函数 

譬如 按照 owneruuid 分组之后 , 我们select 后面就只能出现 owneruuid 或者 上面提到的聚合函数 , 例如 sum() , avg()  等等 ... ...

例如

select
  owneruuid,
  sum(id)
from t_account
group by owneruuid
;

虽然聚合 id 这样 是个无厘头的操作 哈哈 , 但是只是举个例子 , 这句话的意思就是 : 按照 owneruuid 分组之后 , 把所有 相同owneruuid后面对应的 id 都给加了起来 , 比如说:

owneruuid 都是 5 的两个数 一个后面 id 是 20 , 另一个后面 id是 21 , 那么sum(id) 这个数是几呢?

答案是 41 , 因为分组聚合之后 把两个 5 变成了 一个 5 , 并且 把两个 5 后面对应的值 加到了一起 得到了41 这个数 

大家不妨多尝试几次分组聚合 , 这块在后面习题方面的应用很广 , 是一个重要的内容 , 当然啦 , 有疑问可以随时评论区讨论 , 欢迎大家来评论哦 ~~~

那么本节内容到此就结束了 , 下一节我们将来到多表联查这一块 ,一起学习 多表联查的几种方式以及后面的精彩内容 ! ! !


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值