美文网首页收藏
SQL 检索数据

SQL 检索数据

作者: 山药鱼儿 | 来源:发表于2022-03-05 15:32 被阅读0次

前面的两篇文章,小鱼为大家介绍了数据库和数据库管理软件 MySQL 的基本概念。本节呢,我们先来学习基本的 SQL 查询语句,以实现和 DBMS 的交流,完成基本的检索操作。

:如果大家和小鱼一样,不想在个人笔记本上安装数据库,也没有买云主机、云数据库这些,学习 SQL 最简单的办法就是在线练习,比如牛客网这样的平台,也可以使用 SQLite 数据库,SQLite 把数据文件存储在一个单独的文件里。

小鱼下载了一个现成的 SQLite 文件,这样就免去建表、插入数据的麻烦了,因为对于我们数据分析师而言,重点掌握查询语句就好啦~如何设计对象关系模型、设计表等等都是工程师的 tip

注:SQLite 文件下载地址为 https://forta.com/books/0135182794/

SQL 语句由一个或多个关键字构成,其中最长使用的关键词就是 SELECT 了。SELECT 语句用于从一个或多个表中检索数据。

SELECT 检索数据时,必须至少给出两个信息:想检索什么信息?从哪些地方检索?

检索单个列

商品表 Products 中的内容如下:

检索出所有的产品名称:

SELECT prod_name
FROM Products;

上述语句从 Products 表中检索出 prod_name 列的全部内容:

注 1:返回结果没有过滤,也没有排序。

注 2:多条 SQL 语句必须使用分号分隔,虽然有的 DBMS 不要求在单条 SQL 结束时加上分号,但养成以分号结束一条 SQL 是个不错的习惯。

注 3SQL 语句不许分大小写,也就是说 SELECTselect 是一样的。但强烈建议对所有 SQL 关键字使用大写,列名和表名使用小写。这样整个 SQL 会更清晰,便于后期的维护。

注 4:SQL 语句被执行时,所有的空格都会被忽略。我们可以将 SQL 1 行书写完,也可以像小鱼这样清晰地写到多行。

检索多个列

检索多个列时只需要在 SELECT 关键字之后,将多个列的列名以逗号作为分隔符列出即可。

SELECT prod_id, prod_name, prod_price
FROM Products;

上述 SQL 将依次检索出 Products 表中的 prod_id prod_name prod_price 列的全部内容:

检索所有列

使用 SELECT * 可以直接检索出所有列:

SELECT * 
FROM Products;

使用通配符 * 检索所有列的好处在于,在不知道列名的情况下可以列出所有列;缺点在于当数据量庞大的时候,响应速度是非常慢的。

以上在检索时,我们只讨论了列如何选择,返回的结果都包含了所有的记录(行),接下来我们来讨论如何对返回的行做一些限定。

检索内容不同的行(去重)

检索所有厂商的 ID

SELECT vend_id
FROM Products;

目前检索出的厂商 ID 中存在大量重复的记录,实际的厂商 ID 只有 3 种类型。那如何只检索不同的值呢?答案就是使用 DISTINCT 关键字。

SELECT DISTINCT vend_id
FROM Products;

去重检索结果:

另外,需要我们注意的是 DISTINCT 关键字应用于所有的列,不仅仅是它后面的那个列。也就是对后面所有列组合后的返回结果去重。比如在不去重时:

SELECT vend_id, prod_price
FROM Products;

vend_idprod_price 整体返回来看,重复的记录如下:

使用 DISTINCT 关键字去重:

SELECT DISTINCT vend_id, prod_price
FROM Products;

去重检索结果:

限定返回的行

大多数 DBMS 都支持使用 LIMIT 关键字限定返回的行数。比如下面的检索,返回前 5 行检索到的内容:

SELECT prod_name
FROM Products
LIMIT 5;

检索结果:

还可以使用 LIMIT n OFFSET m 指定检索的开始行和行数,也就是在返回指定行数的前提前,添加一个偏置项,表示从 m 行开始。下面的 SQL 语句从第 5 行开始,对多返回 5 行:

SELECT prod_name
FROM Products
LIMIT 5 OFFSET 5;

这里只有 4 行是因为我们的表中一共就只有 9 行~

注:行的索引从 0 开始,也就是说 OFFSET 5 其实是从第 6 条记录开始返回的。

关于注释

SQL 语句中的单行注释使用 -- 开始,多行注释使用 /* 开始,*/ 结束。下面是小鱼本节输入的所有 SQL ,由于前面的 SQL 都注释了,每次运行时,将只运行最新的 SQL

-- SELECT prod_name
-- FROM Products;

/*SELECT prod_id, prod_name, prod_price
FROM Products;*/

-- SELECT * 
-- FROM Products;

-- SELECT DISTINCT vend_id
-- FROM Products;

/*SELECT DISTINCT vend_id, prod_price
FROM Products;*/

SELECT prod_name
FROM Products
LIMIT 5 OFFSET 5;

相关文章

  • SQL—检索数据

    数据库(database):是一个以某种有组织的方式存储的数据集合。最简单的方法是将数据库想象为一个文件柜。 SE...

  • SQL 检索数据

    前面的两篇文章,小鱼为大家介绍了数据库和数据库管理软件 MySQL 的基本概念。本节呢,我们先来学习基本的 SQL...

  • SQL 学习笔记

    SQL基础 参考书籍: 《SQL必知必会》 检索数据 过滤数据 函数 分组数据 子查询 简单联结 法一: 法二: ...

  • 【SQL】(二):检索数据

    本系列为自己学习时的笔记及心得体会,转载请注明出处。 原表: 1、select语句 从一个或多个表中检索信息。 2...

  • 我的SQL学习

    目录 1.SQL基础 2.检索数据 3.排序检索数据 4.过滤数据 5.高级过滤 6.通配符过滤 7.创建计算字段...

  • 09-10章 汇总分组数据

    第9章 9.1 聚集函数 如果需要汇总数据而不是检索,SQL 提供专用函数,可用于检索数据,以便分析和报表生成。这...

  • 《SQL必知必会》(第5版)

    第2课-检索数据 2.9 挑战题 1、编写SQL语句,从Customers表中检索所有的ID(cust_id) 正...

  • 数据分析之 SQL

    一般来说SQL主要是指SQL查询语言,mysql主要是数据库。 检索数据简单应用 表示通配符,匹配表中所有字段。 ...

  • SQL必知必会读书笔记9

    汇总数据 聚集函数 我们经常需要汇总数据而不同把他们实际检索出来,为此SQL提供了专门的函数,使用这些函数,SQL...

  • SQL必知必会----第四版(一)

    记录自己学习这本书的过程此篇文章包括检索、排序检索数据和过滤数据 通往其他文章的入口:SQL必知必会----第四版...

网友评论

    本文标题:SQL 检索数据

    本文链接:https://www.haomeiwen.com/subject/bmfbrrtx.html