• 【数据库】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 升序方向排序。


    以上

  • 相关阅读:
    网络爬虫之HTTP原理
    嵌入式开发中Cache问题的解决方法
    Compose进度条
    视频剪辑助手:轻松实现视频随机分割并提取音频保存
    深入探讨栈数据结构:定义、特性和应用
    【云栖2023】王峰:开源大数据平台3.0技术解读
    威锋VL211是USB 3.1 Gen1集线器控制器,完全符合USB 3.1 Gen1规范
    乐吾乐Topology-le5le为智慧电力可视化赋能(一)
    Oracle中ALTER TABLE的五种用法(一)
    CEP开发基础知识-AI|PS|AE插件-事件机制-文件操作-界面颜色
  • 原文地址:https://blog.csdn.net/weixin_43098506/article/details/133804622