数据库原理与应用 第 6 章 · 第一节
课程第 6 章第一节 这一章四件事七个子句选列起别名去重只要几行 版式
第 6 章 数据表中的数据查询 · 第一节

查询的基本结构

SELECT 语句长什么样,最简单的几种查询怎么写。
本 节 知 识 点
  1. 01从建表转向取数
  2. 02本章的四个部分
  3. 03SELECT 语句的一般格式
  4. 04无条件查询就是投影
  5. 05用 AS 给字段改个显示名
  6. 06重复行要自己动手去掉
  7. 07LIMIT 控制返回多少行
01
第 6 章 · 第一节

从建表转向取数

前面五章都在建和装,从这一章起开始往外取。

第 1 页课件

重 点

查询是数据库里用得最多的一件事,一天要写几十遍,建表一年才写一次。

打个比方

前面像是把货码进仓库,这一章是拿着单子去仓库里挑货。

知道更多查询不改数据

SELECT 只读不写,写错了顶多查不出来,不会把表里的数据弄坏。

02
第 6 章 · 第一节

本章的四个部分

从一张表查起,然后是多张表、子查询和集合运算。

第 2 页课件

分清楚四节各管什么

这一节解决的问题
单关系查询只查一张表
多关系查询把几张表连起来
子查询条件里的值现查
集合运算两个结果并一起

重 点

四种写法难度递增,但用的还是同一条 SELECT 语句,只是子句越写越全。

03
第 6 章 · 第一节

SELECT 语句的一般格式

七个子句,前两个必写,后五个按需要挑。

第 3 页课件

试一试写的顺序和跑的顺序

    同一条语句,写出来是一个次序,机器执行是另一个次序。

    重 点

    书写顺序一个字都不能颠倒,写反了机器直接报 1064 语法错。

    想一想

    为什么 WHERE 里不能用 SELECT 起的别名?

    04
    第 6 章 · 第一节

    无条件查询就是投影

    只有 SELECT 和 FROM 的查询,等于关系代数里的投影。

    第 4 页课件

    重 点

    字段名的先后由 SELECT 后面的次序决定,和表里原来的列序无关。

    分清楚两种写法

    写法什么时候用
    列出全部字段名想控制列序
    用一个星号临时看看全表

    知道更多星号别写进程序

    星号在正式程序里是忌讳,表一加列,程序拿到的东西就变了。

    05
    第 6 章 · 第一节

    用 AS 给字段改个显示名

    AS 只改结果里的表头,表里的字段名一个字没动。

    第 5 页课件

    重 点

    别名在结果里顶替原字段名显示,中文别名让结果一眼能看懂。

    打个比方

    像给学生贴个座位牌,牌子换了,人还是那个人。

    知道更多AS 可以省

    AS 这个词能省掉,直接在字段名后面空一格写别名也认。

    06
    第 6 章 · 第一节

    重复行要自己动手去掉

    关系代数投影自动去重,SQL 不去,得写 DISTINCT。

    第 6 页课件

    重 点

    DISTINCT 紧跟在 SELECT 后面,管的是整行,不是某一列。

    练一练

    授课表 tc 里有 9 条记录,涉及 5 位教师。SELECT DISTINCT tno FROM tc 返回几行?
    1. A9 行
    2. B5 行
    3. C4 行
    答案 B

    DISTINCT 把教师号相同的行合成一行,剩几位教师就是几行。

    上机做

    上机一第 3 题 自己敲一遍 DISTINCT

    07
    第 6 章 · 第一节

    LIMIT 控制返回多少行

    表有几万行时先加个 LIMIT,别让屏幕刷个不停。

    第 7 页课件

    重 点

    LIMIT 写在所有子句的最后,它砍的是最终结果,不是中间过程。

    知道更多先排序再限行

    不加 ORDER BY 就写 LIMIT,取到的是哪几行完全看机器心情。

    上机做

    上机一第 4 题 查前三位学生

    想一想

    一张表有十万行,你会先加 LIMIT 还是先加 WHERE?

    保山学院·人工智能教研室·曹鼎鼎