• 【数据库】SQL 检索数据


    基本检索数据

    检索单个列

    Products 表中检索一个名为 prod_name 的列;

    SELECT prod_name
    FROM Products;
    
    • 1
    • 2
    • s q l sql sql 语句将返回表中列 prod_name 的所有行,结果没有过滤没有排序。
    • s q l sql sql 语句以 ; 结束,多条 s q l sql sql 语句以分号间隔。
    • s q l sql sql 不区分大小写。
    • 系统在处理 s q l sql sql 语句时,其中所有的空格都将被忽略。所以 s q l sql sql 语句可以全部写在一行,也可以写在多行。当然建议写成多行,便于理解。

    检索多个列

    Products 表中检索名为 prod_id, prod_name, prod_price 列;

    SELECT prod_id, prod_name, prod_price
    FROM Products;
    
    • 1
    • 2
    • s q l sql sql 检索多个列,在列名之间加逗号。但是一定注意的是,不要在最后一个列名后加逗号,否则程序错误。

    检索所有列

    获取 Products 表中所有列;

    SELECT *
    FROM Products;
    
    • 1
    • 2
    • * 称为通配符,SELECT * 将返回表中所有列,列的顺序一般是表中出现的物理顺序,但是有些时候也并非如此。

    检索不同的

    获取 Products 表中所有供应商 ID;

    SELECT DISTINCT vend_id
    FROM Products;
    
    • 1
    • 2
    • DISTINCT 使得 vend_id 列的每个结果只出现一次。
    • 注意 DISTINCT 关键字作用于所有检索的列,比如 SELECT DISTINCT vend_id, prod_price 将按照两个列 vend_idprod_price 的组合罗列出来。

    限制检索数量

    获取 Products 表中五行数据;

    SELECT TOP 5 prod_name
    FROM Products;
    
    • 1
    • 2
    • TOP 关键字限制最多返回多少行,注意并不代表最大五行,只返回最多五行结果。
    • 不同数据库管理系统使用不同的语法:
    -- DB2 数据库
    SELECT prod_name
    FROM Products
    FETCH FIRST 5 ROWS ONLY;
    
    • 1
    • 2
    • 3
    • 4
    -- ORACLE 数据库
    SELECT prod_name
    FROM Products
    WHERE ROWNUM <= 5;
    
    • 1
    • 2
    • 3
    • 4
    -- MySQL、MariaDB、PostgreSQL、SQLite 数据库
    SELECT prod_name
    FROM Products
    LIMIT 5;
    
    • 1
    • 2
    • 3
    • 4
    • 拓展:LIMITOFFSET 结合,LIMIT 指定返回的行数,OFFSET 执行从哪里开始。LIMIT 5 OFFSET 5 代表从第5行起的5行数据。
    • 注意 第5行 其实是 第6个 数据。因为第一个被检索的行是 第0行。

    注释规则

    不同的数据库管理系统中注释规则有所不同,但是大差不差,读者在不同的 DBMS 自行尝试;

    -- 这是一条行内注释
    
    • 1
    # 这个行内注释方法只有部分 DBMS 支持
    
    • 1
    /*
    	这是一个多行注释方法
    	大部分 DBMS 都适用
    */
    
    • 1
    • 2
    • 3
    • 4

    排序检索数据

    s q l sql sql 使用 ORDER BY 子句进行排序;

    单列排序

    检索 Products 表中 prod_name 列,并将检索结果以字母顺序排序;

    SELECT prod_name
    FROM Products
    ORDER BY prod_name;
    
    • 1
    • 2
    • 3
    • 注意 ORDER BY 子句的位置必须保证是语句中最后一列;
    • 可以使用非检索的列作为排序要求。

    多列排序

    Products 的多列检索结果首先按照价格、然后按照名称排序;

    SELECT prod_id, prod_price, prod_name
    FROM Products
    ORDER BY prod_price, prod_name;
    
    • 1
    • 2
    • 3

    按列位置排序

    Products 的多列检索结果按照相对列位置进行排序;

    SELECT prod_id, prod_price, prod_name
    FROM Products
    ORDER BY 2,3;
    
    • 1
    • 2
    • 3
    • 即,先按相对位置2 prod_price 然后按相对位置3 prod_name 进行排序。

    指定排序方向

    数据排序默认方向为:“升序”(从A-Z)方向。升序排序的关键词为 ASC,Ascending;
    有升序就有降序,降序排序的关键词为 DESC,即 Descending;

    -- DESC 案例
    SELECT prod_id, prod_name, prod_price
    FROM Products
    ORDER BY prod_price DESC;
    
    • 1
    • 2
    • 3
    • 4
    • 拓展:读者思考下列代码是按照什么排序方向组合?
    SELECT prod_id, prod_name, prod_price
    FROM Products
    ORDER BY prod_price DESC, prod_name;
    
    • 1
    • 2
    • 3

    答案是先按照 prod_price 降序,对其中结果按照 prod_name 升序方向排序。


    以上

  • 相关阅读:
    用DIV+CSS技术设计的体育篮球主题 校园体育网页与实现制作(web前端网页制作课作业)
    掌握Linux常用命令,扫平面试需求障碍
    NSSCTF
    iOS 开发中上传 IPA 文件的方法(无需 Mac 电脑)
    二、VUE3 基础教程
    探索人工智能 | 模型训练 使用算法和数据对机器学习模型进行参数调整和优化
    模电学习路径
    疾控物资管理系统-疾控中心物资管理系统
    MySQL数据库中MHA高可用的搭建以及原理详解
    扁平的数据转树状数据
  • 原文地址:https://blog.csdn.net/weixin_43098506/article/details/133804622