(3)数据查询功能②细节

目录

 

(1)字符串操作

(2)元组显示顺序

(3)集合操作

(4)聚集函数与分组

(6)空值(NULL)


(1)字符串操作

                                

匹配规则:

“%” 匹配零个或多个字符

 “_” 匹配任意单个字符

Escape 定义转义字符,以去掉特殊字符的特定含义,使其被作为普通字符看待 如escape “\”,定义 \ 作为转义字符,则可用\%去匹配%,用\_去匹配_

示例:

select    *
       from     T
      where   tname  like  ‘张%’
--找到张姓老师的所有信息

(2)元组显示顺序

示例:

按系名升序列出老师姓名,所在系名,同一系中老师按姓名降序排列
   select    dname,tname
      from     T,D
        where   T.dno = D.dno
  		  order by  dname  asc,tname  desc

 注意:空值按最大处理。

(3)集合操作

集合并:union

集合交:intersect

集合差: except(minus)

提示    集合操作自动去除重复元组,如果要保留重复元组的话,必须用all关键词指明

示例:注意集合操作时两个子句操作产生的集合最好加括号,防止出错,结构也更加清晰。

--两个结果集合进行运算
查询选修了001或002号而没有选003号课程的学生号
(select     sno
	from      SC
   	where   cno= ‘001’  or  cno = ‘002 ‘)
except
	(select     sno
	    from      SC
   	    where     cno = ‘003’)

(4)聚集函数与分组

平均值:avg 最小值:min 最大值:max 总和:sum 记数:count

聚集函数返回的是一个关系,这个关系只有一个元组。

查询学生总人数
SELECT count(*) FROM S;

注意:

①:count(*)和count(属性名)的区别,count(*)统计的是元组的个数,连空都会统计,count(属性名)不会统计空。

②:count(distinct 属性名)这种用法在count(*)中不允许,因为没有两条完全相同的记录。

③:除了count(*)其他聚集函数均忽略空。

依据group by列名相等进行分组,having是对组的选择。

注意:当出现group by后,select列名子句中只能出现分组属性或聚集函数。聚集函数只能用于SELECT子句和GROUP BY中的HAVING子句。

解释:如下,如果select中出现 group by后面未出现的比如cno,那么一个sno可对应对个cno,结果出错不能一一对应,所以select 子句中不能出现未用来分组的属性列

                                         

--及格同学的平均成绩
select    sno,avg(score)
    from     SC
  	group by  sno
 	having  min(socre) >= 60

HAVING和WHERE同样是选择运算,HAVING的对象是分组,WHERE的对象是元组。

(6)空值(NULL)

                                          

不能是等于null(在判断中,在update赋值中可以等于null)。

null参与算术运算,算术表达式结果是null,参与比较运算算术表达式结果是FALSE

count(*)不会忽略空值,count(属性列)会忽略,其他的聚集函数均会忽略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值