“数据库系统实验”实验报告(5)

文章目录

    • 实验目的
    • 实验内容
    • 实验步骤
      • 基本的select语句
      • 数学符号条件
      • AND和OR
      • IN和NOT IN
      • 通配符
      • 对结果排序
      • SQL 内置函数和计算
      • 子查询
      • 连接查询
      • 课后习题

实验目的

SQL 中最常用的 SELECT 语句,用来在表中选取数据,本节实验中将通过一系列的动手操作详细学习 SELECT 语句的用法。

实验内容

  • SELECT 基本语法
  • 数学符号条件
  • AND OR IN
  • 通配符
  • 排序
  • SQL 内置函数和计算
  • 子查询与连接查询

实验步骤

基本的select语句

SELECT 要查询的列名 FROM 表名字 WHERE 限制条件;

“数据库系统实验”实验报告(5)_第1张图片

数学符号条件

SELECT 语句常常会有 WHERE 限制条件,用于达到更加精确的查询。WHERE限制条件可以有数学符号 (=,<,>,>=,<=) ,刚才我们查询了 name 和 age,现在稍作修改:

SELECT name,age FROM employee WHERE age>25;

“数据库系统实验”实验报告(5)_第2张图片

AND和OR

从这两个单词就能够理解它们的作用。WHERE 后面可以有不止一条限制,而根据条件之间的逻辑关系,可以用 [条件一 OR 条件二]] 和 [条件一 AND 条件二] 连接:

SELECT name,age FROM employee WHERE age<25 OR age>30;

“数据库系统实验”实验报告(5)_第3张图片

#筛选出 age 大于 25,且 age 小于 30
SELECT name,age FROM employee WHERE age>25 AND age<30;

“数据库系统实验”实验报告(5)_第4张图片
可以用between来表示取值范围
“数据库系统实验”实验报告(5)_第5张图片

IN和NOT IN

关键词 IN 和 NOT IN 的作用和它们的名字一样明显,用于筛选“在”或“不在”某个范围内的结果,比如说我们要查询在 dpt3 或 dpt4 的人和不在dpt1和dpt3的人:
“数据库系统实验”实验报告(5)_第6张图片

通配符

关键字 LIKE 可用于实现模糊查询,常见于搜索功能中。

和 LIKE 联用的通常还有通配符,代表未知字符。SQL中的通配符是 _ 和 % 。其中 _ 代表一个未指定字符,% 代表不定个未指定字符

比如,要只记得电话号码前四位数为1101,而后两位忘记了,则可以用两个 _ 通配符代替:
“数据库系统实验”实验报告(5)_第7张图片
另一种情况,比如只记名字的首字母,又不知道名字长度,则用 % 通配符代替不定个字符:
“数据库系统实验”实验报告(5)_第8张图片

对结果排序

为了使查询结果看起来更顺眼,我们可能需要对结果按某一列来排序,这就要用到 ORDER BY 排序关键词。默认情况下,ORDER BY 的结果是升序排列,而使用关键词 ASC 和 DESC 可指定升序或降序排序。
“数据库系统实验”实验报告(5)_第9张图片

SQL 内置函数和计算

函数名: COUNT SUM AVG MAX MIN

作用: 计数 求和 求平均值 最大值 最小值
具体举例,比如计算出 salary 的最大、最小值,用这样的一条语句:
“数据库系统实验”实验报告(5)_第10张图片
有一个细节你或许注意到了,使用 AS 关键词可以给值重命名,比如最大值被命名为了 max_salary

子查询

上面讨论的 SELECT 语句都仅涉及一个表中的数据,然而有时必须处理多个表才能获得所需的信息。例如:想要知道名为 “Tom” 的员工所在部门做了几个工程。员工信息储存在 employee 表中,但工程信息储存在 project 表中。
“数据库系统实验”实验报告(5)_第11张图片

连接查询

在处理多个表时,子查询只有在结果来自一个表时才有用。但如果需要显示两个表或多个表中的数据,这时就必须使用连接 (join) 操作。 连接的基本思想是把两个或多个表当作一个新的表来操作
一种是使用join

SELECT id,name,people_num
FROM employee,department
WHERE employee.in_dpt = department.dpt_name
ORDER BY id;

“数据库系统实验”实验报告(5)_第12张图片
另一个连接语句格式是使用 JOIN ON 语法,与刚才的语句等同

SELECT id,name,people_num
FROM employee JOIN department
ON employee.in_dpt = department.dpt_name
ORDER BY id;

“数据库系统实验”实验报告(5)_第13张图片

课后习题

使用连接查询的方式,查询出各员工所在部门的人数与工程数,工程数命名为 count_project。(连接 3 个表,并使用 COUNT 内置函数)

SELECT name, people_num, COUNT(proj_name) AS count_project
    FROM employee, department, project
    WHERE in_dpt = dpt_name AND of_dpt = dpt_name
    GROUP BY name, people_num;

“数据库系统实验”实验报告(5)_第14张图片

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