【数据库系统概论】第3章-关系数据库标准语言SQL(2)

文章目录

    • 3.4 数据查询
      • 3.4.1 单表查询
      • 3.4.2 连接查询
      • 3.4.3嵌套查询
      • 3.4.4 集合查询
      • 3.4.5 基于派生表的查询
      • 3.4.6 select 语句的目标列

3.4 数据查询

  • 格式
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第1张图片
    SQL执行顺序

3.4.1 单表查询

  1. 基础查询
select * from student
// 不重复
select distinct sname from student
// 命名
select s.sname 姓名 from student s
select sname from student where sage > 20
// 等价 or
select sname from student where sage in (21,22)
select sname from student where sage >= 21 and sage <= 23
// [] 闭区间
select sname from student where sage between 21 and 23
select sname from student where sage < 21 or sage > 23
select sname from student where sage not between 21 and 23
// 模糊查询
// 姓马的
select sname from student where sname like '马%'
// 马?梅的
select sname from student where sname like '马_梅'
// 不叫马冬梅的
select sname from student where sname not like '马冬梅'
// 'DB_'开头的,定义转移字符
select sage from student where sname like 'DB\_%' escape '\'
// 涉及空值的
select sname from student where address is null
select sname from student where address is not null

  1. order by
// order by, 默认asc
select sname from studnent order by age 
// 年龄相同按学号升序排列
select sname from studnent order by age desc, sno asc
  1. 聚集函数
    搭配 distinct 食用会更佳
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第2张图片
  2. group by
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第3张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第4张图片
    需要强调的一点是:select的字段除聚集函数外,必须在group by中出现。而且聚集函数不能作为where子句的条件
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第5张图片
    要先通过group by 分组后再用Having + avg()
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第6张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第7张图片

3.4.2 连接查询

  1. 等值连接与非等值连接
  • 等值连接:where中用 ’ = '过滤笛卡尔积结果
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第8张图片
    例题:
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第9张图片
  1. 自身连接
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第10张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第11张图片
  2. 外连接
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第12张图片
    格式:
    select … from a left join b on 连接条件,不用where作为介词
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第13张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第14张图片
  • 题目
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第15张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第16张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第17张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第18张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第19张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第20张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第21张图片
  1. 多表连接
    两个以上的表进行连接
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第22张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第23张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第24张图片

3.4.3嵌套查询

  1. 子查询基础
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第25张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第26张图片
    在这里插入图片描述

  2. 不相关子查询
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第27张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第28张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第29张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第30张图片

  3. 带in谓词的子查询
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第31张图片

  4. 带ANY(SOME) 或ALL的子查询
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第32张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第33张图片
    小于任意一个即可。
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第34张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第35张图片

  5. 带EXISTS谓词的子查询
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第36张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第37张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第38张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第39张图片

  • 题目
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第40张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第41张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第42张图片
    【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第43张图片

3.4.4 集合查询

【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第44张图片
【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第45张图片
【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第46张图片
【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第47张图片

3.4.5 基于派生表的查询

在这里插入图片描述
【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第48张图片
【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第49张图片

3.4.6 select 语句的目标列

【数据库系统概论】第3章-关系数据库标准语言SQL(2)_第50张图片

你可能感兴趣的:(数据库,数据库,sql)