DQL是指MySQL数据库中的数据查询语言(Data Query Language)。它是用来从数据库中检索所需数据的语言。DQL允许用户通过指定查询条件和筛选条件来检索数据库中的数据,并以所需的方式来显示结果。DQL语句可以用于从单个表中查询数据,也可以用于从多个表中进行连接查询。常见的DQL语句包括SELECT语句,用于检索数据;WHERE语句,用于指定查询条件;ORDER BY语句,用于对查询结果进行排序等
DQL--语法
在MySQL中,DQL语句是用来查询数据的,常见的DQL语句包括SELECT,FROM,WHERE,GROUP BY,HAVING和ORDER BY等。下面是一些常用的DQL语法:
1. SELECT:用于选择需要返回的列或字段。
例如:SELECT * FROM 表名;
2. FROM:指定要查询的表名。
例如:SELECT * FROM 表名;
3. WHERE:用于指定查询条件。
例如:SELECT * FROM 表名 WHERE 列名 = 值;
4. GROUP BY:用于按照一个或多个列对结果进行分组。
例如:SELECT 列名1, 列名2 FROM 表名 GROUP BY 列名1, 列名2;
5. HAVING:用于对分组后的结果进行筛选。
例如:SELECT 列名1, 列名2 FROM 表名 GROUP BY 列名1, 列名2 HAVING 聚合函数(列名) > 值;
6. ORDER BY:用于对查询结果进行排序。
例如:SELECT * FROM 表名 ORDER BY 列名 ASC/DESC;
7. LIMIT:用于限制查询结果的数量。
例如:SELECT * FROM 表名 LIMIT 数量;
8. JOIN:用于连接多个表以进行复杂的查询。
例如:SELECT * FROM 表名1 JOIN 表名2 ON 表名1.列名 = 表名2.列名;
create table emp(
id int comment '编号',
workno varchar(10) comment '工号',
name varchar(15) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idacrd char(18) comment '身份证',
workaddress varchar(50) comment '工作地址',
entrydate date comment '入职时间'
)comment '员工表';
insert into emp(id, workno, name, gender, age, idacrd, workaddress, entrydate)
VALUES (1,'1','test001','女',20,'62050319001010063','北京','2008-08-09'),
(2,'2','test002','男',18,'62050319001015010','深圳','2005-01-01'),
(3,'3','test003','男',38,'6205031900101900X','上海','2005-01-01');
数据自己增加即可
/*查询制定字段 name workno age */
select name,workno,age from emp;
select * from emp;
select workaddress '工作地址'from emp;
/*查询上班工作地址不要重复*/
select distinct workaddress '工作地址' from emp;
/*条件查询*/
/*1.查询年龄等于88的员工*/
select * from emp where age=88;
/*2.查询年龄小于20的员工信息*/
select * from emp where age<20;
/*3.查询年龄小于等于20的员工信息*/
select *from emp where age<=20;
/*4.查询没有身份证号的员工信息*/
select * from emp where idacrd is null ;
/*5.查询有身份证号的员工信息*/
select * from emp where idacrd is not null ;
/*6.查询年龄不等于88的员工信息*/
select * from emp where age <>88;
select * from emp where age !=88;
/*7.查询年龄在15岁到28岁(包含)之间的员工信息*/
select * from emp where age >=15 && age <=20;
select * from emp where age >=15 and age <=20;
select * from emp where age between 15 and 20;
/*8.查询性别为女 且年龄小于25岁的员工信息*/
select * from emp where gender='女' and age < 25;
/*9.查询年龄等于18或者20或者40的员工信息*/
select * from emp where age=18 or age=20 or age = 42;
select * from emp where age in (18,20,42);
/*10.查询姓名为两个字的员工信息*/
select * from emp where name like '__';
/*查询身份证最后一位是X的信息*/
select * from emp where idacrd like '%X';
在MySQL中,常用的聚合函数包括:
1. COUNT:用于计算某列或表中的行数。
例如:SELECT COUNT(*) FROM 表名;
2. SUM:用于计算某列或表中数值列的总和。
例如:SELECT SUM(列名) FROM 表名;
3. AVG:用于计算某列或表中数值列的平均值。
例如:SELECT AVG(列名) FROM 表名;
4. MAX:用于计算某列或表中数值列的最大值。
例如:SELECT MAX(列名) FROM 表名;
5. MIN:用于计算某列或表中数值列的最小值。
例如:SELECT MIN(列名) FROM 表名;
/*聚合函数*//*null值不参与计算*/
/*1.统计该企业员工的数量*/
select count(*) from emp;
select count(id) from emp;
select count(idacrd) from emp;
/*2.统计改企业员工的平均年龄*/
select avg(age) from emp;
/*3.统计改企业员工的最大年龄*/
select max(age) from emp;
/*4.统计改企业员工的最小年龄*/
select min(age) from emp;
/*统计西安地区的员工年龄之和*/
select sum(age) from emp where workaddress='深圳';
/*分组查询*/
/*1.根据性别分组 统计男员工 和 女员工的数量*/
select gender, count(*) from emp group by gender;
/*2.根据性别分组 计算男员工 和女员工的平均年龄*/
select gender,avg(age) from emp group by gender;
/*3.查询年龄小于45的员工 并根据工作地址分组 获取员工数量大于等于3的工作地址*/
select workaddress, count(*) from emp
where age<45 group by workaddress having count(*)>=3;
/*排序查询*/
/*1.根据年龄对公司员工信息进行排序*/
select * from emp order by age asc ;
select * from emp order by age desc ;
/*根据入职时间 对员工进行降序排序*/
select * from emp order by entrydate desc ;
/*根据年龄进行升序排序 年龄相同 在根据入职时间进行倒序排序*/
select * from emp order by age asc ,entrydate desc ;
/*分页查询*/
select * from emp limit 0,10;
select * from emp limit 10,10;
/*查询年龄为20 21 22 23岁的女性员工信息*/
select * from emp where age in (20,21,22,23);
/*查询性别为男 并且年龄在30-60岁以内的姓名为两个字的员工信息*/
select * from emp where gender='男'and age between 30 and 60 and name like '__';
/*统计员工表中 年龄小于60岁的 男性员工和女性员工的人数*/
select gender, count(*) from emp where age<60 group by gender;
/*查询所有年龄小于等于35岁员工的姓名和年龄 并对查询结果按年龄升序排序 如果年龄相同按入职时间降序排序*/
select name,age from emp where age<=35 order by age asc,entrydate desc ;
/*查询性别为男 且年龄在20-40以内的5个员工信息 对查询的结果按年龄升序排序 宁陵相同按入职时间升序排序*/
select * from emp
where gender='男' and age between 20 and 42
order by age asc ,entrydate asc limit 5;