mysql实现条件限制语句的实例(一)

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&gt; select * from 4a where score=78 or score=88 or score&gt;88 or score<p>通过这个例子我们可以看出:一个<a style="color:#f60; text-decoration:underline;" title="mysql" href="https://www.php.cn/zt/15713.html" target="_blank">mysql</a>语句中可以有许多个or子句。</p><p>3.in语句:</p><pre class="brush:sql;toolbar:false">mysql&gt; 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&gt; select * from 4a where score in (score&gt;60);  Empty set (0.00 sec)

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

mysql&gt; select * from 4a where score&gt;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&gt; select * from 4a where (score&gt;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子句。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享