《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 ;
下一篇介绍数据过滤的各种操作符