MySQL检索数据(select),排序检索数据

根据需求检索数据非常重要,下面将一步步的对检索(select)进行逐步学习

先附上我要用到的表(仅用于测试sql语句,练习时尽量根据自己需要设计)

MySQL检索数据(select),排序检索数据

1.查询出所有属性值,有两种方法,一种是使用通配符*查询  select*from yi;  ,另一种是 select id,name,aeg,sex,tel from yi;

    如果我们只想查询部分的列,只需要将需要的列名称用逗号隔开依次列出 ,如只要name和age列 select name,aeg from yi;

需要注意的是,*通配符虽然方便,但我们在实际开发中一般不建议使用它,因为检索不需要的列会降低检索的速率和应用程序的性能,但通配符也有一个优势就是可以检索出未知列。

2.distinct关键字,Mysql只返回不同的值 

   例:select distinct age from yi;

       去掉了相同的年龄数

MySQL检索数据(select),排序检索数据

3.limit子句,表示返回不多于多少行

   select*form yi limit 2;表示只显示前两行

  select*from yi limit2,3;与select*from yi limit 3 offset 2;都表示从第二行开始显示3行

注意:检索出来的第一行是0不是1(我们的id通常是从1开始),所以limit2,3如下图表示

MySQL检索数据(select),排序检索数据

  4.order by 子句

  例:seelct 列1 from 表名 order by 列1;

          按列1为基准,以字母顺序排序,用非检索的列排序也是完全合法的

MySQL检索数据(select),排序检索数据

例:select 列1,列2 from 表名 order by 列1,列2;

          先按列1排序,再按列2排序

MySQL检索数据(select),排序检索数据

例:select 列1.列2 from 表名 order by 列1 desc,列2 ;

       select 列1.列2 from 表名 order by 列1 desc,列2 desc;

         DESC关键字是按降序排列,相对应的ASC(基本不用)是升序排列;desc关键字只运用到直接位于其前面的列名,若要对每个列进行降序排序,必须对每个列指定desc关键字

MySQL检索数据(select),排序检索数据

例:select 列1 from 表名 order by 列1 desc limit 1;

          找出列1中的最大值(逻辑简单自己分析下,如果还有疑问请评论留言),还有在使用子句的时候一定注意它们的顺序 ,次序不对会产生错误信息。

MySQL检索数据(select),排序检索数据

5.where子句:wherer子句在select中使用支持多种操作符过滤数据,以检索出我们需要的数据。

    支持以下操作符:

           =                       等于

          <>                     不等于

          !=                     不等于

           <                         小于

           >                         大于

          <=                      小于等于

          >=                       大于等于

          between              在指定的两个值之间,between  小值 and  大值

例:select 列1,列2,列3 from 表名 where 条件1;

MySQL检索数据(select),排序检索数据

例:select 列1,列2 from 表名 where 列1 between 小值 and 大值;

MySQL检索数据(select),排序检索数据

6.and和or关键字(有关where的操作符):and用来指出检索时必须满足所有条件的行,or用来指出检索时只需要满足任一条件的行

例:select 列1,列2 from 表名 where 条件1 and 条件2;

MySQL检索数据(select),排序检索数据

例:select 列1,列2 from 表名 where 条件1 or 条件2;

  MySQL检索数据(select),排序检索数据

次序问题:当and和or同时出现在一个where语句中时,按照语法优先级一般是先执行and在执行or,所以使用圆括号来明确的分组相应的操作符。建议存在它们两者时都要使用圆括号,可以有效的规避歧义

例:select 列1,列2 from 表名 where 条件1 or 条件2 and 条件3;

       select 列1,列2 from 表名 where (条件1 or 条件2 )and 条件3;

MySQL检索数据(select),排序检索数据

7.In操作符:in操作符和or操作符的功能一样,in后面的清单必须用圆括号括起来,在不同条件之间用逗号隔开

   in具有的优点

   (1)使用合法选项清单时,in操作符语法更清晰,更直观

   (2)减少or的使用次数,操作符减少计算的次序更容管理

   (3)in操作符一般比or操作符执行速率更快

   (4)in还可以包含select语句,使能够动态的建立where子句(最大的优点)

例:select 列1,列2 from 表名 where 列 in (条件1,条件2);

MySQL检索数据(select),排序检索数据

8.not操作符:在where子句中not操作符只有一个功能,就是否定它之后的所跟的任何条件

例:select 列1,列2 from 表名 where 列1 not in(条件1,条件2);

      解释:列出条件1和条件2以外的所有

MySQL检索数据(select),排序检索数据

在复杂的语句中利用not和or组合可以很容易的找到不匹配的项,此外在MySQL中not还可以接between,exists子句取反。