限制mysql语句_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> 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子句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值