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)的主要内容,如果未能解决你的问题,请参考以下文章