2020.6.19-27-数据库原理与应用Day6

3.3 数据查询

  单表查询、连接查询、嵌套查询和集合查询。

3.3.1 语句格式

在这里插入图片描述
其中all和distinct可写或者写的时候二选一,主要是用来表示是否去掉重复的行。默认为all。

3.3.2 单表查询

  查询仅涉及一个表,是一种最简单的查询操作。
  分为:选择表中的若干列;选择表中的若干元组;对查询结果排序;使用集函数;对查询结果分组。

选择表中的若干列

查询指定列
在这里插入图片描述
查询全部列
在这里插入图片描述
查询经过计算的列
在这里插入图片描述
可以看出来原表中是没有年龄这一属性列的,需要取出birth中的年,然后做一系列的运算。
在这里插入图片描述
在这里插入图片描述
如果不起别名,那么查询出来的biao’ge会显示为查询时的表达式。

选择表中的若干元组

消除取值重复的行(distinct)
在这里插入图片描述
查询满足条件的元组
  查询满足指定条件的元组可以通过where子句实现。主要是从行的角度来筛选。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  **通配符%**代表任意长度(长度可以为0)的字符串。
  例:a%b表示以a开头,以b结尾的任意长度的字符串。如acb,afdsdfb,ab等都满足该匹配串。
  通配符_代表任意单个字符。
  例:a_b表示以a开头,以b结尾的长度为3的任意字符串。如asb,arb等都满足该匹配串。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意空值null和0的区别。
在这里插入图片描述
在这里插入图片描述

对查询结果排序

使用order by子句
  可以按一个或多个属性列排序。
  升序:asc,降序:desc,缺省值为升序。当排序列含空值null时。
  asc:排序为空值的元组最后显示;
  desc:排序为空值的最先显示。
在这里插入图片描述

使用集函数(用于统计)

在这里插入图片描述
这里的*代表的是一行,也就是一个元组。
在这里插入图片描述
在这里插入图片描述

对查询结果分组

  使用group by子句将查询结果表按某一列或多列值分组,值相等的为一组。
  对查询结果分组的目的是为了细化集函数的作用对象:
    未对查询结果分组,集函数将作用于整个查询结果
    查询结果分组后,集函数将分别作用于每个组
在这里插入图片描述
注意去掉红字后的前后差别。加上红字,是按照cno分类后各个组的计数。
在这里插入图片描述
  如果分组后还要按一定的条件对这些组进行筛选,最终只输出满足条件的组,则可以使用having短语指定筛选条件。
在这里插入图片描述
这里注意到where和having后面跟的都是条件,那么他们有什么区别呢?
where子句和having短语的区别:作用对象不同。
  where子句作用于基表或视图,从中选择满足条件的元组。
  having短语作用于,从中选择满足条件的组。

在这里插入图片描述
这里查询的就是不及格的成绩在3门以上的学生。

3.3.3 连接查询

  单表查询只是涉及到一张表,但是在实际操作中却经常遇到查询两张或两张以上的表,这里就开始讲解连接查询
  若一个查询同时涉及两个以上的表,则称为连接查询
  连接查询的WHERE子句中用来连接两个表的条件称为连接条件连接谓词
在这里插入图片描述
那么为什么要加上连接条件,接下来的看例子。
首先以s表和sc表为例。
在这里插入图片描述
在这里插入图片描述
可以看出,如果不加条件,那么查询结果就默认将两个表做了广义笛卡尔积,可以看出查询结果中有很多都是不具有实际意义的。
在这里插入图片描述
加上连接条件后,使得表中的数据具有了实际的意义。

SQL中连接查询的主要类型:
  等值与非等值连接查询;
  自身连接查询;
  外连接查询;
  复合条件连接查询。
1. 等值与非等值连接查询
  当连接运算符为“="时,称为等值连接。使用其他运算符称为非等值连接。常用的是等值连接。
在这里插入图片描述
是在上边查询结果的基础上又加上一个条件。
2. 自身连接
  一个表与其自己进行连接,称为表的自身连接;
  需要给表起别名以示区别;
  由于所有属性名都是同名属性,因此必须使用表别名前缀
在这里插入图片描述
在这里插入图片描述
其中a和b是对同一个表起的不同别名。
在使用自身链接的时候需要注意,给表起别名,查询表中列的时候注意加上别名前缀。
3.外连接
  **悬浮元组:**两个关系在做自然连接时被舍弃的元组称为悬浮元组;
  **外连接:**如果把悬浮元组也保存在自然连接的结果关系中,而在其他属性上填空值,那么这种连接就叫做外连接。
左外连:如果只保留左边关系R中的悬浮元组就叫做左外连(left outer join)
右外连:如果只保留右边关系S中的悬浮元组就叫做右外连(right outer join)
在这里插入图片描述
以上是左外连,有点难以理解了。。
4. 复合条件连接
  where子句中含多个条件时,称为复合条件连接。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值