「这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战」
前言
元宵节快乐,今天早早下班了,煮了点元宵。开始了今天的学习,有时候思考总结可以使自己的知识更加系统全面。今天就在项目中常用的查询SQL进行总结。
SELECT查询
在MySQL数据库中经常使用SELECT来进行查询,其常用的基础语法格式如下:
SELECT 字段名1,字段名2 FROM table_name
SELECT字段1,字段2 如果查询表中的指定字段,需要直接将字段名列出即可,多个字段名使用英文","进行分割。如果需要查询表中的所有字段,直接使用select * 即可。FROM 后面紧跟表名,表示从哪个表中查询。 测试表结构
CREATE TABLE `s_user` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`nick_name` varchar(50) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`email` varchar(50) NOT NULL COMMENT '邮箱',
`pass_word` varchar(255) DEFAULT NULL,
`state` tinyint(3) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
模拟数据
INSERT INTO `test`.`s_user`(`userid`, `nick_name`, `name`, `email`, `pass_word`, `state`, `create_time`) VALUES (1, '小米', '小米', '1@qq.com', '123123', 1, '2022-02-10 19:48:43');
INSERT INTO `test`.`s_user`(`userid`, `nick_name`, `name`, `email`, `pass_word`, `state`, `create_time`) VALUES (2, '小白', '小白1', '23@qq.com', '123123', 1, '2022-02-10 19:48:43');
INSERT INTO `test`.`s_user`(`userid`, `nick_name`, `name`, `email`, `pass_word`, `state`, `create_time`) VALUES (3, '小白', '2小白', '45@qq.com', '123123', 1, '2022-02-10 19:48:43');
INSERT INTO `test`.`s_user`(`userid`, `nick_name`, `name`, `email`, `pass_word`, `state`, `create_time`) VALUES (4, '小红', '小红', '67@qq.com', '123', 1, '2022-02-15 19:48:43');
INSERT INTO `test`.`s_user`(`userid`, `nick_name`, `name`, `email`, `pass_word`, `state`, `create_time`) VALUES (5, '小黄', '小黄', '89@qq.com', '123', 1, '2022-02-15 20:48:43');
INSERT INTO `test`.`s_user`(`userid`, `nick_name`, `name`, `email`, `pass_word`, `state`, `create_time`) VALUES (6, '小白', '小白3', '10@qq.com', '123', 1, '2022-02-15 21:48:43');
WHERE 条件查询
在MySQL数据库中经常使用某些条件进行查询,使用WHERE关键字连接查询条件其常用的基础语法格式如下:
SELECT 字段名1,字段名2
FROM table_name
WHERE 查询条件
WHERE 查询SQL句中可以使用一个或者多个条件进行查询,可以使用AND 或者 OR 指定一个或多个条件。当然在修改或者删除中也可以使用WHERE 条件进行过滤。查询条件的基本格式如下:字段表 + 操作符 + 参数值
WHERE `name`="小白"
WHERE条件使用的操作符汇总如下:
| 操作符 | 介绍 | 示例 | SQL介绍 |
|---|---|---|---|
| = | 等于 | SELECT * FROM s_user WHERE name="小白" | 查询姓名为"小白"的数据 |
| <>, != | 不等于 | SELECT * FROM s_user WHERE name<>"小白" | 查询姓名不是"小白"的数据 |
| 大于 | SELECT * FROM s_user WHERE userid>3 | 查询用户id大于3的数据 | |
| < | 小于 | SELECT * FROM s_user WHERE userid<3 | 查询用户id小于3的数据 |
| >= | 大于等于 | SELECT * FROM s_user WHERE userid>=3 | 查询用户id大于等于3的数据,包含用户id为3的数据 |
| <= | 小于等于 | SELECT * FROM s_user WHERE userid<=3 | 查询用户id小于于等于3的数据,包含用户id为3的数据 |
多条件查询示例
查询用户id userid 大于3 且昵称 nick_name 为小白的数据。
SELECT * FROM s_user WHERE userid>3 AND nick_name="小白"
LIKE 模糊查询
上面我们知道了使用WHERE可以加查询条件,操作符都是精准匹配的数据信息,如果需要模糊查询,可以使用LIKE字段查询。LIKE 语句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。需要注意的是百分号的位置不同,查询出的结果也是不同的。 其语法格式为:
字段名 LIKE %属性值%
示例:在表s_user中查询出name包含“小白”的所有数据信息。
%在前模糊查询
SELECT * FROM s_user WHERE `name` LIKE "%小白" ;
%在后模糊查询
SELECT * FROM s_user WHERE `name` LIKE "小白%" ;
%在前后模糊查询
SELECT * FROM s_user WHERE `name` LIKE "小白%" ;
通过上面的示例,可以看到
- "%小白":查询的是以小白结尾的数据
- "小白%" :查询的是以小编开头的数据
- "%小白%":查询的是含有小白的数据
ORDER BY 排序
在我们查询出所需要的数据之后,让数据安按照一定的顺序显示出来,那么久使用到了 ORDER BY关键字。在 ORDER BY后可以跟一个或者多个排序字段,且可以指定正序排序还是倒序排序。使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列,默认是按升序排序的。 语法格式:
order by id ASC/DESC
示例:在表s_user中查询出name包含“小白”的所有数据信息,并按照userid 和创建时间倒序显示。
SELECT * FROM s_user WHERE `name` LIKE "%小白%" ORDER BY userid DESC,create_time DESC;
ORDER BY 排序
在数据查询中,需要按照某些指定信息进行分组,GROUP BY 语句就可以根据一个或多个列对结果集进行分组,分组可以使用常用的SQL函数,也可以和多个查询条件一起使用。
示例:在表s_user中查询出所有数据并按照nick_name进行分组,分组之后按照userid倒序输出显示。
SELECT * FROM s_user GROUP BY nick_name ORDER BY userid DESC
可以看到nick_name包含“小白”的其他两个数据没有显示,只显示了小白1的数据,并且按照userid进行倒序排序输出。
结语
好了,以上就是MySQL基础的查询语句介绍,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。
作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。