明辉手游网中心:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

mysql完成条件局限语句的案例(一)

[摘要]1.between语句:mysql> select * from 4a where score between 76 and 89;+--------+------+--------+----...
1.between语句:

mysql> select * from 4a where score between 76 and 89;
+--------+------+--------+------+--------+------+------+-------+
  sname    sage   tname    t      cname    s      c      score  
+--------+------+--------+------+--------+------+------+-------+
  刘一       18   贺高        2   数学        1      2      78  
  钱二       19   叶平        1   语文        2      1      79  
  钱二       19   贺高        2   数学        2      2      81  
  张三       17   杨艳        3   英语        3      3      88  
  李四       18   贺高        2   数学        4      2      88  
  王五       17   杨艳        3   英语        5      3      78  
+--------+------+--------+------+--------+------+------+-------+
6 rows in set (0.02 sec)
mysql> select * from 4a where score between 78 and 88;
+--------+------+--------+------+--------+------+------+-------+
  sname    sage   tname    t      cname    s      c      score  
+--------+------+--------+------+--------+------+------+-------+
  刘一       18   贺高        2   数学        1      2      78  
  钱二       19   叶平        1   语文        2      1      79  
  钱二       19   贺高        2   数学        2      2      81  
  张三       17   杨艳        3   英语        3      3      88  
  李四       18   贺高        2   数学        4      2      88  
  王五       17   杨艳        3   英语        5      3      78  
+--------+------+--------+------+--------+------+------+-------+
6 rows in set (0.00 sec)

由这两个例子我们可以看出between子句执行时取值范围时是包括它的边界值的。

2.or语句:

mysql> select * from 4a where score=78 or score=88 or score>88 or score<60;
+--------+------+--------+------+--------+------+------+-------+
  sname    sage   tname    t      cname    s      c      score  
+--------+------+--------+------+--------+------+------+-------+
  刘一       18   叶平        1   语文        1      1      56  
  刘一       18   贺高        2   数学        1      2      78  
  刘一       18   周磊        4   物理        1      4      58  
  钱二       19   杨艳        3   英语        2      3      92  
  张三       17   叶平        1   语文        3      1      91  
  张三       17   贺高        2   数学        3      2      47  
  张三       17   杨艳        3   英语        3      3      88  
  张三       17   周磊        4   物理        3      4      56  
  李四       18   贺高        2   数学        4      2      88  
  李四       18   杨艳        3   英语        4      3      90  
  李四       18   周磊        4   物理        4      4      93  
  王五       17   叶平        1   语文        5      1      46  
  王五       17   杨艳        3   英语        5      3      78  
  王五       17   周磊        4   物理        5      4      53  
  赵六       19   叶平        1   语文        6      1      35  
  NULL     NULL   NULL     NULL   NULL     NULL   NULL      93  
+--------+------+--------+------+--------+------+------+-------+
16 rows in set (0.00 sec)

通过这个例子我们可以看出:一个mysql语句中可以有许多个or子句。

3.in语句:

mysql> select * from 4a where score in (78,93);
+--------+------+--------+------+--------+------+------+-------+
  sname    sage   tname    t      cname    s      c      score  
+--------+------+--------+------+--------+------+------+-------+
  刘一       18   贺高        2   数学        1      2      78  
  李四       18   周磊        4   物理        4      4      93  
  王五       17   杨艳        3   英语        5      3      78  
  NULL     NULL   NULL     NULL   NULL     NULL   NULL      93  
+--------+------+--------+------+--------+------+------+-------+
4 rows in set (0.00 sec)
mysql> select * from 4a where score in (score>60);
Empty set (0.00 sec)

看来in语句只能对括号内的具体的某条或某几条记录进行匹配,而无法对其进行逻辑匹配。

mysql> select * from 4a where score>85;
+--------+------+--------+------+--------+------+------+-------+
  sname    sage   tname    t      cname    s      c      score  
+--------+------+--------+------+--------+------+------+-------+
  钱二       19   杨艳        3   英语        2      3      92  
  张三       17   叶平        1   语文        3      1      91  
  张三       17   杨艳        3   英语        3      3      88  
  李四       18   贺高        2   数学        4      2      88  
  李四       18   杨艳        3   英语        4      3      90  
  李四       18   周磊        4   物理        4      4      93  
  NULL     NULL   NULL     NULL   NULL     NULL   NULL      93  
+--------+------+--------+------+--------+------+------+-------+
7 rows in set (0.00 sec)

显然where的功能要比in强大得多,因此where的命令优先级也比高一些。而相同条件下where的搜寻范围也比in要大一点---毕竟功能多了,要搜寻的东西就多了。所以,相同的查询条件下where的效率会比in稍微差一点点,当然也仅仅是一点点而已。当然由于in的命令优先级较where低,所以用in的话SQL语句也更容易报错。

and语句:

mysql> select * from 4a where (score>85 and sage=18) and t=2;
+--------+------+--------+------+--------+------+------+-------+
  sname    sage   tname    t      cname    s      c      score  
+--------+------+--------+------+--------+------+------+-------+
  李四       18   贺高        2   数学        4      2      88  
+--------+------+--------+------+--------+------+------+-------+
1 row in set (0.00 sec)

通过这个例子我们可以看出:一个mysql语句中可以有许多个and子句。

以上就是mysql实现条件限制语句的实例(一)的详细内容,更多请关注php中文网其它相关文章!


学习教程快速掌握从入门到精通的SQL知识。