MySQL基础,查询语句详解
来源:网络收集 点击: 时间:2024-06-02新建数据库表
DROP TABLE IF EXISTS `study_1`;
CREATE TABLE `study_1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`sex` varchar(5) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
数据库表中插入测试数据
INSERT INTO study_1 VALUES (1, 张三, 20, 男);
INSERT INTO study_1 VALUES (2, 李四, 21, 女);
INSERT INTO study_1 VALUES (3, 王五, 22, 男);
INSERT INTO study_1 VALUES (4, 赵六, 23, 女);
INSERT INTO study_1 VALUES (5, 吴七, 24, 女);
INSERT INTO study_1 VALUES (6, 钱八, 25, 男);
INSERT INTO study_1 VALUES (7, 孙九, 26, 男);

查询表中所有字段的数据(示例结果如图按顺序)
以通配符 * 查询
示例
SELECT * FROM study_1;
以表中所有字段查询
示例
SELECT id,name,age,sex FROM study_1;


查询单个或多个字段(示例结果如图按顺序)
查询单个字段
示例
SELECT name FROM study_1;
查询多个字段
示例
SELECT name,age FROM study_1;


使用WHERE条件查询指定记录(示例结果如图按顺序)
示例1
SELECT * FROM study_1 WHERE age22;
示例2
SELECT name,sex FROM study_1 WHERE sex=男;


带IN关键字的查询(示例结果如图按顺序)
查询字段值在指定范围内的数据
示例
SELECT * FROM study_1 WHERE age IN (20,21,22);
查询字段值不在指定范围内的数据
SELECT * FROM study_1 WHERE age NOT IN (20,22,24);


使用BETWEEN AND查询摸个范围内的值(示例结果如图按顺序)
示例
SELECT * FROM study_1 WHERE age BETWEEN 20 AND 25;

使用LIKE进行字符串匹配查询(示例结果如图按顺序)
通配符 % 匹配
示例一,向后匹配
SELECT * FROM study_1 WHERE name LIKE 张%;
示例二,向前匹配
SELECT * FROM study_1 WHERE name LIKE %四;
示例三,前后匹配
SELECT * FROM study_1 WHERE name LIKE %五%;
下划线匹配
SELECT * FROM study_1 WHERE name LIKE 张_;




查询空数据(示例结果如图按顺序)
往表中再插入一条sex值为控制的数据
INSERT INTO `study_1` VALUES (8, 周十, 27, null);
示例
SELECT * FROM study_1 WHERE sex IS NULL;
示例2
SELECT * FROM study_1 WHERE sex IS NOT NULL;



AND多条件与查询,OR多条件或查询(示例结果如图按顺序)
注意1:AND优先级大于OR
注意2:IN查询能实现OR查询的效果,而且执行熟度更快
AND查询
示例
SELECT * FROM study_1 WHERE age 22 AND sex IS NOT NULL;
OR查询
示例
SELECT * FROM study_1 WHERE age 23 OR age 26;



使用DISTINCT查询不重复的数据(示例结果如图按顺序)
插入一条与id=1数据内容一致的数据
INSERT INTO `study_1` VALUES (9, 张三, 20, 男);
普通查询能查询到两条相同的数据
示例
SELECT name FROM study_1 WHERE name=张三;
使用DISTINCT剔除相同的数据
示例
SELECT DISTINCT name FROM study_1 WHERE name=张三;



对查询出来的数据按列值进行排序(示例结果如图按顺序)
不指明顺序默认按升序排序
SELECT * FROM study_1 WHERE age 21 ORDER BY id;
按升序排序
SELECT * FROM study_1 WHERE age 21 ORDER BY id ASC;
按倒序排序
SELECT * FROM study_1 WHERE age 21 ORDER BY id DESC;



使用 进行分组查询(示例结果如图按顺序)
新增分组字段
ALTER TABLE study_1 ADD study_group int(11);
为原有的数据分组
UPDATE study_1 set study_group=1 where id3;
UPDATE study_1 set study_group=2 where id=3 AND id7;
UPDATE study_1 set study_group=3 where id=7;
示例1.把各分组的姓名按分组查询并组合起来。
SELECT GROUP_CONCAT(name) AS names,study_group FROM study_1 GROUP BY study_group;
示例2.把各分组的姓名按分组查询并组合起来,并使用HAVING限制查询分组人数在2人以上的数据。
SELECT GROUP_CONCAT(name) AS names,study_group,sex FROM study_1 GROUP BY study_group HAVING COUNT(name)2;
示例3.把各分组的姓名按分组查询并组合起来,WITH ROLLUP在最后一条显示所有记录。
SELECT GROUP_CONCAT(name) AS names,study_group FROM study_1 GROUP BY study_group WITH ROLLUP;
示例4.多字段分组
SELECT GROUP_CONCAT(name) AS names,study_group,sex FROM study_1 GROUP BY study_group,sex;





使用 ,查询数据行数] 查询指定条数的数据
示例1.不指定开始位置默认从第一条开始(位置偏移量是0)
SELECT * FROM study_1 LIMIT 3;
示例2.指定开始位置
SELECT * FROM study_1 LIMIT 1,3;


查询语句是Mysql数据管理中最重要的一项,希望对大家有帮助
MYSQLMYSQL查询查询语句查询语句详解版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.ff371.cn/art_874045.html