【MySQL必知必会(二)】【检索数据+排序检索数据】

上一篇:【MySQL必知必会(一)】【官方数据库表及SQL脚本导入生成】

文章目录

  • 一、 检索数据
    • 1.1 SELECT语句
    • 1.2 检索单个列
      • 1.2.1 未排序数据
      • 1.2.2 结束SQL语句
      • 1.2.3 SQL语句和大小写
    • 1.3 检索多个列
      • 1.3.1 逗号
    • 1.4 检索所有列
      • 1.4.1 使用通配符
    • 1.5 检索不同的行
    • 1.6 限制结果
      • 1.6.1 行0
    • 1.7 使用完全限定表名
  • 二、 排序检索数据
    • 2.1 排序数据
    • 2.2 按多个列排序
    • 2.3 指定排序方向
      • 2.3.1 在多个列上降序排列
      • 2.3.2 ORDER BY子句的位置

一、 检索数据

使用SELECT语句从表中检索一个或多个数据列

1.1 SELECT语句

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

1.2 检索单个列

mysql> SELECT prod_name
    -> FROM products;

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

【MySQL必知必会(二)】【检索数据+排序检索数据】_第1张图片

1.2.1 未排序数据

会发现多次试验这个查询,会发现显示输出的数据顺序不同,如果没有明确排序查询结果,则返回的数据的顺序没有特殊意义。返回数据的顺序是随机的。只要返回行数相同就是正常现象。

1.2.2 结束SQL语句

多条SQL语句必须以分号分隔。MySQL如同多数DBMS一样,不需要在单条SQL语句后加分号。但特定的DBMS可能必须在单条SQL语句后加上分号。如果使用的是mysql命令行,必须加上分号来结束SQL语句。

1.2.3 SQL语句和大小写

SQL语句不区分大小写,许多SQL开发人员喜欢对所有SQL关键字使用大写,对所有列和表名使用小写,这样使代码更易于阅读和调试。

1.3 检索多个列

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

1.3.1 逗号

在选择多个列时,一定要在列名之间加上逗号,但最后一个列名后不加,如果在最后一个列名后加了逗号,将出现错误。

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

【MySQL必知必会(二)】【检索数据+排序检索数据】_第2张图片

1.4 检索所有列

通过在实际列名的位置使用*通配符

mysql> SELECT *
    -> FROM products;

【MySQL必知必会(二)】【检索数据+排序检索数据】_第3张图片

1.4.1 使用通配符

减少使用*通配符,但检索不需要的列通常会减低检索和应用程序的性能。

1.5 检索不同的行

使用DISTINCT关键字 ,只返回不同的值

mysql> SELECT DISTINCT vend_id
    -> FROM products;

【MySQL必知必会(二)】【检索数据+排序检索数据】_第4张图片

1.6 限制结果

返回第一行或前几行,可使用LIMIT子句

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

LIMIT 5指示MySQL返回不多于5行

【MySQL必知必会(二)】【检索数据+排序检索数据】_第5张图片

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

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

【MySQL必知必会(二)】【检索数据+排序检索数据】_第6张图片

1.6.1 行0

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

1.7 使用完全限定表名

mysql> SELECT products.prod_name
    -> FROM products;

完全限定的列名

【MySQL必知必会(二)】【检索数据+排序检索数据】_第7张图片

二、 排序检索数据

2.1 排序数据

返回某个数据库表的单个列,没有特定的顺序

mysql> SELECT prod_name
    -> FROM products;

【MySQL必知必会(二)】【检索数据+排序检索数据】_第8张图片

mysql> SELECT prod_name
    -> FROM products
    -> ORDER BY prod_name;

按字母顺序排序数据

【MySQL必知必会(二)】【检索数据+排序检索数据】_第9张图片

2.2 按多个列排序

多个列排序,只要指定列名,列名之间用逗号分开即可

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

【MySQL必知必会(二)】【检索数据+排序检索数据】_第10张图片

2.3 指定排序方向

默认为升序(从A到Z),降序DESC关键字

mysql> SELECT prod_id, prod_price, prod_name
    -> FROM products
    -> ORDER BY prod_price DESC;

【MySQL必知必会(二)】【检索数据+排序检索数据】_第11张图片

mysql> SELECT prod_id, prod_price, prod_name
    -> FROM products
    -> ORDER BY prod_price DESC, prod_name;

【MySQL必知必会(二)】【检索数据+排序检索数据】_第12张图片

DESC关键字只应用到直接位于其前面的列名。

2.3.1 在多个列上降序排列

如果想在多个列上进行降序排列,必须对每个列指定DESC关键字

2.3.2 ORDER BY子句的位置

给出ORDER BY子句时,应该保证它位于FROM子句之后。如果使用LIMIT,它必须位于ORDER BY之后。使用子句的次序不对将产生错误消息。

你可能感兴趣的:(MySQL必知必会,mysql)