SQL——数据查询DQL

基本语句、时间查询(当天、本周,本月,上一个月,近半年的数据)。

目录

1 查询语句基本结构

2 where 子句

3 条件关系运算符

4 条件逻辑运算符

5 like 子句

6 计算列

7 as 字段取别名

8 distinct 清除重复行

9 排序 order by

10 聚合函数 

10.1 count() 统计函数

10.2 max() 最大值函数

10.3 min() 最小值函数

10.4 avg() 平均值函数

11 日期函数

12 字符串函数

13 分组查询 group by

14 分页查询 limit

15 时间查询语句


1 查询语句基本结构

# 查询指定列
select colnumName1[,colnumName2,colnumName3...] from <tableName> [where
conditions];
# 查询到的记录的所有列,则可以使⽤ * 替代字段名列表
select * from <tableName>;

——查询全部列,也可指定某列

select s_num,s_name,s_sex,s_age,s_dept from student;

select * from student;

where 子句

在删除、修改及查询的语句后都可以添加where⼦句(条件),⽤于筛选满⾜特定的添

加的数据进⾏删除、修改和查询操作。
delete from tableName where conditions;
update tabeName set ... where conditions;
select .... from tableName where conditions;

条件关系运算符

## = 等于
select * from student where s_num='230101';

## != <> 不等于
select * from student where s_num !='230101';
select * from student where s_num <> '230101';

## > ⼤于
select * from student where s_age>23;

## < ⼩于
select * from student where s_age<23;

## >= ⼤于等于
select * from student where s_age>=23;

## <= ⼩于等于
select * from student where s_age<=23;

## between and 区间查询 between v1 and v2 [v1,v2]
select * from student where s_age between 23 and 24;

条件逻辑运算符

# and 并且 筛选多个条件同时满⾜的记录
select * from student where s_age=23 and s_sex='女';

# or 或者 筛选多个条件中⾄少满⾜⼀个条件的记录
select * from student where s_age=23 or s_sex='女';

# not 取反
select * from student where s_age not between 22 and 24;

like 子句

# 查询学⽣姓名包含'张一'的学⽣信息
select * from student where s_name like '张一';

# 查询学⽣姓名第⼀个字为'张'的学⽣信息
select * from stus where stu_name like '张%';

# 查询学⽣姓名最后⼀个字⺟为'一'的学⽣信息
select * from student where s_name like '%一';

# 查询学⽣姓名中第⼆个字为小的学⽣信息
select * from student where s_name like '_小%';

% 表示任意多个字符 【 %一% 包含字一】

_ 表示任意⼀个字符  【 _小% 第⼆个字为小】

计算列

对某列进行计算并显示。 

select s_name,2023-s_age from student;

7 as 字段取别名

 在上面计算的基础下,重新定义一个列名。

select s_name,2023-s_age as s_birthday from student;

distinct 清除重复行

从查询的结果中将重复的记录清除。
select s_age from student;

9 排序 order by

将查询到的满⾜条件的记录按照指定的列的值升序(asc)、降序(desc)排列。
select * from tableName where conditions order by columnName asc|desc;

# 单字段排序
select * from student where s_age>22 order by s_sex desc;

# 多字段排序
select * from student where s_age>22 order by s_sex asc,s_age desc;

10 聚合函数 

进⾏计算的函数count 、max 、min 、sum 、avg。

10.1 count() 统计函数

统计满足条件的指定字段值的个数(记录数) 。

# 统计学生表总数
select count(stu_num) from stus;

# 统计学⽣表中性别为女的学⽣总数
select count(s_num) from student where s_sex='女';

10.2 max() 最大值函数

查询满足条件的记录中指定列的最大值。

select max(s_age) from student;

select max(s_age) from student where s_sex='男';

10.3 min() 最小值函数

查询满足条件的记录中指定列的最小值。

select max(s_age) from student;

select max(s_age) from student where s_sex='男';

10.4 avg() 平均值函数

查询满足条件的记录中计算指定列的平均值。

select avg(s_age) from student;

select avg(s_age) from student where s_sex='男';

11 日期函数

  • 向日期类型的列添加数据时,可以通过字符串类型赋值(字符串的格式必须为 yyyy-MM-dd hh:mm:ss)
  • 获取当前系统时间添加到日期类型的列,可以使⽤ now() 或者 sysdate()
# 创建新列——时间
alter table student add date datetime;

12 字符串函数

 对字符串进⾏处理。

  • concat :concat(colnum1,colunm2,...) 拼接多列
  • upper:upper(column) 将字段的值转换成⼤写
  • lower:lower(column) 将指定列的值转换成⼩写
  • substring:substring(column,start,len) 从指定列中截取部分显示 start从1开始
select concat(s_name,'-',s_sex) from student;
select upper(s_name) from student;
select lower(s_name) from student;
select s_name,substring(s_dept,1,3) from student;

13 分组查询 group by

select 分组字段/聚合函数
from 表名
[where 条件]
group by 分组列名 [having 条件]
[order by 排序字段]
select 后通常显示分组字段和聚合函数(对分组后的数据进行统计、求和、平均值等) 语句执⾏属性:
  • 先根据where条件从数据库查询记录
  • group by对查询记录进⾏分组
  • 执⾏having对分组后的数据进⾏筛选
# 先对查询的学⽣信息按性别进⾏分组(分成了男、⼥两组),然后再分别统计每组学⽣的个数
select s_sex,count(s_num) from student group by s_sex;

# 先对查询的学⽣信息按性别进⾏分组(分成了男、⼥两组),然后再计算每组的平均年龄
select s_sex,avg(s_age) from student group by s_sex;

# 先对学⽣按年龄进⾏分组,然后统计各组的学⽣数量,还可以对最终的结果排序
select s_age,count(s_num) from student group by s_age order by s_age;

# 查询所有学⽣,按年龄进⾏分组,然后分别统计每组的⼈数,再筛选当前组⼈数>1的组,再按年龄升序显示出来
select s_age,count(s_num) from student
group by s_age
having count(s_num)>1
order by s_age;

# 查询性别为'女'的学⽣,按年龄进⾏分组,然后分别统计每组的⼈数,再筛选当前组⼈数>1的组,再按年龄升序显示出来
select s_age,count(s_num) from student
where s_sex='女'
group by s_age
having count(s_num)>1
order by s_age;

14 分页查询 limit

select ...
from ... 
where ...
limit param1,param2
param1 int :表示获取查询语句的结果中的第⼀条数据的索引(索引从0开始)
param2 int:表示获取的查询记录的条数(如果剩下的数据条数<param2,则返回剩下的所有记录)

15 时间查询语句

——今天

select * from 表名 where to_days(时间字段列名) = to_days(now());

——昨天

select * from <tablename> where to_days(now()) - to_days(时间字段名)=1;

——近7天

select * from 表名 where date_sub(curdate(),interval 7 day) < date(时间字段名);

——本周

select * from 表名 where yearweek(date_format(时间字段名,'%Y-%m-%d')) = yearweek(now());

——上周

select * from 表名 where yearweek(date_format(时间字段名,'%Y-%m-%d')) = yearweek(now())-1;

——近7天

select * from 表名 where date_sub(curdate(),interval 7 day) < date(时间字段名);

——近30天

select * from 表名 where date_sub(curdate(),interval 30 day) < date(时间字段名);

——本月

select * from 表名 where date_format(时间字段名, '%Y%m') = date_dormat(curdate(),'%Y%m');

——上个月

select * from 表名 where period_diff(date_format(now(),'%Y%M'), date_format(时间字段名,'%Y%m'))=1;

 ——本季度

select * from 表名 where quarter(时间字段名) =quarter(now());

——上季度

select * from 表名 where quarter(时间字段名)=quarter(date_sub(now(),interval 1 quarter));

——本年

select * from 表名 where year(时间字段名, '%Y%m') = year(now());

——上年

select * from 表名 where year(时间字段名) = year(date_sub(now(),interval 1 year));

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux mysql

安装 下载包 wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar解压 tar -zxvf mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar -C /usr/local/mysql安装openssl-devel插件 yum install openssl-devel安装rpm包 使用rpm -ivh安装图中r…

【Unity项目实战】从零手戳一个背包系统

首先我们下载我们的人物和背景资源,因为主要是背包系统,所以人物的移动和场景的搭建这里我们就不多讲了,我这里直接提供基础项目源码给大家去使用就行 基础项目下载地址: 链接: https://pan.baidu.com/s/1o7_RW_QQ1rrAbDzT69ApRw 提取码: 8s95 顺带说一下,这里用到了uni…

AttributeError: module transformers has no attribute LLaMATokenizer解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

AES加密

来源&#xff1a;链接: b站up主可厉害的土豆 &#xff08;据评论区说图片中有计算错误&#xff0c;但是过程是对的。只是了解过程问题不大&#xff0c;专门研究这一块的话自己可以看视频算一下&#xff09; 准备 首先&#xff0c;明文是固定长度 16字节 128位。 密钥长度可以…

TCP协议一

TCP数据报格式 TCP通信时序 下图是一次TCP通讯的时序图。TCP连接建立断开。包含大家熟知的三次握手和四次握手。 在这个例子中&#xff0c;首先客户端主动发起连接、发送请求&#xff0c;然后服务器端响应请求&#xff0c;然后客户端主动关闭连接。两条竖线表示通讯的两端&…

houjie-cpp面向对象

houjie 面向对象 面向对象&#xff08;上&#xff09; const 在一个函数后面放const&#xff0c;这个只能修饰成员函数&#xff0c;告诉编译器这个成员函数不会改数据 const还是属于函数签名的一部分。 引用计数&#xff1a;涉及到共享的东东&#xff0c;然后当某个修改的时候&…

Mysql的学习与巩固:一条SQL查询语句是如何执行的?

前提 我们经常说&#xff0c;看一个事儿千万不要直接陷入细节里&#xff0c;你应该先鸟瞰其全貌&#xff0c;这样能够帮助你从高维度理解问题。同样&#xff0c;对于MySQL的学习也是这样。平时我们使用数据库&#xff0c;看到的通常都是一个整体。比如&#xff0c;你有个最简单…

【Paper】2019_Resilient Consensus Through Asynchronous Event-based Communication

Wang Y, Ishii H. Resilient consensus through asynchronous event-based communication[C]//2019 American Control Conference (ACC). IEEE, 2019: 1842-1847. 文章目录I. INTRODUCTIONII. EVENT-BASED RESILIENT CONSENSUS PROBLEMA. Preliminaries on graphsB. Event-base…

基于Java+ SpringBoot+Vue 的网上图书商城管理系统(毕业设计,附源码,教程)

您好&#xff0c;我是程序员徐师兄&#xff0c;今天为大家带来的是 基于Java SpringBootVue 的网上图书商城管理系统&#xff08;毕业设计&#xff0c;附源码&#xff0c;教程&#xff09;。 &#x1f601; 1.Java 毕业设计专栏&#xff0c;毕业季咱们不慌忙&#xff0c;几百款…

电脑桌面图标间距突然变大怎么恢复

1. WindowsR打开 > 输入regedit 按住WindowsR打开运行&#xff0c;输入regedit并点击确定。 2. 双击Control Panel 双击展开HKEY_CURRENT_USER&#xff0c;双击展开Control Panel&#xff0c;双击展开Desktop。 3. 更改间距 点击打开WindowMetrics&#xff0c; 双击打开…

两年外包生涯,给我后面入职字节跳动奠定了基础.....

我是一位软件测试工程师。从大学毕业后&#xff0c;我进入了一家外包公司&#xff0c;在那里工作了两年时间。虽然我在公司中得到了不少锻炼和经验&#xff0c;但是我一直渴望能够进入一家更加专业的公司&#xff0c;接触更高端、更有挑战性的项目。 于是&#xff0c;我开始主…

Keil 4 安装教程及简单使用【嵌入式系统】

Keil 4 安装教程及简单使用【嵌入式系统】前言推荐说明Keil 4 for Arm安装教程1.安装MDK2.激活mdkkeil 4 for arm 的简单使用1建立新工程2在工程下创建新文件3.设置工程属性4.中文注释5.编辑代码6.build7.debug8. 调试窗口简介keil 4 for C51安装教程1.前期准备2.开始keil4 for…

记录-VueJs中如何使用Teleport组件

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 在DOM结构相对比较复杂,层级嵌套比较深的组件内,需要根据相对应的模块业务处理一些逻辑,该逻辑属于当前组件 但是从整个页面应用的视图上看,它在DOM中应该被渲染在整个vue应用外部的其他地方,不能影响…

[架构之路-159]-《软考-系统分析师》-10-系统分析-6-现有业务流程分析, 系统分析最核心的任务

目录 第 10章 现有系统 分 析 1 0 . 6 现有业务流程分析 10.6.1 业务流程分析槪述 1 . 业务流程分析的步骤 2 . 业务流程分析的方法 10.6.2 业务-流程图TFD 1. T F D 的基本符号 2. TFD的绘制 10.6.3 业务 - 活动图 10.6.4 业务流程建模BPM 1. B P M 概述 2 . 标杆…

计算机视觉基础__图像特征

计算机视觉基础__图像特征 本篇目录&#xff1a; 一、前言 二、位图和矢量图概念 三、图像的颜色特征 四、RGB 颜色空间 五、HSV 颜色空间 六、HLS 颜色空间 七、实例代码 八、参考资料 一、前言 传统图像处理&#xff0c;需要找出图片中的关键特征&#xff0c;然后对这…

window端口占用如何杀死进程

1、输入命令&#xff1a;netstat -ano|findstr “8099” 2、杀死命令 taskkill /PID 2980 -T -F

Python机器学习:朴素贝叶斯

前两天不知道把书放哪去了&#xff0c;就停更了一下&#xff0c;昨天晚上发现被我放在书包夹层里面了&#xff0c;所以今天继续开始学习。 首先明确一下啊&#xff0c;朴素贝叶斯是什么&#xff1a;朴素贝叶斯分类器是一种有监督的统计学过滤器&#xff0c;在垃圾邮件过滤、信…

服务 API 设计之 ——API 参数规范

【强制】字段名称用小驼峰风格 【强制】Service API 返回值必须使用 Response 包装 Service API 返回值强制要求进行通用包装&#xff0c;例如&#xff1a;Response。Response 的作用&#xff1a; 统一方法表示 API 调用是否成功API 调用失败时&#xff0c;统一格式反馈错误 C…

vue实现轨迹回放(很详细)

效果 功能 时间搜索查询轨迹并生成&#xff08;默认是当前的一天的时间&#xff09; 图标能跟随路径方向移动 删除了百度logo和版权信息&#xff08;业务需要&#xff0c;不建议删除&#xff09; Vue Baidu Map npm install vue-baidu-map --save main.js import Vue from vu…

关于h5跳转app的坑

需求&#xff1a;h5点击按钮跳转app&#xff0c;有下载app的直接打开&#xff0c;无下载就跳转下载的链接&#xff08;安卓跟ios的下载链接不一样&#xff09; 1、用超链接的方式打开app <a href"xxxx"></a> 弊端&#xff1a;这种方式只能控制有下载ap…