mysql最全的查询方式教程 DQL

文章介绍了DQL的基本查询操作,包括创建表格、插入数据、选择特定列、去重、模糊查询、条件查询(如年龄、日期范围)、排序、分组和聚合函数的使用,以及分页查询的方法。示例涵盖了各种常见的查询场景。
摘要由CSDN通过智能技术生成

DQL

 其他资料教程:https://kdocs.cn/l/cqp2s5cTZgct

基础查询

 

演示代码

CREATE TABLE stu (
    id INT,-- 编号
    NAME VARCHAR (20),-- 姓名
    age INT,-- 年龄
    sex VARCHAR (5), -- 性 别
    address VARCHAR (100),-- 地址
    math DOUBLE (5, 2),-- 数学成绩
    english DOUBLE (5, 2),-- 英语成绩
    hire_date date-- 入学时间
);
​
INSERT INTO stu(id,NAME,age,sex,address,math,english,hire_date)
VALUES
(1,'码云',55,'男','杭州',66,78,'1995-09-01'),
(2,'马化腾',55,'女','深圳',66,48,'1895-02-01'),
(3,'马斯克',55,'男','香港',23,78,'1995-03-01'),
(4,'流白',55,'男','湖南',66,58,'1994-09-04'),
(5,'留情',55,'女','湖南',66,NULL,'1595-09-01'),
(6,'刘德华',55,'男','香港',76,78,'1695-09-02'),
(7,'张学友',55,'男','香港',64,28,'1795-09-05'),
(8,'德玛西亚',55,'女','南京',96,78,'1195-09-09');
​
-- =====================查询操作=================
-- 查询name 和 age两列
SELECT name,age from stu;
-- 查询 所有
SELECT * FROM stu;
​
-- 查询 所有的address
SELECT address FROM stu;
​
-- 进行去重操作
SELECT DISTINCT address FROM stu;
​
-- 利用as 起别名查询数学和英语成绩
SELECT name,math as 数学成绩,english as 英语成绩 FROM stu;

条件查询

 

模糊查询

-- 条件查询 ==================
​
-- 1.查询年龄大于20岁的学员信息
SELECT * FROM stu WHERE age > 20;
​
-- 2.查询年龄大于等于20的学员信息
SELECT * from stu WHERE age >= 20;
​
-- 3.查询年龄大于等于20岁,  并且 年龄 小于等于30岁的学员信息
SELECT * from stu WHERE age >= 20 && age <= 30;
SELECT * from stu WHERE age >= 20 AND age <= 30;  -- 建议使用and
​
SELECT * from stu WHERE age BETWEEN 20 and 30; -- 使用between 
​
-- 4查询入学日期在 ‘1998-09-01’ 到 ‘1999-09-01’ 之间的学员信息
SELECT * FROM stu WHERE hire_date BETWEEN '1998-09-01' AND '1999-09-01';
​
-- 5查询年龄等于18岁的学员信息
SELECT * FROM stu WHERE age = 18;
​
-- 6 查询年龄不等于18岁的学员信息
SELECT * FROM stu WHERE age <> 18;
​
-- 7.查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息
SELECT * FROM stu WHERE age = 18 or age = 20 or age = 22;
SELECT * FROM stu WHERE age in (18,20,22);
​
-- 8.查询英语成绩为null 的学员信息
-- 注意: null值的比较不能使用 = != .需要使用 is is not
SELECT * FROM stu WHERE english = null; -- 这种事错误的
SELECT * FROM stu WHERE english is null;
SELECT * FROM stu WHERE english is not null;
​
​
-- 模糊查询 like ================
/*
    通配符:
    1. _:代表单个任意字符
    2. %:代表任意个数字符
*/
-- 1.查询姓 ’马‘的学员信息
SELECT * FROM stu WHERE name like '马%';
​
-- 2.查询 第二个字是 ’花‘ 的学员信息
SELECT * FROM stu WHERE name like '_花%';
​
-- 3.查询名字中包含 ’德‘ 的学员信息
SELECT * FROM stu WHERE name like '%德%';
​
​
​
​

排序查询

 

/*
  排序查询
   ASC :升序排序(默认值)
   DESC: 降序排序
*/
-- 1.查询学生信息,按照年龄升序排列
SELECT * FROM stu ORDER BY age;
​
-- 2。查询学生信息,按照数学成绩降序排列
SELECT * FROM stu ORDER BY math DESC;
​
-- 3. 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
SELECT * FROM stu ORDER BY math desc,english asc;

聚合函数

 

 

 

 

分组查询

 

/**
分组函数
  SELECT 字段列表 FROM 表名【WHERE 分组条件限定】GROUP BY分组字段名 【HAVING 分组后条件过滤】
​
**/
-- 1.查询男同学和女同学各自的数学平均分
SELECT sex, avg(math) from stu GROUP BY sex;
SELECT sex, age, avg(math) from stu GROUP BY sex; -- 查询不是分组的字段和不是聚合函数字段
​
-- 2/查询 男同学和女同学各自的数学平均分,以及各自人数
SELECT sex, avg(math) as '数学平均成绩',count(*) as '人数' from stu GROUP BY sex;
​
-- 3,查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
SELECT sex, avg(math) as '数学平均成绩',count(*) as '人数' from stu WHERE math>70 GROUP BY sex;
​
-- 4,查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2
SELECT sex, avg(math) as '数学平均成绩',count(*) num from stu WHERE math>70 GROUP BY sex having num >2;

分页查询

 

/**
  分页查询
 SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数
**/
-- 1.从0开始查询,查询3条数据
 select * from stu limit 0,3;
-- 2.每页显示3条数据,查询第1页数据
select * from stu limit 0,3;
-- 3.每页显示3条数据,查询第2页数据
select * from stu limit 3,3; -- 起始下标从0开始,第二页下表从3开始
-- 4.每页显示3条数据,查询第3页数据
select * from stu limit 6,3;
-- 起始索引 = (当前页码-1) * 每页显示的条数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值