MySQL SELECT检索数据

来源:互联网 发布:Java列表迭代器 编辑:程序博客网 时间:2024/05/17 03:08

说明:本文所使用的数据库样例表创建脚本下载地址:https://github.com/zhaoxd298/mysql_scripts

  SELECT语句是SQL中最常用的语句。它的用途是从一个或多个表中检索信息。为了使用SELECT检索表数据,必须至少给出两条信息:
  1.想选择什么;
  2.从什么地方选择。

1.检索单列
  我本地数据库crashcourse中的有一个表为producs。下面给出从该表中检索prod_name列指令:

mysql> USE crashcourse;mysql> SELECT prod_name    -> FROM products;

执行结果:
这里写图片描述

  上述指令SELECT prod_name FROM products;prod_name 为想要选择的内容,products为选择的地方,其中间通过FROM关键字连接。

2.检索多个列
  要想从一个表中检索多个列,必须在SELECT关键字后面给出多个列名,列名之间必须用逗号分隔。下面给出从表products中检索prod_id和prod_name以及prod_price,指令如下:

mysql> SELECT prod_id, prod_name, prod_price    -> FROM products;

执行结果:
这里写图片描述

3.检索所有列
  SELECT可以使用通配符(*)来检索所以列,指令如下:

mysql> SELECT *     -> FROM products;

执行结果:
这里写图片描述

4.检索不同的行
  下面检索出products表中产品的所有供应商ID:

mysql> SELECT vend_id    -> FROM products;

执行结果:
这里写图片描述
  
  上述结果中有很多重复的信息,如何将重复的信息过滤掉,只显示出不同的内容呢?解决办法是使用DISTINCT关键字,此关键字让MySQL只返回不同的值,指令如下:

mysql> SELECT DISTINCT vend_id    -> FROM products;

执行结果:
这里写图片描述

注意:不能部分使用DISTINCT关键字,它应用于所有列,而不仅是前置它的列。

5.限制结果
  SELECT语句默认返回所有的行,如果只需要返回其中1行或者几行,可以用LIMIT子句,举例说明:

mysql> SELECT prod_name    -> FROM products    -> LIMIT 5;

执行结果:
这里写图片描述
  
上述指令返回查询到的前5条指令,为了得到下一个5行可以使用指令:

mysql> SELECT prod_name    -> FROM products          -> LIMIT 5, 5;

执行结果:
这里写图片描述

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

注意:此处的行数是从0开始的,比如LIMIT 1, 1检索出来的是实际的第二行,而不是第一行。

6.使用完全限定的表名
  前面的指令在执行之前都需要先通过USE crashcourse来指定要操作的数据库,如果使用完全限定的表名的话,可以省去USE crashcourse操作,下面给出示例:

$ mysql -uroot -pmysql> SELECT products.prod_name    -> FROM crashcourse.products;

执行结果:
这里写图片描述

上述示例中在重新连接数据库之后使用完全限定表名依然查询到了信息。