MySQL基础的查询语句介绍

273 阅读5分钟

「这是我参与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="小白" 

图片.png

LIKE 模糊查询

  上面我们知道了使用WHERE可以加查询条件,操作符都是精准匹配的数据信息,如果需要模糊查询,可以使用LIKE字段查询。LIKE 语句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。需要注意的是百分号的位置不同,查询出的结果也是不同的。 其语法格式为:

字段名 LIKE %属性值%

示例:在表s_user中查询出name包含“小白”的所有数据信息。

%在前模糊查询

SELECT * FROM s_user WHERE `name`  LIKE "%小白" ;

图片.png %在后模糊查询

SELECT * FROM s_user WHERE `name`  LIKE "小白%" ;

图片.png %在前后模糊查询

SELECT * FROM s_user WHERE `name`  LIKE "小白%" ;

图片.png

通过上面的示例,可以看到

  • "%小白":查询的是以小白结尾的数据
  • "小白%" :查询的是以小编开头的数据
  • "%小白%":查询的是含有小白的数据

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;

图片.png

ORDER BY 排序

  在数据查询中,需要按照某些指定信息进行分组,GROUP BY 语句就可以根据一个或多个列对结果集进行分组,分组可以使用常用的SQL函数,也可以和多个查询条件一起使用。 示例:在表s_user中查询出所有数据并按照nick_name进行分组,分组之后按照userid倒序输出显示。

SELECT * FROM s_user GROUP BY nick_name ORDER BY userid DESC

图片.png   可以看到nick_name包含“小白”的其他两个数据没有显示,只显示了小白1的数据,并且按照userid进行倒序排序输出。

结语

  好了,以上就是MySQL基础的查询语句介绍,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。

  作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。