mysql中条件限制语句(二)like 全匹配 全模糊 distinct limit

时间:2022-02-06 02:27:26

5.limit语句:
语法:select 字段名 from 标明 limit 起始行,查询几行;

mysql> select * from 4a limit 0,3;
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 刘一   |   18 | 叶平   |    1 | 语文   |    1 |    1 |    56 |
| 刘一   |   18 | 贺高   |    2 | 数学   |    1 |    2 |    78 |
| 刘一   |   18 | 杨艳   |    3 | 英语   |    1 |    3 |    67 |
+--------+------+--------+------+--------+------+------+-------+
3 rows in set (0.00 sec)

注意:起始行的第一行为0而不是1。

6. like语句:

语法:select 字段名 from 表名 where 字段名 like 条件;

mysql> select * from 4a where sage like "%9" or sage like "%8";
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 刘一   |   18 | 叶平   |    1 | 语文   |    1 |    1 |    56 |
| 刘一   |   18 | 贺高   |    2 | 数学   |    1 |    2 |    78 |
| 刘一   |   18 | 杨艳   |    3 | 英语   |    1 |    3 |    67 |
| 刘一   |   18 | 周磊   |    4 | 物理   |    1 |    4 |    58 |
| 钱二   |   19 | 叶平   |    1 | 语文   |    2 |    1 |    79 |
| 钱二   |   19 | 贺高   |    2 | 数学   |    2 |    2 |    81 |
| 钱二   |   19 | 杨艳   |    3 | 英语   |    2 |    3 |    92 |
| 钱二   |   19 | 周磊   |    4 | 物理   |    2 |    4 |    68 |
| 李四   |   18 | 贺高   |    2 | 数学   |    4 |    2 |    88 |
| 李四   |   18 | 杨艳   |    3 | 英语   |    4 |    3 |    90 |
| 李四   |   18 | 周磊   |    4 | 物理   |    4 |    4 |    93 |
| 赵六   |   19 | 叶平   |    1 | 语文   |    6 |    1 |    35 |
| 赵六   |   19 | 贺高   |    2 | 数学   |    6 |    2 |    68 |
| 赵六   |   19 | 周磊   |    4 | 物理   |    6 |    4 |    71 |
+--------+------+--------+------+--------+------+------+-------+
14 rows in set (0.00 sec)

mysql> select * from 4a where sage like "%9" or sage like "%8" or sage like "%%";
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 刘一   |   18 | 叶平   |    1 | 语文   |    1 |    1 |    56 |
| 刘一   |   18 | 贺高   |    2 | 数学   |    1 |    2 |    78 |
| 刘一   |   18 | 杨艳   |    3 | 英语   |    1 |    3 |    67 |
| 刘一   |   18 | 周磊   |    4 | 物理   |    1 |    4 |    58 |
| 钱二   |   19 | 叶平   |    1 | 语文   |    2 |    1 |    79 |
| 钱二   |   19 | 贺高   |    2 | 数学   |    2 |    2 |    81 |
| 钱二   |   19 | 杨艳   |    3 | 英语   |    2 |    3 |    92 |
| 钱二   |   19 | 周磊   |    4 | 物理   |    2 |    4 |    68 |
| 张三   |   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 |
| 赵六   |   19 | 贺高   |    2 | 数学   |    6 |    2 |    68 |
| 赵六   |   19 | 周磊   |    4 | 物理   |    6 |    4 |    71 |
+--------+------+--------+------+--------+------+------+-------+
21 rows in set (0.00 sec)
可以看出双百分号%%是全匹配,可以匹配表中的所有记录。那么,即便是NULL值也能够匹配吗?

答案是否定的:

ysql> select * from 4a;
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 刘一   |   18 | 叶平   |    1 | 语文   |    1 |    1 |    56 |
| 刘一   |   18 | 贺高   |    2 | 数学   |    1 |    2 |    78 |
| 刘一   |   18 | 杨艳   |    3 | 英语   |    1 |    3 |    67 |
| 刘一   |   18 | 周磊   |    4 | 物理   |    1 |    4 |    58 |
| 钱二   |   19 | 叶平   |    1 | 语文   |    2 |    1 |    79 |
| 钱二   |   19 | 贺高   |    2 | 数学   |    2 |    2 |    81 |
| 钱二   |   19 | 杨艳   |    3 | 英语   |    2 |    3 |    92 |
| 钱二   |   19 | 周磊   |    4 | 物理   |    2 |    4 |    68 |
| 张三   |   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 |
| 赵六   |   19 | 贺高   |    2 | 数学   |    6 |    2 |    68 |
| 赵六   |   19 | 周磊   |    4 | 物理   |    6 |    4 |    71 |
| NULL   | NULL | NULL   | NULL | NULL   | NULL | NULL |    93 |
+--------+------+--------+------+--------+------+------+-------+
22 rows in set (0.05 sec)
7.distinct语句:
语法:select distinct 字段名 from 表名;

mysql> select distinct sname from 4a;          

+--------+
| sname  |
+--------+
| 刘一   |
| 钱二   |
| 张三   |
| 李四   |
| 王五   |
| 赵六   |
| NULL   |
+--------+

mysql> select distinct sname, sage from 4a;
+--------+------+
| sname  | sage |
+--------+------+
| 刘一   |   18 |
| 钱二   |   19 |
| 张三   |   17 |
| 李四   |   18 |
| 王五   |   17 |
| 赵六   |   19 |
| NULL   | NULL |
+--------+------+
7 rows in set (0.00 sec)

mysql> select distinct sname, sage,tname from 4a;
+--------+------+--------+
| sname  | sage | tname  |
+--------+------+--------+
| 刘一   |   18 | 叶平   |
| 刘一   |   18 | 贺高   |
| 刘一   |   18 | 杨艳   |
| 刘一   |   18 | 周磊   |
| 钱二   |   19 | 叶平   |
| 钱二   |   19 | 贺高   |
| 钱二   |   19 | 杨艳   |
| 钱二   |   19 | 周磊   |
| 张三   |   17 | 叶平   |
| 张三   |   17 | 贺高   |
| 张三   |   17 | 杨艳   |
| 张三   |   17 | 周磊   |
| 李四   |   18 | 贺高   |
| 李四   |   18 | 杨艳   |
| 李四   |   18 | 周磊   |
| 王五   |   17 | 叶平   |
| 王五   |   17 | 杨艳   |
| 王五   |   17 | 周磊   |
| 赵六   |   19 | 叶平   |
| 赵六   |   19 | 贺高   |
| 赵六   |   19 | 周磊   |
| NULL   | NULL | NULL   |
+--------+------+--------+
22 rows in set (0.00 sec)

可以看出当作用于多列的时候distinct就不再返回唯一记录了。
另外distinct还可以和一些数学运算的函数一起使用:

mysql> select count(distinct sname) from 4a;
+-----------------------+
| count(distinct sname) |
+-----------------------+
|                     6 |
+-----------------------+
1 row in set (0.08 sec)

mysql> select sum(distinct score) from 4a;
+---------------------+
| sum(distinct score) |
+---------------------+
|                1193 |
+---------------------+
1 row in set (0.06 sec)

mysql> select max(distinct score) from 4a;
+---------------------+
| max(distinct score) |
+---------------------+
|                  93 |
+---------------------+
1 row in set (0.06 sec)

mysql> select min(distinct score) from 4a;
+---------------------+
| min(distinct score) |
+---------------------+
|                  35 |
+---------------------+
1 row in set (0.00 sec)

mysql> select min(distinct score-1) from 4a;
+-----------------------+
| min(distinct score-1) |
+-----------------------+
|                    34 |
+-----------------------+
1 row in set (0.08 sec)

例子太多就不一一列举了。