SQL语句(DQL)

  • Data Query Language(数据查询语言),用来查询数据库中表的记录

DQL-基本查询

DQL-条件查询(WHERE)

sql 复制代码
-- 查询姓名为2个字的员工信息
select * from emp where name like '__';

-- 查询身份证号最后一位是X的员工信息
select * from emp where idcard like '%X';
select * from emp where idcard like '_________________X';

DQL-聚合函数

sql 复制代码
-- 1.统计该企业员工数量
select count(*) from emp;
select count(idcard) from emp;

-- 2.统计该企业员工的平均年龄
select avg(age) from emp;

-- 3.统计企业员工的最大,最小年龄
select max(age) from emp;
select min(age) from emp;

-- 4.统计西安地区员工的年龄之和
select sum(age) from emp where workno = '西安';

DQL-分组查询(GROUP BY)

sql 复制代码
-- 分组查询
-- 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;

注意事项:

  • 执行顺序:where > 聚合函数 > having
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

DQL-排序查询(ORDER BY)

sql 复制代码
-- 排序查询
-- 1.根据年龄对公司的员工进行升序排序
select * from emp order by age asc ;

-- 2.根据入职时间,对员工进行降序排序
select * from emp order by entrydate desc ;

-- 3.根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序
select * from emp order by age asc , entrydate desc ;

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序


DQL-分页查询(LIMIT)

sql 复制代码
-- 分页查询
-- 1.查询第1页员工数据,每页展示10条记录
select * from emp limit 0 , 10;
select * from emp limit 10;

-- 2.查询第2页员工数据,每页展示10条数据 -----> (页码 - 1) * 页展示记录数
select * from emp limit 10,10;

注意事项:

  • 起始索引从0开始,起始索引 = (查询页码-1)*每页显示记录数
  • 如果查询的是第一页数据,可以直接写成limit10
  • 分页查询是数据库的方言

案例练习

sql 复制代码
-- 查询年龄为20,21,22,23的女性员工信息
select * from emp where gender = '女' and age in(20,21,22,23);

-- 查询男性年龄在20-30岁以内姓名为三个字的员工
select * from emp where gender = '男' and ( age between 20 and 30 ) 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 40 ) order by age asc , entrydate asc limit 5 ;

DQL-执行顺序

里面的age和name字段可以使用别名

sql 复制代码
-- 查询年龄大于15的员工的姓名、年龄、并根据年龄进行升序排序
select e.name ename ,e.age eage from emp e where e.age > 15 order by eage asc ;
相关推荐
IT成长日记13 分钟前
【Hive入门】Hive基础操作与SQL语法:DDL操作全面指南
hive·hadoop·sql·ddl操作
拿破轮42 分钟前
查询Hologres或postgresql中的数据
数据库·postgresql
声声codeGrandMaster2 小时前
django之账号管理功能
数据库·后端·python·django
Elastic 中国社区官方博客2 小时前
使用 LangGraph 和 Elasticsearch 构建强大的 RAG 工作流
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
AscendKing2 小时前
mongo客户端操作mongodb记录
数据库·mongodb
千千寰宇3 小时前
[设计模式/Java] 设计模式之解释器模式【27】
数据库·设计模式
BXCQ_xuan3 小时前
Typecho博客网站头部SEO优化完整指南
运维·服务器·数据库·php·web
施嘉伟3 小时前
Oracle 11g RAC手动打补丁详细步骤
数据库·oracle
朴拙数科4 小时前
基于 RAG 的 Text2SQL 全过程的 Python 实现详解,结合 LangChain 框架实现自然语言到 SQL 的转换
python·sql·langchain
my_realmy5 小时前
SQL 查询进阶:WHERE 子句与连接查询详解
java·开发语言·数据库·sql