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子句。