广告
返回顶部
首页 > 资讯 > 数据库 >SQL SELECT 语句基础
  • 526
分享到

SQL SELECT 语句基础

SQLSELECT语句基础 2017-11-22 15:11:38 526人浏览 无得
摘要

目录一、列的查询二、查询出表中所有的列三、为列设定别名四、常数的查询五、从结果中删除重复行六、根据 WHERE 语句来选择记录七、注释的书写方法请参阅 学习重点 使用 SELECT 语句从表中选取数据。 为列设定显示用的

SQL SELECT 语句基础

目录
  • 一、列的查询
  • 二、查询出表中所有的列
  • 三、为列设定别名
  • 四、常数的查询
  • 五、从结果中删除重复行
  • 六、根据 WHERE 语句来选择记录
  • 七、注释的书写方法
  • 请参阅

学习重点

  • 使用 SELECT 语句从表中选取数据。

  • 为列设定显示用的别名。

  • SELECT 语句中可以使用常数或者表达式。

  • 通过指定 DISTINCT 可以删除重复的行。

  • sql 语句中可以使用注释。

  • 可以通过 WHERE 语句从表中选取出符合查询条件的数据。

一、列的查询

从表中选取数据时需要使用 SELECT 语句,也就是只从表中选出(SELECT)必要数据的意思。通过 SELECT 语句查询并选取出必要数据的过程称为匹配查询查询(query)。

KEYWORD

  • SELECT 语句

  • 匹配查询

  • 查询

SELECT 语句是 SQL 语句中使用最多的最基本的 SQL 语句。掌握了 SELECT 语句,距离掌握 SQL 语句就不远了。

SELECT 语句的基本语法如下所示。

语法 1 基本的 SELECT 语句

SELECT <列名>,……
 FROM <表名>;

SELECT 语句包含了 SELECTFROM 两个子句(clause)。子句是 SQL 语句的组成要素,是以 SELECT 或者 FROM 等作为起始的短语。

KEYWORD

  • 子句

SELECT 子句中列举了希望从表中查询出的列的名称,而 FROM 子句则指定了选取出数据的表的名称。

接下来,我们尝试从 表的创建 中创建出的 Product(商品)表中,查询出图 1 所示的 product_id(商品编号)列、product_name(商品名称)列和 purchase_price(进货单价)列。

查询出 Product 表中的列

图 1 查询出 Product 表中的列

对应的 SELECT 语句请参见代码清单 1,该语句正常执行的结果如执行结果所示 [1]

代码清单 1 从 Product 表中输出 3 列

SELECT product_id, product_name, purchase_price
  FROM Product;

执行结果

product_id | product_name | purchase_price
-----------+--------------+---------------
0001       | T恤衫        |            500
0002       | 打孔器       |            320
0003       | 运动T恤      |           2800
0004       | 菜刀         |           2800
0005       | 高压锅       |           5000
0006       | 叉子         |
0007       | 擦菜板       |            790
0008       | 圆珠笔       |

SELECT 语句第一行的 SELECT product_id, product_name, purchase_price 就是 SELECT 子句。查询出的列的顺序可以任意指定。查询多列时,需要使用逗号进行分隔。查询结果中列的顺序和 SELECT 子句中的顺序相同 [2]

二、查询出表中所有的列

想要查询出全部列时,可以使用代表所有列的星号(*)。

KEYWORD

  • 星号(*

语法 2 查询全部的列

SELECT *
  FROM <表名>;

例如,查询 Product 表中全部列的语句如代码清单 2 所示。

代码清单 2 输出 Product 表中全部的列

SELECT *
  FROM Product;

得到的结果和代码清单 3 中的 SELECT 语句的结果相同。

代码清单 3 与代码清单 2 具有相同含义的 SELECT 语句

SELECT product_id, product_name, product_type, sale_price,
       purchase_price, reGISt_date
  FROM Product;

执行结果如下所示。

执行结果

 product_id | product_name | product_type | sale_price | purchase_price | regist_date
------------+--------------+--------------+------------+----------------+------------
 0001       | T恤衫        | 衣服         |       1000 |            500 | 2009-09-20
 0002       | 打孔器       | 办公用品     |        500 |            320 | 2009-09-11
 0003       | 运动T恤      | 衣服         |       4000 |           2800 |
 0004       | 菜刀         | 厨房用具     |       3000 |           2800 | 2009-09-20
 0005       | 高压锅       | 厨房用具     |       6800 |           5000 | 2009-01-15
 0006       | 叉子         | 厨房用具     |        500 |                | 2009-09-20
 0007       | 擦菜板       | 厨房用具     |        880 |            790 | 2008-04-28
 0008       | 圆珠笔       | 办公用品     |        100 |                | 2009-11-11

法则 1

星号(*)代表全部列的意思。

但是,如果使用星号的话,就无法设定列的显示顺序了。这时就会按照 CREATE TABLE 语句的定义对列进行排序

专栏

随意使用换行符

SQL 语句使用换行符或者半角空格来分隔单词,在任何位置进行分隔都可以,即使像下面这样通篇都是换行符也不会影响 SELECT 语句的执行。但是这样可能会由于看不清楚而出错。原则上希望大家能够以子句为单位进行换行(子句过长时,为方便起见可以换行)。

SELECT
*
FROM
Product
;

另外,像下面这样插入空行(无任何字符的行)会造成执行错误,请特别注意。

SELECT *

 FROM Product;

三、为列设定别名

SQL 语句可以使用 AS 关键字为列设定别名。请参见代码清单 4。

KEYWORD

  • AS 关键字

  • 别名

代码清单 4 为列设定别名

SELECT product_id     AS id,
       product_name   AS name,
       purchase_price AS price
  FROM Product;

执行结果

 id   |  name   | price
------+---------+-------
0001  | T恤衫   |   500
0002  | 打孔器  |   320
0003  | 运动T恤 |  2800
0004  | 菜刀    |  2800
0005  | 高压锅  |  5000
0006  | 叉子    |
0007  | 擦菜板  |   790
0008  | 圆珠笔  |

别名可以使用中文,使用中文时需要用 双引号(" 括起来 [3]。请注意不是单引号(")。设定中文别名的 SELECT 语句请参见代码清单 5。

KEYWORD

  • 双引号("

代码清单 5 设定中文别名

SELECT product_id     AS "商品编号",
       product_name   AS "商品名称",
       purchase_price AS "进货单价"
  FROM Product;

执行结果

商品编号  | 商品名称 | 进货单价
----------+----------+---------
0001      | T恤衫    |     500
0002      | 打孔器   |     320
0003      | 运动T恤  |    2800
0004      | 菜刀     |    2800
0005      | 高压锅   |    5000
0006      | 叉子     |
0007      | 擦菜板   |     790
0008      | 圆珠笔   |

通过执行结果来理解就更加容易了。像这样使用别名可以让 SELECT 语句的执行结果更加容易理解和操作。

法则 2

设定汉语别名时需要使用双引号(")括起来。

四、常数的查询

SELECT 子句中不仅可以书写列名,还可以书写常数。代码清单 6 中的 SELECT 子句中的第一列 "商品"字符串常数,第 2 列 38数字常数,第 3 列 "2009-02-24"日期常数,它们将与 product_id 列和 product_name 列一起被查询出来。[4]

KEYWORD

代码清单 6 查询常数

SELECT "商品" AS string, 38 AS number, "2009-02-24" AS date,
       product_id, product_name
  FROM Product;

执行结果

 string  |  number  |    date     | product_id | product_name
---------+----------+-------------+------------+--------------
 商品    |  38      | 2009-02-24  | 0001       | T恤衫
 商品    |  38      | 2009-02-24  | 0002       | 打孔器
 商品    |  38      | 2009-02-24  | 0003       | 运动T恤
 商品    |  38      | 2009-02-24  | 0004       | 菜刀
 商品    |  38      | 2009-02-24  | 0005       | 高压锅
 商品    |  38      | 2009-02-24  | 0006       | 叉子
 商品    |  38      | 2009-02-24  | 0007       | 擦菜板
 商品    |  38      | 2009-02-24  | 0008       | 圆珠笔

如上述执行结果所示,所有的行中都显示出了 SELECT 子句中的常数。

此外,SELECT 子句中除了书写常数,还可以书写计算式。我们将在 [算术运算符和比较运算符]({{}}) 中学习如何书写计算式。

五、从结果中删除重复行

想知道 Product 表中保存了哪些商品种类(product_type)时,如果能像图 2 那样删除重复的数据该有多好啊。

除去重复数据后的商品种类

图 2 除去重复数据后的商品种类

如上所示,想要删除重复行时,可以通过在 SELECT 子句中使用 DISTINCT 来实现(代码清单 7)。

KEYWORD

  • DISTINCT 关键字

代码清单 7 使用 DISTINCT 删除 product_type 列中重复的数据

SELECT DISTINCT product_type
  FROM Product;

执行结果

 product_type
---------------
 厨房用具
 衣服
 办公用品

法则 3

SELECT 语句中使用 DISTINCT 可以删除重复行。

在使用 DISTINCT 时,NULL 也被视为一类数据。NULL 存在于多行中时,也会被合并为一条 NULL 数据。对含有 NULL 数据的 purchase_price(进货单价)列使用 DISTINCTSELECT 语句请参见代码清单 8。除了两条 2800 的数据外,两条 NULL 的数据也被合并为一条。

代码清单 8 对含有 NULL 数据的列使用 DISTINCT 关键字

SELECT DISTINCT purchase_price
  FROM Product;

执行结果

对含有 NULL 数据的列使用 DISTINCT 关键字

DISTINCT 也可以像代码清单 9 那样在多列之前使用。此时,会将多个列的数据进行组合,将重复的数据合并为一条。代码清单 9 中的 SELECT 语句,对 product_type(商品种类)列和 regist_date(登记日期)列的数据进行组合,将重复的数据合并为一条。

代码清单 9 在多列之前使用 DISTINCT

SELECT DISTINCT product_type, regist_date
  FROM Product;

执行结果

 product_type | regist_date
--------------+------------
 衣服         | 2009-09-20
 办公用品     | 2009-09-11
 办公用品     | 2009-11-11
 衣服         |
 厨房用具     | 2009-09-20
 厨房用具     | 2009-01-15
 厨房用具     | 2008-04-28

如上述执行结果所示,product_type 列为 "厨房用具",同时 regist_date 列为 "2009-09-20" 的两条数据被合并成了一条。

DISTINCT 关键字只能用在第一个列名之前。因此,请大家注意不能写成 regist_date, DISTINCT product_type

六、根据 WHERE 语句来选择记录

前面的例子都是将表中存储的数据全都选取出来,但实际上并不是每次都需要选取出全部数据,大部分情况都是要选取出满足“商品种类为衣服”“销售单价在 1000 日元以上”等某些条件的数据。

SELECT 语句通过 WHERE 子句来指定查询数据的条件。在 WHERE 子句中可以指定“某一列的值和这个字符串相等”或者“某一列的值大于这个数字”等条件。执行含有这些条件的 SELECT 语句,就可以查询出只符合该条件的记录了。[5]

KEYWORD

  • WHERE 子句

SELECT 语句中使用 WHERE 子句的语法如下所示。

语法 3 SELECT 语句中的 WHERE 子句

SELECT <列名>, ……
  FROM <表名>
 WHERE <条件表达式>;

图 3 显示了从 Product 表中选取商品种类(product_type)为 "衣服" 的记录。

选取商品种类为

图 3 选取商品种类为’衣服’的记录

从被选取的记录中还可以查询出想要的列。为了更加容易理解,我们在查询 product_type 列的同时,把 product_name 列也读取出来。 SELECT 语句请参见代码清单 10。

代码清单 10 用来选取 product_type 列为 "衣服" 的记录的 SELECT 语句

SELECT product_name, product_type
  FROM Product
 WHERE product_type = "衣服";

执行结果

 product_name | product_type
--------------+--------------
 T恤衫        | 衣服
 运动T恤      | 衣服

WHERE 子句中的“product_type = "衣服"”就是用来表示查询条件的表达式(条件表达式)。等号是比较两边的内容是否相等的符号,上述条件就是将 product_type 列的值和 "衣服" 进行比较,判断是否相等。Product 表的所有记录都会被进行比较。

KEYWORD

  • 条件表达式

接下来会从查询出的记录中选取出 SELECT 语句指定的 product_name 列和 product_type 列,如执行结果所示,也就是首先通过 WHERE 子句查询出符合指定条件的记录,然后再选取出 SELECT 语句指定的列(图 4)。

选取行之后,再输出列

图 4 选取行之后,再输出列

代码清单 10 中的语句为了确认选取出的数据是否正确,通过 SELECT 子句把作为查询条件的 product_type 列也选取出来了,其实这并不是必须的。如果只想知道商品名称的话,可以像代码清单 11 那样只选取出 product_name 列。

代码清单 11 也可以不选取出作为查询条件的列

SELECT product_name
  FROM Product
 WHERE product_type = "衣服";

执行结果

 product_name
---------------
 T恤衫
 运动T恤

SQL 中子句的书写顺序是固定的,不能随意更改WHERE 子句必须紧跟在 FROM 子句之后,书写顺序发生改变的话会造成执行错误(代码清单 12)。

代码清单 12 随意改变子句的书写顺序会造成错误

SELECT product_name, product_type
 WHERE product_type = "衣服"
  FROM Product;

执行结果(PostgreSQL)

ERROR: "FROM"或者其前后有语法错误
第3行: FROM Product;
        ^

法则 4

WHERE 子句要紧跟在 FROM 子句之后。

七、注释的书写方法

最后给大家介绍一下注释的书写方法。注释是 SQL 语句中用来标识说明或者注意事项的部分。

KEYWORD

  • 注释

注释对 SQL 的执行没有任何影响。因此,无论是英文字母还是汉字都可以随意使用。

注释的书写方法有如下两种。

  • 单行注释

    书写在“--”之后,只能写在同一行。[6]

    KEYWORD

    • 单行注释

    • --

  • 多行注释

    书写在“”之间,可以跨多行。

    KEYWORD

    • 多行注释

实际的示例请参见代码清单 13 和代码清单 14。

代码清单 13 单行注释的使用示例

-- 本 SELECT 语句会从结果中删除重复行。
SELECT DISTINCT product_id, purchase_price
  FROM Product;

代码清单 14 多行注释的使用示例


SELECT DISTINCT product_id, purchase_price
  FROM Product;

任何注释都可以插在 SQL 语句中(代码清单 15、代码清单 16)。

代码清单 15 在 SQL 语句中插入单行注释

SELECT DISTINCT product_id, purchase_price
-- 本 SELECT 语句会从结果中删除重复行。
  FROM Product;

代码清单 16 在SQL 语句中插入多行注释

SELECT DISTINCT product_id, purchase_price

  FROM Product;

这些 SELECT 语句的执行结果与没有使用注释时完全一样。注释能够帮助阅读者更好地理解 SQL 语句,特别是在书写复杂的 SQL 语句时,希望大家能够尽量多加简明易懂的注释。注释不仅可以写在 SELECT 语句中,而且可以写在任何 SQL 语句当中,写多少都可以。

法则 5

注释是 SQL 语句中用来标识说明或者注意事项的部分。

分为单行注释和多行注释两种。

请参阅

  • SELECT 语句基础
  • 算术运算符和比较运算符
  • 逻辑运算符

(完)


  1. 结果的显示方式根据 RDBMS 的客户端的不同略有不同(数据的内容都是相同的)。如无特殊说明,本教程中显示的都是 postgresql 9.5 的执行结果。 ↩︎

  2. 行的顺序也可能存在与上述执行结果不同的情况。如果用户不设定 SELECT 语句执行结果中行的顺序,就可能会发生上述情况。行的排序方法将在 对查询结果进行排序 中进行学习。 ↩︎

  3. 使用双引号可以设定包含空格(空白)的别名。但是如果忘记使用双引号就可能出错,因此并不推荐。大家可以像 product_list 这样使用下划线(_)来代替空白。 ↩︎

  4. 在 SQL 语句中使用字符串或者日期常数时,必须使用单引号 (") 将其括起来。 ↩︎

  5. 这和 excel 中根据过滤条件对行进行过滤的功能是相同的。 ↩︎

  6. Mysql 中需要在“--”之后加入半角空格(如果不加的话就不会被认为是注释)。 ↩︎

您可能感兴趣的文档:

--结束END--

本文标题: SQL SELECT 语句基础

本文链接: https://www.lsjlt.com/news/8854.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL SELECT 语句基础
    目录一、列的查询二、查询出表中所有的列三、为列设定别名四、常数的查询五、从结果中删除重复行六、根据 WHERE 语句来选择记录七、注释的书写方法请参阅 学习重点 使用 SELECT 语句从表中选取数据。 为列设定显示用的...
    99+
    2017-11-22
    SQL SELECT 语句基础
  • sql的基础语句-sql的查询语句select
     SQL查询语句介绍--select语句1.简单的select查询语句1.1 查行SQL> select * from emp;1.2 查列SQL> select ...
    99+
    2022-10-18
  • mysql基础(七)select语句
    单表查询:     SELECT         [ DISTINC...
    99+
    2022-10-18
  • SQL Server基础语句讲解
    1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select into b from a where 1<>1(仅用于SQlServer)...
    99+
    2022-10-18
  • SQL基础的查询语句
    目录一、基础SELECT语句1、查询指定字段3、设定别名4、常数的查询5、表达式的查询6、去重7、条件查询7.1 单条件查询7.2 多条件查询7.3 指定范围查询7.4 模糊...
    99+
    2022-11-12
  • 【SQL基础】SQL增删改查基本语句
    目录 1 SQL 增删改查基本语句2 select 语句2.1 select 基本语句2.2 Select .. where 语句2.3 Select .. order by 语句2...
    99+
    2023-10-04
    sql 数据库 注入 database mysql
  • 【sql语句基础】——删(delete) /改(update)
    目录 删(delete)代码样例delete注意事项 改(update)代码样例update注意事项 删(delete) 代码样例 DELETE FROM goodsWHER&#...
    99+
    2023-09-13
    mysql 数据库 大数据
  • mysql基础(二) 常用SQL语句
    SQL语句类型:     DDL:数据库定义语言 create,drop,alter     DML:数据操作语言...
    99+
    2022-10-18
  • SQL 入门教程:SELECT 语句
    目录请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 SQL 语句是由简单的英语单词构成的。这些单词称为关键字,每个 SQL 语句都是由一个或多个关键字构成的。最经常使用的 SQL 语句大概就是 SELECT 语句了。它的...
    99+
    2019-04-11
    SQL 入门教程:SELECT 语句
  • MySQL基础与sql语句实操演练
    本文主要给大家简单讲讲MySQL基础与sql语句实操演练,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL基础与sql语句实操演练这篇文章可以给大家带...
    99+
    2022-10-18
  • SQL基础的查询语句有哪些
    这篇文章主要介绍“SQL基础的查询语句有哪些”,在日常操作中,相信很多人在SQL基础的查询语句有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL基础的查询语句有哪些”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-25
  • Oracle基础语句
    1、创建表create table IT_EMPLOYEES(ENPLOYEES_ID NUMBER(6) NOT NULL UNIQUE,FIRST_NAME VARCHAR2(20),LAST_...
    99+
    2022-10-18
  • MySQL基础语句
    查看语句 查看所有数据库 show databases; 查看表结构 desc table_name; 查看库中所有表 show tables; 查看建表语句 show create table ; 新建表语...
    99+
    2021-02-22
    MySQL基础语句
  • MySQL(六):基本的SELECT语句
    基本的SELECT语句 前言一、SELECT...二、SELECT ... FROM三、列的别名四、去除重复行五、空值参与运算六、着重号七、查询常数八、显示表结构九、过滤数据 前言 本博主将用CSDN记录软件...
    99+
    2023-08-19
    数据库 mysql sql
  • 在SQL中修改数据的基础语句
    目录什么是修改?一、插入数据基本语法二、更新数据基本语法使用update语句的注意事项三、删除语句基本语法注意事项四、特别注意补充:sql update语句根据不同条件修改不同列的值什么是修改? 在SQL中的基...
    99+
    2023-02-15
    mysql修改数据 sql数据库修改数据 sql数据库修改语句怎么写
  • SQL SELECT DISTINCT语句有什么用
    SQL SELECT DISTINCT语句用于检索出唯一(不重复)的值。在某些情况下,数据库表中可能存在重复的数据,而我们只...
    99+
    2023-10-10
    SQL
  • SQL中SELECT语句如何使用
    SQL中SELECT语句如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  SQL嵌套SELECT语句的用法有哪些  1、单行子...
    99+
    2022-10-18
  • MySQL基础|在Navicat中输入SQL语句步骤【含SQL语句约束规范】
    通常使用cmd进行SQL的编写,但是Navicat这个图形化工具在进行数据存储时更加清晰,因此现在在开发时是个更佳的选择。但输入SQL语句的地方新手却不容易找到 Navicat中输入SQL语句 ...
    99+
    2023-09-06
    MySQL Navicat SQL
  • SQL基本语句
    SQL基本语句 1.数据记录筛选:sql="select * from 数据表 where字段名=字段值 order by字段名[desc]"(按某个字段值降序排列。默认升序A...
    99+
    2022-10-18
  • MySQL8.0关系数据库基础教程(三)-select语句详解
    1 查询指定字段 在 employee 表找出所有员工的姓名、性别和电子邮箱。 SELECT 表示查询,随后列出需要返回的字段,字段间逗号分隔 FROM 表示要从哪个表中进行查询 分号为语句结束符 这种查询表中指定字段的操...
    99+
    2018-09-26
    MySQL8.0关系数据库基础教程(三)-select语句详解
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作