Mysql查询

news2024/9/22 7:33:08

Mysql查询

  • 一.DQL基础查询
    • 1.语法
    • 2.特点
    • 3.查询结果处理
  • 二.单行函数
    • (1)字符函数
    • (2)逻辑处理
    • (3)数学函数
    • (4)日期函数
  • 三.分组函数
  • 四.条件查询
  • 五.比较
  • 六.模糊查询
  • 七.UNION和UNION ALL
    • (1)UNION
    • (2)UNION ALL
  • 八.排序
  • 九.数量限制
  • 十.分组查询

一.DQL基础查询

DQL(Data Query Language): 数据查询语言查询是使用频率最高的一个操作,
可以从一个表中查询数据,也可以从多个表中查询数据。

1.语法

select 查询列表 from 表名

2.特点

(1)查询列表可以是:表中的字段、常量、表达式、函数
(2)查询的结果是一个虚拟的表格

3.查询结果处理

特定列查询:select column1,column2 from table
全部列查询: select * from table
算数运算符:+ - * /
排除重复行: select distinct column1,column2 from table
查询函数:select 函数; / 例如version()
函数:类似于java中的方法,将一组逻辑语句事先在数据库中定义好,可以直接调用
分类:
单行函数:如concat、length、ifnull等
分组函数:做统计使用,又称为统计函数、聚合函数、组函数

二.单行函数

(1)字符函数

length():获取参数值的字节个数

SELECT id,NAME,LENGTH(NAME) FROM nbaplayer

char_length()获取参数值的字符个数

SELECT id,NAME,CHAR_LENGTH(NAME) FROM nbaplayer

concat(str1,str2,…):拼接字符串

SELECT id,CONCAT(NAME,':',weizhi) FROM nbaplayer

upper()/lower():将字符串变成大写/小写

SELECT id,UPPER(NAME) AS '姓名',weizhi FROM nbaplayer
SELECT id,LOWER(NAME) AS '姓名',weizhi FROM nbaplayer

substring(str,pos,length):截取字符串 位置从1开始

SELECT id,NAME,SUBSTRING(NAME,1,2) AS"截取",weizhi FROM nbaplayer

instr(str,指定字符):返回子串第一次出现的索引,如果找不到返回0

SELECT id,NAME,INSTR(NAME,'特') AS'查找',weizhi FROM nbaplayer

trim(str):去掉字符串前后的空格或子串,trim(指定子串 from 字符串)

SELECT id,NAME,weizhi,TRIM('a' FROM NAME) AS'去掉字串' FROM nbaplayer

lpad(str,length,填充字符):用指定的字符实现左填充将str填充为指定长度

SELECT id,NAME,LPAD(NAME,10,'a') FROM nbaplayer

rpad(str,length,填充字符):用指定的字符实现右填充将str填充为指定长度

SELECT id,NAME,RPAD(NAME,10,'a') FROM nbaplayer

replace(str,old,new):替换,替换所有的子串

SELECT id,NAME,REPLACE(NAME,'特','6') FROM nbaplayer

(2)逻辑处理

(1)case when 条件 then 结果1 else 结果2 end; 可以有多个when

SELECT
  id,
  NAME,
  (
    CASE
      WHEN weight < 100
      THEN '太轻了'
      WHEN weight >= 100
      AND weight < 150
      THEN '正常'
      ELSE '超重'
    END
  )
FROM
  nbaplayer

(2)ifnull(被检测值,默认值)函数检测是否为null,如果为null,则返回指定的值,否则返回原本的值

SELECT
  id,
  NAME,
  IFNULL (weizhi, '位置还没有录入')
FROM
  nbaplayer

(3)if函数:if else的 效果 if(条件,结果1,结果2)

 -- if函数:if else的 效果 if(条件,结果1,结果2)
SELECT
  id,
  NAME,
  IF (
    weight >= 100
    AND weight < 150,
    '正常',
    '不正常'
  )
FROM
  nbaplayer 

(3)数学函数

(1) round(数值):四舍五入

SELECT id,NAME,height,ROUND(height) FROM nbaplayer

(2)ceil(数值):向上取整,返回>=该参数的最小整数

SELECT id,NAME,height,CEIL(height) FROM nbaplayer

(3)floor(数值):向下取整,返回<=该参数的最大整数

SELECT id,NAME,height,FLOOR(height) FROM nbaplayer

(4)truncate(数值,保留小数的位数):截断,小数点后截断到几位

SELECT id,NAME,height,TRUNCATE(height,0) FROM nbaplayer

(5)mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负

SELECT id,NAME,weight,height,MOD(weight,height) FROM nbaplayer

(6)rand():获取随机数,返回0-1之间的小数

SELECT id,NAME,height,RAND() AS '随机数' FROM nbaplayer

(4)日期函数

(1)now():返回当前系统日期+时间

SELECT NOW()

(2)curdate():返回当前系统日期,不包含时间

SELECT CURDATE()

(3)curtime():返回当前时间,不包含日期

SELECT CURTIME()

可以获取指定的部分,年、月、日、小时、分钟、秒
(1)YEAR(日期列)

SELECT YEAR(birthday) FROM nbaplayer

(2)MONTH(日期列)

SELECT MONTH(birthday) FROM nbaplayer

(3)DAY(日期列)

SELECT DAY(birthday) FROM nbaplayer

(4)HOUR(日期列)

SELECT HOUR(birthday) FROM nbaplayer

(5)MINUTE(日期列)

SELECT MINUTE('2003-2-20 11:39:12')

(6)SECOND(日期列)

SELECT SECOND('2003-2-20 11:39:12')

str_to_date:将日期格式的字符转换成指定格式的日期

SELECT STR_TO_DATE('2003,2,20','%Y,%m,%d')//这个方法格式必须正确否则会显示NULL

date_format:将日期转换成字符串

SELECT DATE_FORMAT(CURDATE(),'%Y年%m月%d日')

datediff(big,small):返回两个日期相差的天数

SELECT DATEDIFF(CURDATE(),birthday) FROM nbaplayer

在这里插入图片描述
上表是日期转化时的格式

三.分组函数

功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:sum 求和,avg 平均值,max 最大值,min 最小值,count 计数(非空)

1.sum,avg一般用于处理数值型,max,min,count可以处理任何类型
2.以上分组函数都忽略null值
3.count函数的一般使用count(*)用作统计行数
4.和分组函数一同查询的字段要求是group by后的字段

四.条件查询

使用WHERE 子句,将不满足条件的行过滤掉,WHERE 子句紧随 FROM 子句。
语法:select <结果> from <表名> where <条件>

五.比较

(1)=, != 或<>, >, <, >=, <=

(2)逻辑运算
and 与
or 或
not

SELECT * FROM nbaplayer WHERE weizhi='后卫' -- =
SELECT * FROM nbaplayer WHERE weizhi!='前锋' -- !=或<>
SELECT * FROM nbaplayer WHERE height>200.0 -- >
SELECT * FROM nbaplayer WHERE height<200.0 -- <
SELECT * FROM nbaplayer WHERE weight>=100 -- >=
SELECT * FROM nbaplayer WHERE weight<=100 -- <=
SELECT * FROM nbaplayer WHERE height<=200 AND weight<=100 --与 AND
SELECT * FROM nbaplayer WHERE weizhi='后卫' OR weizhi='前锋' --或 OR

六.模糊查询

(1)LIKE :是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值
或数值型. 通配符: % 任意多个字符,包含0个字符 _ 任意单个字符
(2)between and 两者之间,包含临界值;
(3)in 判断某字段的值是否属于in列表中的某一项
(4)IS NULL(为空的)或 IS NOT NULL(不为空的)

-- is null is not null
SELECT * FROM nbaplayer WHERE weizhi IS NOT NULL
SELECT * FROM nbaplayer WHERE weizhi IS NULL

-- not in()/in()in 判断某字段的值是否属于in列表中的某一项
SELECT * FROM nbaplayer WHERE weight IN(96,111,140)
SELECT * FROM nbaplayer WHERE weight NOT IN(96,111,140)

-- between and 两者之间,包含临界值
SELECT * FROM nbaplayer WHERE weight BETWEEN 100 AND 150

-- 模糊查询
-- LIKE :是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值
-- 或数值型. 通配符: % 任意多个字符,包含0个字符 _ 任意单个字符
SELECT * FROM nbaplayer WHERE NAME LIKE '_明'
SELECT * FROM nbaplayer WHERE NAME LIKE '%特%'

七.UNION和UNION ALL

(1)UNION

UNION 的语法如下:
[SQL 语句 1]
UNION
[SQL 语句 2

UNION用于将两条语句合并,并且有自动去重的功能

SELECT * FROM nbaplayer WHERE weizhi='后卫'
UNION
SELECT * FROM nbaplayer WHERE weizhi='前锋'

(2)UNION ALL

UNION ALL 的语法如下:
[SQL 语句 1]
UNION ALL
[SQL 语句 2

UNION ALL同样用于将两条语句合并,但不能自动去重,会把所有记录返回,且效率高于UNION

SELECT * FROM nbaplayer WHERE weizhi='后卫'
UNION ALL
SELECT * FROM nbaplayer WHERE weizhi='前锋'

八.排序

查询结果排序,使用 ORDER BY 子句排序 order by 排序列 ASC/DESC
asc代表的是升序,desc代表的是降序,如果不写,默认是升序
order by子句中可以支持单个字段、多个字段

SELECT * FROM nbaplayer WHERE weizhi='中锋' ORDER BY height DESC, weight ASC

九.数量限制

数量限制
limit子句:对查询的显示结果限制数目 (sql语句最末尾位置)

SELECT * FROM table LIMIT offset rows;
SELECT * from table LIMIT 0

一般用于分页操作

SELECT * FROM nbaplayer WHERE weizhi='后卫' ORDER BY height LIMIT 1,2
-- 跳过1个,查询两个

十.分组查询

语法:
select 分组函数,列(要求出现在group by的后面)
from 表
[where 筛选条件]
group by 分组的列表
[having 分组后的筛选]
[order by 子句]
注意:查询列表比较特殊,要求是分组函数和group by后出现的字段

-- 分组
SELECT weizhi,SUM(height)FROM nbaplayer GROUP BY weizhi
SELECT weizhi,AVG(weight)FROM nbaplayer GROUP BY weizhi HAVING AVG(weight)>100
SELECT weizhi,SUM(id) FROM nbaplayer GROUP BY weizhi HAVING SUM(id)<30

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

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

相关文章

【Java遇错】Error: failed to initialize Sentinel CommandCenterLog

问题描述&#xff1a; 引入sentinel的相关依赖之后&#xff0c;启动项目服务&#xff0c;发现如下错误 Error: failed to initialize Sentinel CommandCenterLog java.lang.NoClassDefFoundError: com/alibaba/csp/sentinel/log/LoggerSpiProviderat com.alibaba.csp.sentin…

【openGauss数据库】--运维指南04--数据导入

【openGauss数据库】--运维指南04--数据导入 &#x1f53b; 一、openGauss导入数据&#x1f530; 1.1 概述&#x1f530; 1.2 INSERT语句写入数据&#x1f530; 1.3 gsql元命令导入数据&#x1f530; 1.4 使用gs_restore命令、gsql命令导入数据&#xff08;主要&#xff09; &a…

[毕业设计baseline]tkinter+flask的毕业设计开发baseline

一.前言 最近开发了一个结合了tkinter和flask框架的GUI页面服务器。目前可以想到的开发方向有。 1.基于python的局域网聊天系统。 2.服务器管理系统。 3.网络安全防御系统。 接下来就来介绍一下这个框架以及开发方向的详细思路。如果计算机专业的本科毕业生感兴趣可以用pyt…

35.RocketMQ之Broker端消息存储文件详解

highlight: arduino-light Broker端文件详解 dubbo的核心是spi&#xff0c;看懂了spi那么dubbo基本上也懂了。对于rmq来说&#xff0c;它的核心是broker&#xff0c;而broker的核心是commitlog、consumequeue、indexfile&#xff0c;而这些文件对应的最终都是MappedFile&#x…

使用OpenCV在图像上绘制质心

这段代码中已经实现了在图像上绘制质心的功能。质心,也称为重心,是物体质量分布的几何中心,可以通过物体质量和位置的加权平均来求得。 在这个程序中,图像的质心(重心)是通过计算像素强度(可以被看作是“质量”)的加权平均位置得到的。图像上每一个像素都有一个位置(…

软件设计模式与体系结构-软件体系-数据流风格软件体系结构

二、数据流风格软件体系结构 概念 数据流系统的各软件组件在无数据到达时处于休眠状态&#xff0c;当有数据到达时&#xff0c;该软件组件被激活&#xff0c;开始对数据进行处理。数据流风格软件体系结构将整个软件系统看作由一系列作用在连续数据集合上的“变换”组成。数据…

学无止境·MySQL(3-2)

单表查询试题 单表题目一1、创建表2、查询出部门编号为30的所有员工3、所有销售员的姓名、编号和部门编号4、找出奖金高于工资的员工5、找出奖金高于工资60%的员工。6、 找出部门编号为10中所有经理&#xff0c;和部门编号为20中所有销售员的详细资料。7、找出部门编号为10中所…

Elasticsearch + Kibana实现词云

需求 实现文件导入es&#xff0c;支持格式TXT、DOC、PPT、XLS、PDF、图片ik分词器远程热更新自定义扩展字典和停用字典Kibana配置词云&#xff0c;并显示对应文档详情和字典频次&#xff0c;且自定义显示字典 技术点 文件导入&#xff1a;es插件ingest-attachment图片文字识…

Nuxt3如何新建项目

第一步 创建项目 1.新建一个文件目录 nuxt-app 2.命令行cd到目录下运行 npx nuxi init nuxt-test 回车运行下 nuxt-test是文件名自己随意 3.再cd nuxt-test到目录下 运行npm install 4.运行完成后 npm run dev 启动项目 显示以下页面 第二步 修改入口代码,编写自己的代码 1.…

从零开始的PICO教程(2)--实时预览应用场景

从零开始的PICO教程&#xff08;2&#xff09;–实时预览应用场景 基于串流能力&#xff0c;你可以通过 PDC 工具在头戴上实时预览应用内场景。​ 文章目录 从零开始的PICO教程&#xff08;2&#xff09;--实时预览应用场景一、提示信息​二、准备工作​三、操作步骤​四、故…

SpringBoot3【④ 基础特性(外部和内部化配置,整合Junit)】

1. SpringApplication 1.1. 自定义 banner 类路径添加banner.txt或设置spring.banner.location就可以定制 banner推荐网站&#xff1a;Spring Boot banner 在线生成工具&#xff0c;制作下载英文 banner.txt&#xff0c;修改替换 banner.txt 文字实现自定义&#xff0c;个性化…

笔记本没有WIFI列表解决方案

是否有网络图标类似于地球的图案 打开个性化 点击打开或关闭系统图标 查看网络那一项是否是打开 如果没有打开就打开注册表 如果不是上图中的数据&#xff0c;就右键新建输入以上的数据。如果还是不能解决就进行如下操作 打开控制面板&#xff0c;打开网络与Internet,再打…

初出茅庐的小李博客之机智云获取网络实时时间(NTP)

机智云获取网络实时时间 机智云代码中其实这么一个函数gizwitsGetNTP( )可以获取网络时间&#xff0c;今天就在STM32F407上教大家如何通过机智云获取NTP网络时间。 简单介绍一下NTP: 网络时间同步现在有2种同步协议NTP和PTP&#xff0c;NTP与PTP不同在于时间戳的产生位置。N…

Kubernetes对象深入学习之二:细说schema.ObjectKind

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 在前文咱们对对象体系有了大概了解&#xff0c;接下来就要按照前面换分的三个知识区域逐个深入学习&#xff0c;今天从最简单的对象类型开始 runtime.Object…

PWM 输出实验(stm32)

目录 PWM的代码pwm.cpwm.h main.c 说明&#xff1a;以下内容参考正点原子的资料 PWM的代码 pwm.c //TIM3 PWM部分初始化 //PWM输出初始化 //arr&#xff1a;自动重装值 //psc&#xff1a;时钟预分频数 void TIM3_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitSt…

华为云CodeArts Build-云端化的编译构建平台

随着互联网企业业务种类增多&#xff0c;业务跨平台&#xff0c;多语言编程成为常态。 传统应用软件为本地应用&#xff0c;业务复杂&#xff0c;软件规模大&#xff0c;编译构建耗时长&#xff0c;而且移动终端APP业务变化快&#xff0c;交付要求短平快。 因此一个支持多语言…

环型链表oj

文章目录 题目描述解决方法 题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中…

java 阿里云直播配置及推拉流地址获取

一、开通阿里云直播 首先进入阿里云直播产品主页&#xff1a;https://www.aliyun.com/product/live 。 点击下方的“立即开通”。 如果是还未注册的用户请按照页面提示进行完成注册并实名认证。 2、首次进入会提示开通服务&#xff0c;点击“开通服务”&#xff0c;然后选择计…

[C++] 万字 - C++异常处理分析介绍: 异常概念、异常抛出与捕获匹配原则、重新抛出、异常安全、异常体系...

C语言 错误处理方式 在C语言中, 代码发生错误一般会有两种处理方式: 终止程序. 比如 直接使用assert()断言. 或者直接崩溃 返回、设置错误码 C语言某些函数执行失败, 但是结果不足以导致致命问题时, 就会将错误码设置在errno中. 用户可以通过strerr(errno)来获取错误信息. …

Linux的管道符详解

&#xff08;该图由AI绘制 关注我 学习AI画图&#xff09; 目录 管道&#xff08;重点&#xff09; 1、管道符 2、过滤&#xff08;筛选&#xff09;功能 3、特殊功能&#xff08;了解&#xff09; 4、统计功能&#xff08;重点&#xff09; 5、xargs命令扩展 管道&…