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


本文摘自PHP中文网,作者黄舟,侵删。

1.between语句:

1

2

3

4

5

6

7

8

9

10

11

12

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)

1

2

3

4

5

6

7

8

9

10

11

12

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语句:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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语句:

1

2

3

4

5

6

7

8

9

10

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)

1

2

mysql> select * from 4a where score in (score>60);

Empty set (0.00 sec)

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

1

2

3

4

5

6

7

8

9

10

11

12

13

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语句:

1

2

3

4

5

6

7

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实现条件限制语句的实例(一)的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

mysql如何使用正则表达式?(代码示例)

mysql如何设置慢查询日志?

centos下安装mysql5.6.10和安全配置教程详解

mysql如何查看连接数和连接状态

mysql基础语言是什么

详解分析mysql8.0的内存消耗

mysql中关于冗余和重复索引

如何解决mysql错误1054modify

怎样用mysql建表?

mysql中union与union all的用法

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...