《MySQL必知必会》——查询语句

查询语句是使用数据库的基本语法,为了使用SELECT检索表数据,必须至少给出两条信息——想选择什么数据,以及从什么地方选择。

检索数据

  • 检索单个列
SELECT name from tables;

此时查询出来的数据是不带任何排序的。

  • 检索多个列
SELECT id,name,price from tables;

以上是列举出要检索的三个列,如果要检索出所有的列,可以使用通配符(*)来返回表中所有的列:

SELECT * from tables;
  • 检索不同的行
    如果检索出来的结果不想每个值都出现,可以使用DISTINCT关键字来指示mysql返回不同的值。
SELECT DISTINCT name from tables;

DISTINCT 关键字应用于所有列而不仅是前置它的列。

  • 限制结果
    如果只需要返回表中的前几行,可以使用LIMIT子句:
SELECT name from tables LIMIT 5;

这里返回的是从0-4行数据。如果要指定返回中间的几行:

SELECT name from tables LIMIT 3,4;

表示检索从行3开始的4行数据。
另外MySQL 5为了更好的表示,支持了另外一种写法:

SELECT name from tables LIMIT 4 OFFSET 3 ;

排序检索数据

为了明确地排序检索出来的数据,可以使用ORDER BY子句。

  • 按单个列排序
SELECT name from tables ORDER BY name ;
  • 按多个列排序
SELECT name,price from tables ORDER BY name,price;

先对name进行排序,仅当有相同name时候才对结果继续进行price进行排序。如果所有name是唯一的,则不会按price排序。

  • 指定排序方向
    mysql默认是按升序排列,如果要指定以降序排序,使用DESC 关键字来排序:
SELECT id,name from tables ORDER BY name DESC

过滤数据

使用WHERE子句可以帮助只检索出所需要的数据

  • 等值过滤
    MySQL在进行等职匹配时默认不区分大小写。
SELECT  name from tables where name ='LIMING';
  • 不等值匹配
    不等值的匹配有两种方式,一个是 <> ,另一个是使用!= 符号,两种方式都可以。
SELECT  id,name,price from tables where price <>10;
SELECT  id,name,price from tables where price !=10;
  • 范围检索
    为了检索出某个范围的值,可以使用BETWEEN子句
SELECT name,price from tables WHERE price  BETWEEN 5 AND 10 ;
  • 空值检查
    如果一个列不包含任何值,则称为空值NULL。它与0、空字符串都不同,如果要判断某个字段是不是空值,可以用 IS NULL子句
SELECT name from price IS NULL ;

下一篇介绍数据过滤的各种操作符