zoukankan      html  css  js  c++  java
  • MySQL基础之检索数据

    SELECT语句

    每个SQL语句都是由一个或多个关键字构成的。最常使用的SQL语句是SELECT语句。它的用途是从一个或多个表中检索信息。

    为了使用SELECT检索表中的数据, 必须至少给出两条信息--想要选择什么, 以及从什么地方选择

    检索单个列

    MariaDB [crashcourse]> SELECT prod_name from products;
    +----------------+
    | prod_name      |
    +----------------+
    | .5 ton anvil   |
    | 1 ton anvil    |
    | 2 ton anvil    |
    | Detonator      |
    | Bird seed      |
    | Carrots        |
    | Fuses          |
    | JetPack 1000   |
    | JetPack 2000   |
    | Oil can        |
    | Safe           |
    | Sling          |
    | TNT (1 stick)  |
    | TNT (5 sticks) |
    +----------------+
    14 rows in set (0.000 sec)
    
    MariaDB [crashcourse]> 

    利用SELECT语句从products表中检索一个名为prod_name的列。所需的列名在SELECT关键字之后给出, FROM关键字指出从其中检索数据的表名。

    如上一条简单的SELECT语句将返回表中所有的行。数据是没有过滤(过滤将得到一个结果集的子集), 也没有排序

    结束SQL语句

    多条SQL语句必须以分号(;)分隔。

    SQL语句和大小写

    SQL语句不区分大小写, 因此写SELECT和select是相同的。

    使用空格

    在处理SQL语句时, 其中所有空格都被忽略。SQL语句可以在一行上给出, 也可以分为多行。

    检索多个列

    要想从一个表中检索多个列, 使用相同的SELECT语句。唯一不同的是必须在SELECT关键字后面给出多个列名, 列名之间必须以逗号分隔。

    注意:

    在选择多个列时, 一定要在列名之间使用逗号分隔, 但是最后一个列名后不加, 如果在最后一个列名后加了逗号, 会报错

    例如: 从products表中选择3列

    MariaDB [crashcourse]> SELECT prod_id, prod_name, prod_price from products;
    +---------+----------------+------------+
    | prod_id | prod_name      | prod_price |
    +---------+----------------+------------+
    | ANV01   | .5 ton anvil   |       5.99 |
    | ANV02   | 1 ton anvil    |       9.99 |
    | ANV03   | 2 ton anvil    |      14.99 |
    | DTNTR   | Detonator      |      13.00 |
    | FB      | Bird seed      |      10.00 |
    | FC      | Carrots        |       2.50 |
    | FU1     | Fuses          |       3.42 |
    | JP1000  | JetPack 1000   |      35.00 |
    | JP2000  | JetPack 2000   |      55.00 |
    | OL1     | Oil can        |       8.99 |
    | SAFE    | Safe           |      50.00 |
    | SLING   | Sling          |       4.49 |
    | TNT1    | TNT (1 stick)  |       2.50 |
    | TNT2    | TNT (5 sticks) |      10.00 |
    +---------+----------------+------------+
    14 rows in set (0.000 sec)
    
    MariaDB [crashcourse]> 

    检索所有列

    SELECT可以检索所有列而不必逐个列出他们。通过在实际列名的位置使用星号(*)通配符来达到。如下所示:

    MariaDB [crashcourse]> SELECT * from products;
    +---------+---------+----------------+------------+----------------------------------------------------------------+
    | prod_id | vend_id | prod_name      | prod_price | prod_desc                                                      |
    +---------+---------+----------------+------------+----------------------------------------------------------------+
    | ANV01   |    1001 | .5 ton anvil   |       5.99 | .5 ton anvil, black, complete with handy hook                  |
    | ANV02   |    1001 | 1 ton anvil    |       9.99 | 1 ton anvil, black, complete with handy hook and carrying case |
    | ANV03   |    1001 | 2 ton anvil    |      14.99 | 2 ton anvil, black, complete with handy hook and carrying case |
    | DTNTR   |    1003 | Detonator      |      13.00 | Detonator (plunger powered), fuses not included                |
    | FB      |    1003 | Bird seed      |      10.00 | Large bag (suitable for road runners)                          |
    | FC      |    1003 | Carrots        |       2.50 | Carrots (rabbit hunting season only)                           |
    | FU1     |    1002 | Fuses          |       3.42 | 1 dozen, extra long                                            |
    | JP1000  |    1005 | JetPack 1000   |      35.00 | JetPack 1000, intended for single use                          |
    | JP2000  |    1005 | JetPack 2000   |      55.00 | JetPack 2000, multi-use                                        |
    | OL1     |    1002 | Oil can        |       8.99 | Oil can, red                                                   |
    | SAFE    |    1003 | Safe           |      50.00 | Safe with combination lock                                     |
    | SLING   |    1003 | Sling          |       4.49 | Sling, one size fits all                                       |
    | TNT1    |    1003 | TNT (1 stick)  |       2.50 | TNT, red, single stick                                         |
    | TNT2    |    1003 | TNT (5 sticks) |      10.00 | TNT, red, pack of 10 sticks                                    |
    +---------+---------+----------------+------------+----------------------------------------------------------------+
    14 rows in set (0.000 sec)
    
    MariaDB [crashcourse]> 

    通配符的使用

    一般, 除非确定需要表中的每个列, 否则最好别使用*通配符。因为使用*通配符检索不需要列的时候通常会降低检索和应用程序的性能

    检索不同的行

    使用DISTINCT关键字可以指示MySQL只返回不同的值。

    MariaDB [crashcourse]> select distinct vend_id from products;
    +---------+
    | vend_id |
    +---------+
    |    1001 |
    |    1002 |
    |    1003 |
    |    1005 |
    +---------+
    4 rows in set (0.001 sec)
    
    MariaDB [crashcourse]> 

    SELECT DISTINCT vend_id告诉MySQL只返回不同(唯一)的vend_id行。如果使用DISTINCT关键字, 它必须直接放在列名的前面

    不能部分使用DISTINCT

    DISTINCT关键字应用于所有列而不仅是前置它的列, 如果给出SELECT DISTINCT vend_id, prod_price, 除非指定的两个列都不相同, 否则所有行都将被检索出来。

    限制结果

    SELECT语句返回匹配的行, 为了返回第一行或者前几行, 可以使用LIMIT语句。

    MariaDB [crashcourse]> SELECT prod_name from products LIMIT 5;
    +--------------+
    | prod_name    |
    +--------------+
    | .5 ton anvil |
    | 1 ton anvil  |
    | 2 ton anvil  |
    | Detonator    |
    | Bird seed    |
    +--------------+
    5 rows in set (0.000 sec)
    
    MariaDB [crashcourse]> 

    此语句使用SELECT语句检索单个列, LIMIT 5指示MySQL返回不多于5行。

    为得出下一个5行, 可指定要检索的开始行和行数。如下所示:

    MariaDB [crashcourse]> SELECT prod_name from products LIMIT 5, 5;
    +--------------+
    | prod_name    |
    +--------------+
    | Carrots      |
    | Fuses        |
    | JetPack 1000 |
    | JetPack 2000 |
    | Oil can      |
    +--------------+
    5 rows in set (0.000 sec)
    
    MariaDB [crashcourse]> 

    LIMIT 5, 5指示MySQL返回行5开始的5行。第一个数为开始位置, 第二个数为要检索的行数。

    所以带一个值的LIMIT总是从第一行开始, 给出的数为返回的行数。带两个值的LIMIT可以指定从行号为第一个值的位置开始

    行0

    检索出来的第一行为行0而不是行1, 因此, LIMIT 1, 1将检索出第二行而不是第一行

    在行数不够时

    LIMIT中指定要检索的行数为检索的最大行数。如果没有足够多的行, MySQL只返回它能返回的那么多行

    MySQL5的LIMIT语法

    LIMIT容易让人混淆, 因此MySQL5支持LIMIT的另一种代替语法。LIMIT 4 OFFSET 3 意为从第3行开始取4行, 就像LIMIT3, 4一样。

    使用完全限定的表名

    SQL语句也可以使用完全限定的名字来引用列(同时使用表名和列名)。

    例如:

    MariaDB [crashcourse]> SELECT products.prod_name FROM crashcourse.products;
    +----------------+
    | prod_name      |
    +----------------+
    | .5 ton anvil   |
    | 1 ton anvil    |
    | 2 ton anvil    |
    | Detonator      |
    | Bird seed      |
    | Carrots        |
    | Fuses          |
    | JetPack 1000   |
    | JetPack 2000   |
    | Oil can        |
    | Safe           |
    | Sling          |
    | TNT (1 stick)  |
    | TNT (5 sticks) |
    +----------------+
    14 rows in set (0.000 sec)
    
    MariaDB [crashcourse]> 
  • 相关阅读:
    springboot配置redis缓存
    【spark】local模式运行
    mybatis从入门到精通(二) 增删查改
    学习设计模式
    学习设计模式
    mybatis从入门到精通(一) 入门
    学习NIO 之 使用方法
    学习 NIO 之 零拷贝
    Java并发
    学习设计模式
  • 原文地址:https://www.cnblogs.com/featherwit/p/13363361.html
Copyright © 2011-2022 走看看