MySQL 2 SQL数据使用(检索排序过滤:SELECT/FROM/LIMIT/ORDER BY/DESC/WHERE/AND/OR/IN/NOT)

Posted 吉吉boy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 2 SQL数据使用(检索排序过滤:SELECT/FROM/LIMIT/ORDER BY/DESC/WHERE/AND/OR/IN/NOT)相关的知识,希望对你有一定的参考价值。

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

选择什么?从哪里选?

多条SQL语句必须以分号分隔;SQL语句不区分大小写。空格被忽略,可以用一或多个空格分开指令。

 

检索单个列:

  SELECT 列名  FROM 表名;

检索多个列: 当心逗号

  SELECT 列1,列2,列3  FROM 表;

检索所有列:(*)通配符

  SELECT * FROM 表;

DISTINCT关键字:指示mysql只返回不同的值

  SELECT DISTINCT 列 FROM 表;

LIMIT关键字:限制结果

  SELECT 列 FROM 表 LIMIT 5;  //只选择其中5条记录返回

  如果要指定开始的行:  SELECT 列 FROM 表 LIMIT 5, 5;  //从第5行开始,选择5行返回。数据不足时,只返回满足行的数据。第一行行号为0。

  LIMIT m, n;  //从m行开始返回n行  一个等同的写法是:LIMIT m OFFSET n;

 

使用完全限定的表名:

  SELECT products.prod_name FROM products;  //同时使用表名和列名来引用列

  SELECT products.prod_name  FROM  crashcourse.products;  //表可以用数据库名和表名一起来限制

 

2.  排序数据

子句:SQL语句由子句构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。

ORDER BY子句取一个或多个列对输出进行排序。

  SELECT 列 FROM 表 ORDER BY 列;  //以列对输出进行排序

ORDER BY子句选择的列通常是显示的列,但也可使用未检索的列。

 

按多个列进行排序:

  指定列名,列名之间用逗号分隔开。

  SELECT prod_id, prod_price, prod_name

  FROM products

  ORDER BY prod_price, prod_name;

在按多个列排序时,排序完全按照所规定的顺序进行。按上述例子就是 在prod_price相同时按prod_name进行排序。

 

指定排序方向:  ORDER BY默认升序,还可以降序,要使用DESC配合。

  SELECT prod_id, prod_price, prod_name

  FROM products

  ORDER BY prod_price DESC;

DESC在ORDER BY所指列后面表示该列按降序排序,即Z~A。

  SELECT prod_id, prod_price FROM products ORDER BY prod_id DESC, prod_price;

与DESC相反的关键字是ASC,但一般省略,因为默认就是按升序排列。

排序中,大小写字母被视为相同。

 

ORDER BY子句的位置:应跟在FROM 子句后面。如果使用LIMIT,他必须位于ORDER BY之后。

  SELECT prod_id FROM products

  ORDER BY prod_id

  LIMIT 3, 5;

 

 

3. 过滤数据 WHERE

搜索条件:过滤条件,检索数据时根据特定操作或报告的需要提取数据的子集。

WHERE子句在表名(FROM子句)之后给出:

  SELECT prod_name, prod_price

  FROM products

  WHERE prod_price=2.50;

只过滤出prod_price等于2.5的数据。

 

WHERE子句操作符:(<>和!=相同)

  =, <>, !=, <, <=, >, >=, BETWEEN

BETWEEN和AND一起使用

  SELECT prod_name FROM products BETWEEN 5 AND 10;

空值检查:NULL空值,它与字段包含0、空字符串或仅仅含有空格不同。

通过IS NULL检查具有NULL值的列:

  SELECT prod_name FROM products WHERE prod_price IS NULL;  //返回prod_price为空的记录中的prod_name

 

组合WHERE子句:

操作符:用来联结或改变WHERE子句中的子句的关键字,也称为逻辑操作符。

AND操作符:用来检索满足前后条件的行

  SELECT prod_id, prod_price, prod_name

  FROM products

  WHERE vend_id = 1003 AND prod_price <= 10;

 

OR操作符:

它指示MySQL检索匹配任一条件的行。

  SELECT prod_name, prod_price

  FROM products

  WHERE vend_id = 1002 OR vend_id = 1003;

 

计算次序:

WHERE可包含任意数目的AND和OR操作符。允许两者结合以进行复杂和高级的过滤。

SQL在处理OR操作符前,优先处理AND操作符。

可以用括号括住一个WHERE后的条件。

 

IN操作符:

用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中

  SELECT prod_name, prod_price

  FROM products

  WHERE vend_id IN (1003, 1002)

  ORDER BY prod_name;

IN操作符与OR操作符有所重叠,IN操作符要比OR操作符方便处理长的合法选项清单,且IN操作符速度较快。IN还可以包含其它SELECT子句。

 

NOT操作符:

WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件。

  SELECT prod_name, prod_price

  FROM products

  WHERE vend_id NOT IN (1002,1003)

  ORDER BY prod_name;

 

以上是关于MySQL 2 SQL数据使用(检索排序过滤:SELECT/FROM/LIMIT/ORDER BY/DESC/WHERE/AND/OR/IN/NOT)的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句检索数据排序及过滤

《SQL必知必会》读书笔记上(第1~15章)

4. MySQL必知必会之排序检索数据-ORDER BY

SQL的学习

Mysql从入门到入魔——3. 查询排序WHERE过滤

MySQL检索和过滤数据