SELECT * FROM 表名;


一、数据准备
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`username` varchar(32) NOT NULL COMMENT '用户名',
`password` varchar(64) NOT NULL COMMENT '密码',
`nickname` varchar(32) DEFAULT NULL COMMENT '昵称',
`realname` varchar(128) DEFAULT NULL COMMENT '真实姓名',
`face` varchar(1024) NOT NULL COMMENT '头像',
`mobile` varchar(32) DEFAULT NULL COMMENT '手机号',
`email` varchar(32) DEFAULT NULL COMMENT '邮箱地址',
`sex` tinyint(11) DEFAULT NULL COMMENT '性别 1:男 0:女 2:保密',
`birthday` date DEFAULT NULL COMMENT '生日',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_time` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
INSERT INTO `users` (`username`, `password`, `nickname`, `realname`, `face`, `mobile`, `email`, `sex`, `birthday`, `created_time`, `updated_time`)
VALUES
('fossi', 'Qpf0SxOVUjUkWySXOZ16kw==', 'fossi', NULL, 'http://122.152.205.72:88/group1/M00/00/05/CpoxxFw_8_qAIlFXAAAcIhVPdSg994.png', NULL, NULL, 2, '1900-01-01', '2022-08-15 22:11:58', '2022-08-15 22:11:58'),
( '我去个地方', 'Qpf0SxOVUjUkWySXOZ16kw==', '我去个地方', NULL, 'http://122.152.205.72:88/group1/M00/00/05/CpoxxFw_8_qAIlFXAAAcIhVPdSg994.png', NULL, NULL, 1, '1900-01-01', '2022-08-16 23:14:12', '2022-08-16 23:14:12'),
( 'alite', 'Qpf0SxOVUjUkWySXOZ16kw==', 'alite', NULL, 'http://122.152.205.72:88/group1/M00/00/05/CpoxxFw_8_qAIlFXAAAcIhVPdSg994.png', NULL, NULL, 0, '1900-01-01', '2022-08-18 13:25:30', '2022-08-18 13:25:30'),
( 'yummy', '4QrcOUm6Wau+VuBX8g+IPg==', 'yummy', NULL, 'http://bloghello.oursnail.cn/avatar.png', NULL, NULL, 0, '1900-01-01', '2022-08-25 17:46:25', '2022-08-25 17:46:25');

二、查询所有数据
SELECT 列名 FROM 表名;
mysql> select username from users;
+-----------------+
| username |
+-----------------+
| fossi |
| 我去个地方 |
| alite |
| yummy |
+-----------------+
4 rows in set (0.00 sec)
SELECT 列名 [AS] 列的别名 FROM 表名;
mysql> select username as '用户姓名' from users;
+-----------------+
| 用户姓名 |
+-----------------+
| fossi |
| 我去个地方 |
| alite |
| yummy |
+-----------------+
4 rows in set (0.00 sec)
SELECT 列名1, 列名2, … 列名n FROM 表名;
mysql> select id as '主键', username as '用户姓名', nickname as '用户昵称' from users;
+--------+-----------------+-----------------+
| 主键 | 用户姓名 | 用户昵称 |
+--------+-----------------+-----------------+
| 1 | fossi | fossi |
| 2 | 我去个地方 | 我去个地方 |
| 3 | alite | alite |
| 4 | yummy | yummy |
+--------+-----------------+-----------------+
4 rows in set (0.00 sec)
SELECT * FROM 表名;

三、限制查询结果条数
LIMIT 开始行, 限制条数;
mysql> select id as '主键', username as '用户姓名', nickname as '用户昵称'
from users limit 0,2;
+--------+-----------------+-----------------+
| 主键 | 用户姓名 | 用户昵称 |
+--------+-----------------+-----------------+
| 1 | fossi | fossi |
| 2 | 我去个地方 | 我去个地方 |
+--------+-----------------+-----------------+
2 rows in set (0.00 sec)
mysql> select id as '主键', username as '用户姓名',
nickname as '用户昵称' from users limit 2;
+--------+-----------------+-----------------+
| 主键 | 用户姓名 | 用户昵称 |
+--------+-----------------+-----------------+
| 1 | fossi | fossi |
| 2 | 我去个地方 | 我去个地方 |
+--------+-----------------+-----------------+
2 rows in set (0.00 sec)

四、对查询结果去重
mysql> select face from users;
+------------------------------------------------------------------------------+
| face |
+------------------------------------------------------------------------------+
| http://122.152.205.72:88/group1/M00/00/05/CpoxxFw_8_qAIlFXAAAcIhVPdSg994.png |
| http://122.152.205.72:88/group1/M00/00/05/CpoxxFw_8_qAIlFXAAAcIhVPdSg994.png |
| http://122.152.205.72:88/group1/M00/00/05/CpoxxFw_8_qAIlFXAAAcIhVPdSg994.png |
| http://bloghello.oursnail.cn/avatar.png |
+------------------------------------------------------------------------------+
4 rows in set (0.01 sec)
SELECT DISTINCT 列名 FROM 表名;
mysql> select distinct face from users;
+------------------------------------------------------------------------------+
| face |
+------------------------------------------------------------------------------+
| http://122.152.205.72:88/group1/M00/00/05/CpoxxFw_8_qAIlFXAAAcIhVPdSg994.png |
| http://bloghello.oursnail.cn/avatar.png |
+------------------------------------------------------------------------------+
2 rows in set (0.01 sec)
SELECT DISTINCT 列名1, 列名2, … 列名n FROM 表名;

五、对查询结果排序
ORDER BY 列名 ASC|DESC
mysql> select username as '用户姓名',updated_time as '更新时间'
from users order by updated_time desc;
+-----------------+---------------------+
| 用户姓名 | 更新时间 |
+-----------------+---------------------+
| yummy | 2022-08-25 17:46:25 |
| alite | 2022-08-18 13:25:30 |
| 我去个地方 | 2022-08-16 23:14:12 |
| fossi | 2022-08-15 22:11:58 |
+-----------------+---------------------+
4 rows in set (0.00 sec)
ORDER BY 列1 ASC|DESC, 列2 ASC|DESC …
mysql> select username as '用户姓名',updated_time as '更新时间'
from users order by username desc , updated_time asc;
+-----------------+---------------------+
| 用户姓名 | 更新时间 |
+-----------------+---------------------+
| 我去个地方 | 2022-08-16 23:14:12 |
| yummy | 2022-08-25 17:46:25 |
| fossi | 2022-08-15 22:11:58 |
| alite | 2022-08-18 13:25:30 |
+-----------------+---------------------+
4 rows in set (0.00 sec)
mysql> select username as '用户姓名',updated_time as '更新时间'
from users order by updated_time desc limit 1;
+--------------+---------------------+
| 用户姓名 | 更新时间 |
+--------------+---------------------+
| yummy | 2022-08-25 17:46:25 |
+--------------+---------------------+
1 row in set (0.00 sec)

六、简单搜索条件
mysql> select id,username from users where username='fossi';
+----+----------+
| id | username |
+----+----------+
| 1 | fossi |
+----+----------+
1 row in set (0.00 sec)
mysql> select id,username from users where username!='fossi';
+----+-----------------+
| id | username |
+----+-----------------+
| 2 | 我去个地方 |
| 3 | alite |
| 4 | yummy |
+----+-----------------+
3 rows in set (0.00 sec)
mysql> select id,username from users where username<>'fossi';
+----+-----------------+
| id | username |
+----+-----------------+
| 2 | 我去个地方 |
| 3 | alite |
| 4 | yummy |
+----+-----------------+
3 rows in set (0.00 sec)
mysql> select id,username from users where id > 2;
+----+----------+
| id | username |
+----+----------+
| 3 | alite |
| 4 | yummy |
+----+----------+
2 rows in set (0.00 sec)
mysql> select id,username from users where id >= 2 and id <= 4;
+----+-----------------+
| id | username |
+----+-----------------+
| 2 | 我去个地方 |
| 3 | alite |
| 4 | yummy |
+----+-----------------+
3 rows in set (0.00 sec)
mysql> select id,username from users where id between 2 and 4;
+----+-----------------+
| id | username |
+----+-----------------+
| 2 | 我去个地方 |
| 3 | alite |
| 4 | yummy |
+----+-----------------+
3 rows in set (0.00 sec)
以上其实我们是借助了比较操作符来实现的,MySQL中支持多种比较操作符:
操作符 | 示例 | 描述 |
---|---|---|
= | a = b | a等于b |
<>或者!= | a <> b | a不等于b |
< | a < b | a小于b |
<= | a <= b | a小于或等于b |
> | a > b | a大于b |
>= | a >= b | a大于或等于b |
BETWEEN | a BETWEEN b AND c | 满足 b <= a <= c |
NOT BETWEEN | a NOT BETWEEN b AND c | 不满足 b <= a <= c |

七、匹配列表中的元素
操作符 | 示例 | 描述 |
---|---|---|
IN | a IN (b1, b2, …) | a是b1, b2, … 中的某一个 |
NOT IN | a NOT IN (b1, b2, …) | a不是b1, b2, … 中的任意一个 |
mysql> select id,username from users where username in ('fossi','yummy');
+----+----------+
| id | username |
+----+----------+
| 1 | fossi |
| 4 | yummy |
+----+----------+
2 rows in set (0.00 sec)

八、匹配NULL值
操作符 | 示例 | 描述 |
---|---|---|
IS NULL | a IS NULL | a的值是NULL |
IS NOT NULL | a IS NOT NULL | a的值不是NULL |
mysql> select id,username,realname from users where realname is null;
+----+-----------------+----------+
| id | username | realname |
+----+-----------------+----------+
| 1 | fossi | NULL |
| 2 | 我去个地方 | NULL |
| 3 | alite | NULL |
| 4 | yummy | NULL |
+----+-----------------+----------+
4 rows in set (0.01 sec)

九、多个搜索条件的查询
mysql> select id,username from users where username='fossi' and sex=0;
Empty set (0.00 sec)
mysql> select id,username from users where username='fossi' and sex=2;
+----+----------+
| id | username |
+----+----------+
| 1 | fossi |
+----+----------+
1 row in set (0.00 sec)
mysql> select id,username,sex from users where sex=0 or sex=2;
+----+----------+------+
| id | username | sex |
+----+----------+------+
| 1 | fossi | 2 |
| 3 | alite | 0 |
| 4 | yummy | 0 |
+----+----------+------+
3 rows in set (0.00 sec)
mysql> select id,username,sex from users where username='fossi' and sex=0 or sex=2;
+----+----------+------+
| id | username | sex |
+----+----------+------+
| 1 | fossi | 2 |
+----+----------+------+
1 row in set (0.00 sec)
mysql> select id,username,sex from users where sex=0 or sex=2 and username='fossi';
+----+----------+------+
| id | username | sex |
+----+----------+------+
| 1 | fossi | 2 |
| 3 | alite | 0 |
| 4 | yummy | 0 |
+----+----------+------+
3 rows in set (0.00 sec)
where sex=0 or sex=2 and username=’fossi’
-
sex=0 -
sex=2 and username=’fossi’
mysql> select id,username,sex from users where (sex=0 or sex=2) and username='fossi';
+----+----------+------+
| id | username | sex |
+----+----------+------+
| 1 | fossi | 2 |
+----+----------+------+
1 row in set (0.01 sec)

十、模糊查询
操作符 | 示例 | 描述 |
---|---|---|
LIKE | a LIKE b | a匹配b |
NOT LIKE | a NOT LIKE b | a不匹配b |
-
%: matches any number of characters, even zero characters.
-
_ :matches exactly one character.
mysql> select id,username from users where username like '%地方%';
+----+-----------------+
| id | username |
+----+-----------------+
| 2 | 我去个地方 |
+----+-----------------+
1 row in set (0.01 sec)
mysql> select id,username from users where username like '我去%';
+----+-----------------+
| id | username |
+----+-----------------+
| 2 | 我去个地方 |
+----+-----------------+
1 row in set (0.01 sec)
mysql> select id,username from users where username like '地方%';
Empty set (0.00 sec)
mysql> select id,username from users where username like '我去个__';
+----+-----------------+
| id | username |
+----+-----------------+
| 2 | 我去个地方 |
+----+-----------------+
1 row in set (0.00 sec)
mysql> select id,username from users where username like '我去个_';
Empty set (0.00 sec)
mysql> select id,username from users where username like '我去个___';
Empty set (0.01 sec)
-
%
代表普通字符%
-
_
代表普通字符_

十一、总结
-
如何实现分页查询需求? -
如何对结果集进行去重? -
如果对结果集进行排序? -
如何进行搜索条件的匹配,有哪些比较操作符? -
如果搜索条件的字段的值是一个列表如何去查询? -
如何匹配NULL值? -
如何进行多个搜索条件的组合,是否有什么问题(优先级)? -
如何实现模糊查询需求?说说%和_的含义和用法? -
如果待匹配的字符串中本身就包含普通字符’%’或者’_’该咋办?
原文始发于微信公众号(幕后哈土奇):09|第九话:基础篇-MySQL之初级查询
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/112860.html