欢迎关注微信公众号:摸鱼汪的杂货铺
四、检索数据
4.1SELECT语句
SQL语句是由简单的英语单词构成的。这些单词称为关键字,每个SQL语句都是由一个或多个关键字构成的。最经常使用的SQL了语句就是SELECT语句了。他的用途是从一个或多个表中检索信息。
4.2检索单个列
SELECT name FROM user
上述语句利用SELECT语句从user表中检索一个名为name的列。所需要的列明在SELECT关键字之后给出,FROM关键字指出从其中检索数据的表名。(如果使用mysql命令行,必须加上分号来结束SQL语句,SQL语句是不区分大小写)
4.3检索多个列
想要从表中检索多个列,使用相同的SELECT语句。唯一的不同是必须在SELECT关键字后给出多个列名,列名之间必须以分号隔开。
SELECT name,age,address FROM user;
在选择多个列时,一定要在列名之间加上逗号,但最后一个列名后不加,如果在最后一个列名加上逗号将出现错误。
4.4检索所有列
除了指定所需的列外,SELECT语句还可以检索所有的列而不必逐个列出他们。这可以通过在实际列名的位置使用星号(*)通配符来达到。
SELECT * FROM user
如果给定一个通配符(*),则返回表中所有列。列的顺序一般式的变化(如添加或删除列)可能会导致顺序的变化。
一般,除非你确实需要表的每个列,否则最好别使用星号通配符,虽然使用通配符可能会使你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。
4.5检索不同的行
如何只检索出有不同值得列表呢,使用DISTINCT关键字
SELECT DISTINCT age FROM user;
使用DISTINCT关键字,顾名思义,此关键字指示MySQL只返回不同得值。
SELECT DISTINCT age告诉MySQL只返回不同得age行,因此只返回两行,如上图所示。
4.6限制结果
SELECT语句返回所有匹配得行,他们可以是指定表中得每个行。为了返回第一行或前几行,可使用LIMIT字句。
SELECT * FROM user LIMIT 2;
此语句使用SELECT语句检索单个列。LIMIT 2指是MySQL返回不多于2行。
行0 检索出来得第一行为行0而不是行1,因此,LIMIT 1,1将检索出第二行而不是第一行。
LIMIT 4 OFFSET 3意为从3行还是取4行就像LIMIT3,4一样
LIMIT 要获取得行数 OFFSET 从第几行开始但不含这行;
五、排序检索数据
5.1排序数据
子句(clause) SQL语句由自居构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。子句的例子由SELECT语句的FROM子句,我们在前一节看到过这个例子。
为了明确的排序用SELECT语句检索出的数据,可使用ORDER BY子句。
SELECT * FROM user ORDER BY age;
5.2按多个列排序
为了按多个列排序只要指定列名,列名之间用逗号分开即可。
SELECT * FROM USER ORDER BY age,email;
5.3指定方向排序
数据排序不限于升序排序(从A到Z)。这只是默认的排序顺序,还可以使用ORDER BY子句以降序(从Z到A)顺序排序。为了进行降序排序必须指定DESC关键字。
SELECT * FROM USER ORDER BY id DESC;
与DESC相反的关键字是ASC(ASCFDING),在升序排序时可以指定它。
使用DRDER BY和LIMIT的组合,弄够找出一个列中最高或最低的值。
如下面找出年龄最大的人的全部信息
SELECT * FROM USER ORDER BY age DESC LIMIT 1;
六、过滤数据
6.1使用WHERE子句
只检索所需数据需要制定搜索条件 (search criteria),搜索条件也称为过滤条件(filter condition)。
在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤WHERE子句在表名(FROM子句)之后给出。
SELECT * FROM user WHERE age=18;
6.2WHERE子句操作符
6.2.1检查单个值
检查等于‘李四’的值(MySQL语句不区分大小写)
SELECT * FROM USER WHERE NAME='李四';
6.2.2不匹配检查
列出年龄不等于18的所有用户信息
SELECT * FROM USER WHERE age<>18;
6.2.3范围值检查
为了检查某个范围的值,可以使用BETWEEN操作符。与其他操作语句有所不同,他需要两个值,检索17到18岁之间的用户信息。
SELECT * FROM USER WHERE age BETWEEN 17 AND 18;
6.2.4空值检查
NULL 无值(no value),它与字段包含0、空字符串或仅仅包含空格不同,
SELECT语句有一个特殊的WHERE子句,可用来检查具有NULL值的列。这个WHERE子句就是IS NULL子句。
SELECT * FROM USER WHERE qq IS NULL;