MySQL 基础知识(六)之数据查询(一)

目录

1 基本查询

1.1 查询相关列 (select * / 列名)

1.2 别名 (as)

1.3 去重 (distinct)

1.4 对列中的数据进行运算 (+、-、*、/)

2 条件查询 (where)

2.1 等值查询 (=)

2.2 非等值查询 (>、<、>=、<=、!=、><)

2.3 逻辑判断 (and、or、not)

2.4 区间判断 (between and)

2.5 NULL 值判断 (is null、is not null)

2.6 in 运算符

2.7 模糊查询 (like)

3 分支查询

4 排序 (order by)

5 日期和时间函数


1 基本查询

goods 表

drop table if exists goods;
create table goods (
id int(10) primary key auto_increment,
name varchar(14),
netprice float(7,2),
saleprice float(7,2),
weight float(7,2),
stockdate date
)charset=utf8; #单条插入
insert into goods(name,netprice, saleprice, weight, stockdate) values('香蕉', 2.5, 3.8, 24, '2024-02-13');#多条插入
insert into goods(name,netprice, saleprice, weight, stockdate) values
('苹果', 4.5, 7.2, 15, '2024-02-12'),
('苹果', 4.5, 7.5, 65, '2024-02-14'),
('橘子', 3.2, 4.5, 52, str_to_date('02-12-2024', '%m-%d-%Y')),
('橘子', 2.8, 4.5, 76, '2024-02-13'),
('橘子', 3.1, 5.2, 63, '2024-02-14'),
('葡萄', 2.1, 4.7, 26, str_to_date('2024/02/14', '%Y/%m/%d'));

1.1 查询相关列 (select * / 列名)

生产环境下,优先使用列名查询。* 的方式虽然看起来便捷,但实际上需要转换成全列名,效率低,可读性差

select * from goods;
select id, name, stockdate from goods;

   

关键字顺序

select

        ...

from

        ...

以上语句执行顺序:

  1. from
  2. select

1.2 别名 (as)

 通过 as 可以对列名取别名,as 可以省略(列名和别名之间用空格隔开)

select id as '商品id', name as '商品名', netprice '进价', saleprice '售价' from goods;

1.3 去重 (distinct)

 通过 distinct 将查询结果中的重复行去除

select name from goods;
select distinct name from goods;

 

1.4 对列中的数据进行运算 (+、-、*、/)

 可以对列中的数据进行加 +、减 -、乘 *、除 /

select id '商品id', name '商品名', (saleprice - netprice) * weight as '利润' from goods; 

2 条件查询 (where)

通过 where 进行条件查询

关键字顺序

select

        ...

from

        ...

where

        ...

以上语句执行顺序:

  1. from
  2. where
  3. select

2.1 等值查询 (=)

select * from goods where name = '苹果';

2.2 非等值查询 (>、<、>=、<=、!=、><)

# 从商品中选择 weight > 52 的商品
select id, name, netprice, saleprice, weight from goods where weight > 52;# 从商品中选择 weight < 52 的商品
select id, name, netprice, saleprice, weight from goods where weight < 52;# 从商品中选择 weight >= 52 的商品
select id, name, netprice, saleprice, weight from goods where weight >= 52;# 从商品中选择 weight <= 52 的商品
select id, name, netprice, saleprice, weight from goods where weight <= 52;# 从商品中选择 weight != 52 的商品,此外 != 还可以这样用,如 name != '苹果'
select id, name, netprice, saleprice, weight from goods where weight != 52;# 从商品中选择 weight <> 52 的商品,<> 等价于 !=
select id, name, netprice, saleprice, weight from goods where weight <> 52;

 

2.3 逻辑判断 (and、or、not)

# 选择 weight > 52 且 name != '苹果' 的商品
select id, name, netprice, saleprice, weight from goods where weight > 52 and name != '苹果';# 选择 weight > 52 或 not name = '苹果' 的商品(not name = '苹果' 等价于 name != '苹果')
select id, name, netprice, saleprice, weight from goods where weight > 52 or not name = '苹果';

2.4 区间判断 (between and)

# 选择 24 <=  weight <= 50 的商品
select id, name, netprice, saleprice, weight from goods where weight between 24 and 50;

2.5 NULL 值判断 (is null、is not null)

# 查询表 goods 中 weight 为 null 的商品
select * from goods where weight is null;# 查询表 goods 中 weight 不为 null 的商品
select * from goods where weight is not null;

2.6 in 运算符

  • in 运算符语法:
    • where 列名 in (value1, value2, ...)
    • where 列名 not in (value1, value2, ...)
    • 只要列值在列表项 (value1, value2, ...) 中,则该行符合条件
  • in 列表项不仅支持数字,也支持字符甚至时间日期类型等,并且可以将这些不同类型的数据项混合排列而无须跟 column(列) 的类型保持一致,如 in (1, 2,'str')
  • in 可以和 and、or、>、<= 等运算符结合使用
  • in 列表项可以是子查询
  • 如果 in 的列表项是确定的,那么可以用多个 or 来代替。一般认为,如果是对索引字段进行操作,使用 or 效率高于 in,但对于列表项不确定的时候(如需要子查询得到结果),就必须使用 in 运算符。另外,对于子查询表数据小于主查询的时候,也是适用 in 运算符的
select id, name, netprice, saleprice from goods where name in ('苹果', '香蕉');

2.7 模糊查询 (like)

  • “_” 表示单个任意字符
  • “%” 表示任意个任意字符( 0 ~ n 个任意字符)
# 查询表 goods 中 stockdate 为 '2024-02-x4' 的商品
select id, name, stockdate from goods where stockdate like '2024-02-_4';# 查询表 goods 中 saleprice 为 7.xx 的商品
select id, name, saleprice from goods where saleprice like '7.%';# 查询表 goods 中 name 不为 '苹x' 的商品
select id, name stockdate from goods where name not like '苹_';

3 分支查询

分支查询语法:

case

        when 条件1 then 结果1

        when 条件2 then 结果2

        ...

        else 结果n

end

select id, name, stockdate,casewhen stockdate = '2024-02-12' then '前天'when stockdate = '2024-02-13' then '昨天'when stockdate = '2024-02-14' then '今天'else '不知道'end as time
from goods;

4 排序 (order by)

order by 列名 asc / desc;

asc 表示升序,desc 表示降序,默认是升序

关键字顺序

select

        ...

from

        ...

where

        ...

order by

        ...

以上语句执行顺序:

  1. from
  2. where
  3. select
  4. order by
# 按照 weight 重量升序
select id, name, netprice, saleprice, weight from goods order by weight;
# 按照 weight 重量降序
select id, name, netprice, saleprice, weight from goods order by weight desc;
先按照 netprice 进价降序,如果 netprice 相等,则按照 id 降序
select id, name, netprice, saleprice, weight from goods order by netprice desc, id asc;

5 日期和时间函数

时间函数描述
sysdate()获得当前系统时间(年、月、日、时、分、秒)
curdate()获得当前日期
curtime()获得当前时间
week(date)获得指定日期是一年中的第几周
year(date)获得指定日期的年份
month(date)获得指定日期的月份
day(date)获得指定日期是月份的第几天
hour(date)获得指定时间的小时值
minute(date)获得指定时间的分钟值
second(date)获得指定时间的秒值
datediff(enddate,startdate)

获得两个时间相隔的天数 enddate - startdate

注意和 SQL Server 中的 datediff(datepart,startdate,enddate) 不同

adddate(date,n)在指定日期后面加 n 天
str_to_date(str,fmt)将不同时间格式的字符串转为的特定格式的日期  ('%Y-%m-%d')
date_format(date,fmt)将时间转为不同时间格式的字符串

时间格式描述
%Y年,4 位
%y年,2 位
%X年,其中的星期日是周的第一天,4 位,与 %V 使用
%x年,其中的星期一是周的第一天,4 位,与 %v 使用
%b缩写月名
%c

月,数值

%M月名
%m

月,数值(00-12)

%j年的天 (001-366)
%D带有英文前缀的月中的天
%d月的天,数值(00-31)
%e

月的天,数值(0-31)

%U周 (00-53) ,星期日是一周的第一天
%u周 (00-53) ,星期一是一周的第一天
%V周 (01-53) ,星期日是一周的第一天,与 %X 使用
%v

周 (01-53) ,星期一是一周的第一天,与 %x 使用

%w

周的天 (0=星期日, 6=星期六)

%a缩写星期名
%W星期名
%T

时间,24-小时 (hh:mm:ss)

%r

时间,12-小时(hh:mm:ss AM 或 PM)

%pAM 或 PM
%H小时 (00-23)
%h小时 (01-12)
%I小时 (01-12)
%k小时 (0-23)
%l小时 (1-12)
%i分钟,数值(00-59)
%S秒(00-59)
%s秒(00-59)
%f微秒
# 获得当前系统时间、当前日期、当前时间
select sysdate(), curdate(), curtime();# 获得指定日期是一年中的第几周、指定日期的年份、月份、指定日期是月份的第几天
select week('2024-02-14') week, year('2024-02-14') year, month('2024-02-14') month, day('2024-02-14') day;# 获得指定时间的小时值、分钟值、秒值
select hour('16:33:24'),minute('16:33:24'), second('16:33:24');# 获得两个时间之间相隔的天数,只计算日期,这里是2024-03-02 减去 2024-02-29 得到两天
select datediff('2024-03-02 08:00:00','2024-02-29 10:00:00') day;# 将不同时间格式的字符串转为的特定格式的日期
select str_to_date('2024/02-13 13:4356','%Y/%m-%d %H:%i%s');# 将时间转为不同时间格式的字符串
select date_format(sysdate(), '%Y/%m/%d %H:%i:%s');# 在 '2024-02-28 23:59:59' 加 1 / 2 天
select adddate('2024-02-28 23:59:59',1);
select adddate('2024-02-28 23:59:59',2);

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

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

相关文章

源码推荐:hello-algo @ github

github https://github.com/krahets/hello-algo 本项目旨在创建一本开源、免费、对新手友好的数据结构与算法入门教程。全书采用动画图解&#xff0c;结构化地讲解数据结构与算法知识&#xff0c;内容清晰易懂&#xff0c;学习曲线平滑。算法源代码皆可一键运行&#xff0c;支…

上位机图像处理和嵌入式模块部署(借鉴与学习)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于很多学院派的同学来说&#xff0c;他们对市场的感觉一般是比较弱的。如果写一个软件的话&#xff0c;或者说开发一个项目的话&#xff0c;他们…

(一)【Jmeter】JDK及Jmeter的安装部署及简单配置

JDK的安装和环境变量配置 对于Linux、Mac和Windows系统&#xff0c;JDK的安装和环境变量配置方法略有不同。以下是针对这三种系统的详细步骤&#xff1a; 对于Linux系统&#xff1a; 下载适合Linux系统的JDK安装包&#xff0c;可以选择32位或64位的版本。 将JDK的安装包放置…

VueCLI核心知识3:全局事件总线、消息订阅与发布

这两种方式都可以实现任意两个组件之间的通信 1 全局事件总线 1.安装全局事件总线 import Vue from vue import App from ./App.vueVue.config.productionTip false/* 1.第一种写法 */ // const Demo Vue.extend({}) // const d new Demo()// Vue.prototype.x d // 把Dem…

RK3568平台开发系列讲解(实验篇)用户空间和内核空间数据交换

🚀返回专栏总目录 文章目录 一、用户空间和内核空间数据交换二、实验驱动代码三、应用测试代码沉淀、分享、成长,让自己和他人都能有所收获!😄 一、用户空间和内核空间数据交换 内核空间和用户空间的内存是不能互相访问的。但是很多应用程序都需要和内核进行数据的交换,…

【AI视野·今日NLP 自然语言处理论文速览 第七十八期】Wed, 17 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 17 Jan 2024 (showing first 100 of 163 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Deductive Closure Training of Language Models for Coherence, Accur…

优化策略模式,提高账薄显示的灵活性和扩展性

接着上一篇文章&#xff0c;账薄显示出来之后&#xff0c;为了提高软件的可扩展性和灵活性&#xff0c;我们应用策略设计模式。这不仅仅是为了提高代码的维护性&#xff0c;而是因为明细分类账账薄显示的后面有金额分析这个功能&#xff0c;从数据库后台分析及结合Java语言特性…

2024幻兽帕鲁服务器创建教程_阿里PK腾讯超简单

幻兽帕鲁官方服务器不稳定&#xff1f;自己搭建幻兽帕鲁服务器&#xff0c;低延迟、稳定不卡&#xff0c;目前阿里云和腾讯云均推出幻兽帕鲁专用服务器&#xff0c;腾讯云直接提供幻兽帕鲁镜像系统&#xff0c;阿里云通过计算巢服务&#xff0c;均可以一键部署&#xff0c;鼠标…

vscode 提取扩展时出错。XHR failed

检查 vscode 设置中的代理服务器&#xff0c;位置如下图 清空 vocode 中的 Proxy&#xff0c;我黄线框的部分&#xff0c;内容清空。 检查电脑系统环境变量&#xff0c;是否设置了 http_proxy 和 https_proxy&#xff0c;如果有设置&#xff0c;则删除这两项&#xff0c;下载完…

《区块链公链数据分析简易速速上手小册》第4章:交易数据分析(2024 最新版)

文章目录 4.1 解析交易输入和输出4.1.1 基础知识4.1.2 重点案例&#xff1a;追踪比特币交易4.1.3 拓展案例 1&#xff1a;以太坊交易的输入输出解析拓展案例1&#xff1a;以太坊交易的输入输出解析步骤1: 连接到以太坊网络步骤2: 获取交易数据步骤3: 解析交易输入结论 4.1.4 拓…

Uipath 调用Python 脚本程序详解

Python 活动概述 UiPath.Python.Activities 是一个新的活动包&#xff0c;创建它是为了支持直接从工作流运行 Python 脚本和方法。 其包含以下活动&#xff1a; Python 作用域(Python Scope) - 为 Python 活动提供作用域的容器。 加载 Python 脚本(Load Python Script) - 将 P…

中国电子学会2023年12月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)

2023-12 Scratch四级真题 分数&#xff1a;100 题数&#xff1a;24 分数&#xff1a;60min 一、单选题(共10题&#xff0c;共30分) 1.运行下列程序&#xff0c;输入“abcdef”&#xff0c;程序结束后&#xff0c;变量“字符串”是&#xff1f;&#xff08;B&#xff09;(3…

代码随想录刷题笔记 DAY 26 | 组合总和 No.39 | 组合求和 II No.40 | 分割回文串 No.131

文章目录 Day 2501. 组合总和&#xff08;No. 39&#xff09;1.1 题目1.2 笔记1.3 代码 02. 组合求和 II&#xff08;No. 40&#xff09;2.1 题目2.2 笔记2.3 代码 03. 分割回文串&#xff08;No. 131&#xff09;3.1 题目3.2 笔记3.3 代码 Day 25 01. 组合总和&#xff08;No…

Java入门高频考查基础知识9(银盛15问万字参考答案)

JAVA刷题专栏&#xff1a;http://t.csdnimg.cn/9qscL 目录 一、Springcloud的工作原理 三、注册中心心跳是几秒 四、消费者是如何发现服务提供者的 五、多个消费者调⽤用同⼀接口&#xff0c;eruka默认的分配⽅式是什么 六、springboot常用注解&#xff0c;及其实现 七、…

ClickHouse--10--临时表、视图

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.临时表1.1 特征1.2 创建一个临时表 2.视图2.1 普通视图2.2 物化视图 1.临时表 1.1 特征 ClickHouse 支持临时表&#xff0c;临时表具备以下特征&#xff1a; 当…

【JAVA WEB】JavaScript(WebAPI)--DOM基本概念 获取元素 点击事件 键盘事件

目录 什么是WebAPI DOM的基本概念 DOM是什么 DOM树 获取元素 querySelector querySelectorAll 事件 事件初识 基本概念 事件三要素 点击事件 键盘事件 什么是WebAPI 前端学习的 JS 分成三个大的部分 ECMAScript&#xff1a;基础语法部分DOM API&#xff1a;操作…

鸿蒙开发系列教程(十九)--页面内动画(2)

组件内转场动画 组件的插入、删除过程即为组件本身的转场过程&#xff0c;组件的插入、删除动画称为组件内转场动画。通过组件内转场动画&#xff0c;可定义组件出现、消失的效果。 transition(value: TransitionOptions) 参数可以定义平移、透明度、旋转、缩放这几种转场样…

中小学信息学奥赛CSP-J认证 CCF非专业级别软件能力认证-入门组初赛模拟题第一套(完善程序题)

CCF认证CSP-J入门组模拟测试题第一套 三、完善程序题 第一题 九宫格 请完善下面的程序,将1~9个数字分别填人3x3的九宫格中,第一行的三个数字组成一个三位数。要使第二行的三位数是第一行的2倍,第三行的三位数是第一行的3倍且每个格子里的数字都不能重复,现在要求输出所有的填…

视觉slam十四讲学习笔记(四)相机与图像

理解理解针孔相机的模型、内参与径向畸变参数。理解一个空间点是如何投影到相机成像平面的。掌握OpenCV的图像存储与表达方式。学会基本的摄像头标定方法。 目录 前言 一、相机模型 1 针孔相机模型 2 畸变 单目相机的成像过程 3 双目相机模型 4 RGB-D 相机模型 二、图像…

【JavaEE】网络原理: UDP协议和TCP协议的相关内容

目录 1. 应用层 2. 传输层 2.1 端口号 2.2 UDP协议 2.3 TCP协议 1.确认应答 2.超时重传 3.连接管理 三次握手 四次挥手 状态转换 4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答 9.面向字节流 粘包问题 10.异常情况 网络通信中, 协议是一个非常重…