数据库之DQL操作(数据查询语言)

news2024/11/27 2:46:58

        DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。查询关键字: SELECT。

本节介绍以下表为例:

create table emp(
    id int comment '编号',
    workno varchar(10) comment '工号',
    name varchar(10) comment '姓名',
    gender char(1) comment '性别',
    age tinyint unsigned comment '年龄',
    idcard char(18) comment '身份证号',
    workaddress varchar(50) comment '工作地址'
    entrydate date comment '入职时间'
)

1.基本语法

SELECT
    字段列表

FROM
    表名列表

WHERE
    条件列表

GROUP BY
    分组字段列表

HAVING
    分组后条件列表

ORDER BY
    排序字段列表

LIMIT
    分页参数
  •  基本查询(不带任何条件)
  • 条件查询(WHERE)
  • 聚合函数(count、max、min、avg、sum)
  • 分组查询(group by)
  • 排序查询(order by)
  • 分页查询(1imit)

2.基础查询 

2.1查询多个字段

SELECT 字段1,字段2,字段3... FROM 表名;

SELECT * FROM 表名;

 注意事项:* 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。

 2.2字段设置别名

SELECT 字段1 [AS别名1],字段2 [AS 别名2]... FROM 表名;
//省略AS
SELECT 字段1 [别名1] ,字段2 [别名2]... FROM 表名;

2.3去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

 例如:

a.查询指定字段 id,gender,age并返回

select id, gender, age from emp;

b. 查询返回所有字段

select id,workno,name,gender,age,idcard,workaddress,entrydate from emp;

select * from emp;

 c.查询所有员工的入职时间,起别名

select entrydate as '入职时间' from emp;

//as可以省略
select entrydate '入职时间' from emp;

d. 查询公司员工的上班地址有哪些(不要重复)

select distinct workaddress '工作地址' from emp

 3.条件查询

3.1语法

SELECT 字段列表 FROM 表名 WHERE 条件列表;

3.2条件

比较运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于

<> 或 !=

不等于
BETWEEN ... AND ...在某个范围之内(最小、最大值)
IN( ... )在in之后的列表中的值,多选一
LIKE 占位符模糊匹配('_'匹配单个字符,'%'匹配任意个字符)
IS NULL是NULL
逻辑运算符功能
AND 或 &&并且(多个条件同时成立)
OR 或 || 或者(多个条件任意一个成立)
NOT 或 !非 ,不是

例如:

a.查询年龄为18的员工

select * from emp where age = 18;

b.查询年龄大于等于19的员工 

select * from emp where age >= 19;

c. 查询有身份证号的员工信息

select * from emp where idcard is not null;

d. 查询年龄在15岁(包含)到20岁(包含)之间的员工信息

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;

 e.查询性别为 男 并且 年龄大于68岁的员工

select * from emp where gender = '男'and age > 68;

f. 查询姓名为两个字并且姓刘的员工

select * from emp where name like '刘_';

 4.聚合函数

        将一列数据作为一个整体,进行纵向计算。

4.1常用函数

函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

4.2语法

SELECT 聚合函数 (字段列表) FROM 表名;

 注意 :  NULL值是不参与所有聚合函数运算的。

例如:

a.统计该企业员工数量

//统计的是总记录数
select count(*) from emp;

//统计的是idcard字段不为nu11的记录数
select count(idcard) from emp;

b. 统计该企业员工的平均年龄

select avg(age) from emp;

c. 统计咸宁地区员工的年龄之和

select sum(age) from emp where workaddress = '咸宁';

5.分组查询 

5.1语法

SELECT 字段列表 FROM 表名 [ WHERE条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ];

5.2 where与having区别

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。

 注意事项:

  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
  • 执行顺序:where>聚合函数>having 。
  • 支持多字段分组,具体语法为:groupbycolumnA,columnE

 例如:

a.根据性别分组,统计男性员工 和 女性员工的平均年龄

select gender, avg(age) from emp group by gender ;

 b.查询年龄小于45的员工 ,并根据工作地址分组,获取员工数量大于等于3的工作地址

select workaddress, count(*) address count from emp where age < 45 
group by workaddress having address count >= 3;

 c.统计各个工作地址上班的男性及女性员工的数量

select workaddress, gender, count(*) '数量' from emp group by gender ,workaddress;

6.排序查询 

6.1语法

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;

6.2排序方式

  • ASC:升序(默认值)
  • DESC:降序

注意事项:

  • 如果是升序,可以不指定排序方式ASC;
  • 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序;

例如:

a. 根据年龄对公司的员工进行升序排序

select * from emp order by age asc;

select * from emp order by age;

 b.根据年龄对公司根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序

select * from emp order by age asc, entrydate desc;

7.分页查询 

7.1语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;

 注意事项:

  • 起始索引从0开始,起始索引 = ( 查询页码 - 1 ) * 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit10。

例如:

 a.查询第1页员工数据,每页展示10条记录。

select * from emp limit 0, 10;

select * from emp limit 10;

b. 查询第2页员工数据,每页展示10条记录 --------> ( 页码 - 1 ) * 页展示记录数。

select * from emp limit 10, 10;

 8.执行顺序

 验证:

查询年龄大于15的员工姓名、年龄,并根据年龄进行升序排序。

select name , age from emp where age >15 order by age asc;

在查询时,我们给emp表起一个别名 e,然后在select及 where中使用该别名。

select e.name , e.age from emp e where e.age > 15 order by age asc;

执行上述SQL语句后,我们看到依然可以正常的查询到结果,此时就说明:from 先执行,然后where和 select 执行。那 where 和 select 到底哪个先执行呢?

此时,此时我们可以给select后面的字段起别名,然后在where中使用这个别名,然后看看是否可以执行成功。

select e.name ename, e.age eage from emp e where eage > 15 order by age asc;

执行上述SQL报错了!!!!!

由此我们可以得出结论:from 先执行,然后执行where,再执行select。

接下来,我们再执行如下sQL语句,查看执行效果:

select e.name ename, e.age eage from emp e where e.age > 15 order by eage asc;

结果执行成功。 那么也就验证了:order by 是在select 语句之后执行的。

执行顺序得以验证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1579885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决npm install安装node-sass包容易失败的问题

具体问题如下&#xff1a; npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: XXX3.4.0 npm ERR! Found: webpack5.31.2 npm ERR! node_modules/webpack npm ERR! peer webpack”^4.0.0 || ^5.0.0″ from html-…

学生台灯护眼灯哪个牌子好?护眼台灯推荐儿童必备

当前&#xff0c;青少年及儿童的近视率居高不下&#xff0c;实际数据甚至超出了半数的比例。这意味着超过一半的孩子们可能面临着某种程度的视力问题&#xff0c;这一现象无疑让每位家长的心都紧绷起来&#xff0c;对孩子的视力健康格外关注。尤其是孩子学习时使用的那一盏台灯…

心灵鸡汤之励志正能量文案,积极向上热爱生活短句

1、在一切变好之前&#xff0c;我们总要经历一些不开心的日子&#xff0c;这段日子也许很长&#xff0c;也许只是一觉醒来。有时候&#xff0c;选择快乐&#xff0c;更需要勇气。 2、靠自己&#xff0c;才能无惧艰难&#xff0c;靠他人&#xff0c;永远害怕风霜&#xff0c;别…

【第二十七篇】几款配合Burpsuite使用的Google插件(Wappalyzer、FindSomething、FOFAproView等)

文章目录 WappalyzerFindSomethingFOFA Pro ViewsuperSearchPluswayback machinesource detecotorX-Forwarded-For Header以下插件均在Google应用商店中下载 Wappalyzer Wappalyzer是一个用于识别网站所使用的技术和工具的浏览器扩展程序。它能够检测出网站所使用的内容管理系…

操作系统(第三周 第二堂)

目录 ⚽回顾 &#x1f3d0;进程管理&#xff08;process&#xff09; 进程理解&#xff08;总结&#xff09; 进程 程序到进程 内存中的进程 进程状态 状态类型 状态转移 进程控制块 &#x1f3c0;总结 回顾 前一篇文章的重点在于操作系统的结构&#xff0c;从简单…

【数据结构】考研真题攻克与重点知识点剖析 - 第 8 篇:排序

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…

Java每日一题

我的思路: 1.排序 2.固定一个数&#xff0c;然后将问题转换为俩个数之和为固定数的相反数 3.在固定数&#xff0c;后面利用"双指针算法"快速找到两个的和等于-a即可 4.处理这个题的细节问题 1.去重 找到一个结果之后&#xff0c;将left和right指针要跳过前面的重复元…

MLOps 体系结构模型

人工智能继续改变企业&#xff0c;但这导致企业在数字化转型和组织变革方面面临新的挑战。根据 2023 年福布斯报告&#xff0c;这些挑战可以总结如下&#xff1a; 分析技术堆栈围绕分析/批处理工作负载构建的公司需要开始适应实时数据处理&#xff08;福布斯&#xff09;。这种…

【保姆级讲解PyCharm安装教程】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

js获取上周本周下周的日期(附Demo)

目录 前言1. 基本知识2. Demo3. 彩蛋 前言 现在的时间点是&#xff1a;2024-04-08&#xff0c;对应的日期如下&#xff08;上周、这周、下周&#xff09; 1. 基本知识 讲述Demo之前&#xff0c;先补充一些基础知识 JavaScript 中的 Date 对象是用于处理日期和时间的对象。它…

博客系统实现

一.准备工作 1.创建项目&#xff0c;把前端写好的博客静态页面拷贝到webapp目录中 2.引入依赖&#xff0c;这里主要用到servlet&#xff0c;mysql5.1.47&#xff0c;jacson2.15.0 3.找到右上角的edit configurations->smartTomcat->进行配置 4.数据库设计&#xff1a…

十四款大型语言模型在《街头霸王III》中一决雌雄

上周在旧金山举办的Mistral AI黑客马拉松上&#xff0c;开发出了一款基于经典街机游戏《街头霸王III》的人工智能&#xff08;AI&#xff09;基准测试。这款名为“AI Street Fighter III”的开源基准测试由Stan Girard和Quivr Brain开发&#xff0c;游戏在模拟器中运行&#xf…

【力扣刷题日记】1495.上月播放的儿童适宜电影

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1495.上月播放的儿童适宜电影 表&#xff1a;TVProgram 列名类型program_datedatecontent_idintchannelvarc…

【机器学习】深入解析机器学习基础

在本篇深入探讨中&#xff0c;我们将揭开机器学习背后的基础原理&#xff0c;这不仅包括其数学框架&#xff0c;更涵盖了从实际应用到理论探索的全方位视角。机器学习作为数据科学的重要分支&#xff0c;其力量来源于算法的能力&#xff0c;这些算法能够从数据中学习并做出预测…

产品推荐 | 基于Intel(Altera)Arria 10 10AS027/048打造的水星Mercury+ AA1核心板

01 产品概述 水星Mercury AA1片上系统&#xff08;SoC&#xff09;核心板通过结合基于ARM处理器的SoC FPGA、快速DDR4 ECC SDRAM、eMMC flash、QSPI flash、Gigabit Ethernet PHY和RTC形成了一个高性能嵌入式处理方案&#xff0c;结合了CPU系统的灵活性和FPGA原始的、实时的并…

【PolarDB-X从入门到精通】 第四讲:一站式学习源码部署

亲爱的同学们&#xff1a; 大家好&#xff01;在之前的课程中&#xff0c;我们已经初步了解了PolarDB-X的架构、安装部署PolarDB-X的四种方式以及如何使用Docker和PXD进行安装部署。接下来&#xff0c;我们将进入更加专业的领域——源码编译部署PolarDB-X。 课程主题&#xf…

YOLOV8注意力改进方法:DilateFormer多尺度空洞 Transformer(附改进代码)

原论文地址:原论文下载地址 即插即用的多尺度全局注意力机制 本文提出了一种新颖的多尺度空洞 Transformer,简称DilateFormer,以用于视觉识别任务。原有的 ViT 模型在计算复杂性和感受野大小之间的权衡上存在矛盾。众所周知,ViT 模型使用全局注意力机制,能够在任意图像块…

C语言 函数——函数原型

目录 如何合并成一个完整的程序&#xff1f; 函数原型与函数定义的区别 函数原型的作用 如何合并成一个完整的程序&#xff1f; 问题&#xff1a;在一个函数中调用另一个函数&#xff0c;需要具备哪些条件呢&#xff1f; 若函数的定义出现在函数调用之前 若函数的定义出现…

Java绘图坐标体系

一、介绍 下图说明了Java坐标系。坐标原点位于左上角&#xff0c;以像素为单位。在Java坐标系中&#xff0c;第一个是x坐标&#xff0c;表示当前位置为水平方向&#xff0c;距离坐标原点x个像素&#xff1b;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐…

对OceanBase中的配置项与系统变量,合法性检查实践

在“OceanBase 配置项&系统变量实现及应用详解”的系列文章中&#xff0c;我们已经对配置项和系统变量的源码进行了解析。当涉及到新增配置项或系统变量时&#xff0c;通常会为其指定一个明确的取值范围或定义一个专门的合法性检查函数。本文将详细阐述在不同情境下&#x…