数据库系统概论 ---- 第三章 -- 关系数据库标准语言SQL( 3.4 数据查询 )(一)

简介: 数据库系统概论 ---- 第三章 -- 关系数据库标准语言SQL( 3.4 数据查询 )

使用的数据库为MySQL,与书本使用的不同

3.4 数据查询

数据查询是数据库的核心操作

SQL提供了SELECT语句进行数据查询,其一般格式为:

SELECT [ALL|DISTINCT] <目标列表达式> [别名] [, <目标列表达式> [别名]] ...
FROM <表名或视图名> [别名] [, <表名或视图名> [别名]] ...
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING  <条件表达式>]]
[ORDER BY <列名2> [ASC| DESC]]; 

整个SELECT语句的含义:

  • FROM字句指定的基本表、视图或派生表中进行数据的查询,查询满足WHERE字句条件的元组,从选出来的元组中选出SELECT字句中指定属性对应的各元组的属性值形成结果表。
  • 如果有GROUP BY字句,将结果按照指定的列进行分组,如果有HAVING 字句从分组完成的数据中选出满足条件的结果输出
  • 如果有ORDER BY字句,将结果按照指定的列和指定的排序方式进行排序。

后面查询需要用到的表和数据:

学生表:

create table Student (
    Sno char(9) primary key ,
    Sname varchar(10) ,
    Ssex char(1) ,
    Sage int ,
    Sdept varchar(20)
) comment '学生表';
insert into Student
values ('201215121', '李勇', '男', 20, 'CS'),
       ('201215122', '刘晨', '女', 19, 'CS'),
       ('201215123', '王敏', '女', 18, 'MA'),
       ('201215125', '张立', '男', 19, 'IS');

课程表:

create table Course (
    Con int primary key ,
    Cname varchar(20) ,
    Cpno int comment '先行课' ,
    Ccredit int comment '学分'
);
insert into Course
values (1, '数据库', 5, 4),
       (2, '数学', null, 2),
       (3, '信息系统', 1, 4),
       (4, '操作系统', 6, 3),
       (5, '数据结构', 7, 4),
       (6, '数据处理', null, 2),
       (7, 'PASCAL语言', 6, 4);

学生选课表:

create table SC (
  Sno varchar(9) ,
  Cno int ,
  primary key (Sno, Cno),
  Grade int
);
insert into SC
values ('201215121', 1, 92),
       ('201215121', 2, 85),
       ('201215121', 3, 88),
       ('201215122', 2, 90),
       ('201215122', 3, 80);

3.4.1 单表查询

单表查询仅仅涉及一个表的查询

1. 选择表中的若干列

选择表中的全部或部分列,对应关系代数的投影运算

(1)查询指定的列

[ 例 3.16 ] 查询全体学生的学号与姓名

SELECT Sno, Sname
FROM Student;

(2)查询全部列

* 代表所有的列

[ 例 3.18 ] 查询全体学生的详细记录

SELECT * 
FROM Student;

等价于

SELECT Sno, Sname, Ssex, Sage, Sdept
FROM Student;

(3)查询进过计算的值

SELECT字句中的目标列表达式不仅可以是表的属性列,也可以是表达式

[ 例 3.19 ] 查询学生的姓名及其出生年份

SELECT Sname, (2022-Sage)
FROM Student;

目标列表达式不仅可以是算术表达式还可以是字符串常量、函数等

[ 例 3.20 ] 查询全体学生的姓名、出生年份、所在院系,要求用小写字母表示系名。

# lower 函数将所有字母转为小写
SELECT Sname, 'Year of Birth: ', Sage, lower(Sdept)
FROM Student;

可以给列指定别名来改变查询结果的列标题,使用关键字AS,也可以省略,列名与属性名之间用空格间隔。

SELECT
    Sname AS '学生姓名',
    'Year of Birth: ' AS 'Birth',
    Sage Birthday,
    lower(Sdept) Department
FROM Student;

2. 选择表中的若干元组

(1)消除取值重复的行

在查询时候,可以指定是否去除重复数据。

查询中如果不想去除重复数据,可以使用关键字ALL,如果想去除重复数据可以使用关键字DISTINCT,默认为ALL

[ 例 3.21 ] 查询选修了课程的学号

SELECT Sno
FROM Student;
# 等价于
SELECT ALL Sno
FROM Student;

去除重复的学号

SELECT DISTINCT Sno
FROM Student;

(2)查询满足条件的元组

查询满足条件的元组可以使用 WHERE 字句实现。

WHERE字句常用的查询条件

比较大小

同于比较的运算符:

运算符 含义
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于
!> 不大于(mysql没有)
!< 不小于(mysql没有)

[ 例 3.22 ] 查询计算机科学系的全体学生名单

SELECT Sname
FROM Student
WHERE Sdept = 'CS';

[ 例 3.24 ] 查询考试成绩及格的学生的学号

SELECT DISTINCT Sno
# 我的表建立在mydb这个数据库中
FROM mydb.SC
WHERE Grade>=60;


相关实践学习
MySQL数据库快速部署实践
本场景主要介绍如何在一台配置了CentOS 7.7版本的ECS实例(云服务器)上安装mysql,执行mysql的常用操作,学习基本的SQL语句。
相关文章
|
2月前
|
SQL 数据管理 关系型数据库
SQL 语言入门:开启数据管理的大门
在数字化时代,数据已成为核心资产,而 SQL 作为操作关系型数据库的标准语言,是数据从业者、程序员及办公人员必备技能。本文从基础概念讲起,详解 SQL 的核心用法,包括数据查询、插入、修改、删除及表结构操作,并通过实例演示帮助读者快速上手。掌握 SQL,不仅能提升数据处理效率,更为深入理解数据管理打下坚实基础。
|
2月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
261 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
28天前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
108 6
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
23天前
|
SQL Oracle 关系型数据库
SQL语言小结
针对数据库、表单和数据行的增删改,没有涉及到sql真正的用途也就是查询,sql提供的查询语句的关键字占 sql 语言的一半之多,查询语句还是得单拿出来讲,不然太多了。 因为没有涉及到查询,所以sql的新增和修改都是很笼统的做法,drop、alter drop、delete这些很容易,逻辑性也不强,再次说明sql的真正精髓在于查询,不然为啥叫做结构化查询语言
179 0
|
23天前
|
SQL 关系型数据库 MySQL
(SQL)SQL语言中的查询语句整理
查询语句在sql中占了挺大一部分篇幅,因为在数据库中使用查询语句的次数远多于更新与删除命令。而查询语句比起其他语句要更加的复杂,可因为sql是数据库不可或缺的一部分,所以即使不懂,也必须得弄懂,以上。
127 0
|
2月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
188 8
|
3月前
|
SQL 人工智能 Java
用 LangChain4j+Ollama 打造 Text-to-SQL AI Agent,数据库想问就问
本文介绍了如何利用AI技术简化SQL查询操作,让不懂技术的用户也能轻松从数据库中获取信息。通过本地部署PostgreSQL数据库和Ollama模型,结合Java代码,实现将自然语言问题自动转换为SQL查询,并将结果以易懂的方式呈现。整个流程简单直观,适合初学者动手实践,同时也展示了AI在数据查询中的潜力与局限。
310 8
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。

热门文章

最新文章

下一篇
开通oss服务