Mysql查询

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

SELECTid,NAME,(CASEWHEN weight < 100THEN '太轻了'WHEN weight >= 100AND weight < 150THEN '正常'ELSE '超重'END)
FROMnbaplayer

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

SELECTid,NAME,IFNULL (weizhi, '位置还没有录入')
FROMnbaplayer

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

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

(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.hqwc.cn/news/23095.html

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

相关文章

奇葩功能实现:级联选择框组件el-cascader实现同一级的二级只能单选,但是一级可以多选

前言&#xff1a; 其实也不能说这个功能奇葩&#xff0c;做项目碰到这种需求也算合理正常&#xff0c;只是确实没有能直接实现这一需求的现成组件。 el-cascader作为级联选择组件&#xff0c;并不能同时支持一级多选&#xff0c;二级单选的功能&#xff0c;只能要么是单选或者…

SpringBoot 配置文件:什么是配置文件?配置文件是干什么?

文章目录 &#x1f387;前言1.配置文件的格式2. properties配置文件说明2.1 properties基本语法2.2 读取配置文件 3. yml 配置文件说明3.1 yml 基本语法 4.properties与yml 对比 &#x1f387;前言 学习一个东西&#xff0c;我们先要知道它有什么用处。整个项目中所有重要的数…

java单元测试(调试)

文章目录 测试分类JUnit单元测试介绍引入本地JUnit.jar编写和运行Test单元测试方法设置执行JUnit用例时支持控制台输入10.6.6 定义test测试方法模板 测试分类 **黑盒测试&#xff1a;**不需要写代码&#xff0c;给输入值&#xff0c;看程序是否能够输出期望的值。 **白盒测试…

【解决】Android Studio打包出现not found for signing config ‘externalOverride‘

问题出现场景 之前我的这个项目在另一台电脑上开发&#xff0c;现在迁移到这台计算机上&#xff0c;出现了key报错的问题&#xff0c;网络上有些说需要在XML中进行配置signature相关的内容&#xff0c;这个感觉比较复杂&#xff0c;本文主要介绍一个简单的解决方法&#xff0c;…

VectorCAST单元测试参数配置

一、打开 VectorCAST 通常情况下&#xff0c;技术人员会配置一个脚本文件&#xff08;.bat、.cmd&#xff09;&#xff0c;用户可以通过这个脚本文件来启动 VectorCAST。使用脚本文件启动 VectorCAST&#xff0c;可以在启动时设置好编译器相关的环境变量&#xff0c;方便 Vecto…

el-ment ui 表格组件table实现列的动态插入功能

在实际需求中我们经常遇到各种奇葩的需求&#xff0c;不足为奇。每个项目的需求各不相同&#xff0c;实现功能的思路大致是一样的。 本文来具体介绍怎么实现table表格动态插入几列。 首先实现思路有2种&#xff0c; 1. 插入的位置如果是已知的&#xff0c;我知道在哪个标题的…

redis -速成

目录 &#xff08;一&#xff09;认识 Redis 1.1数据库分类 1.2 什么是Redis 1.2.1 redis简介 1.2.2 谁在用Redis 1.2.3 怎么学redis 1.2.4 Redis的安装 2 数据类型 2.1 概况 2.2 String类型 2.2.1 常用的命令 2.2.2 非常用命令 2.2.3 举例 2.2.4应用场景&#xf…

ELk日志平台搭建

ELk日志平台搭建 一、ELK概述 1.ELK简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。2.组件 ●ElasticSearch&#xff1a;是基于Lucene…

qt和vue的交互

1、首先在vue项目中引入qwebchannel /******************************************************************************** Copyright (C) 2016 The Qt Company Ltd.** Copyright (C) 2016 Klarlvdalens Datakonsult AB, a KDAB Group company, infokdab.com, author Milian …

LangChain + ChatGLM2-6B 搭建个人专属知识库

之前教过大家利用 langchain ChatGLM-6B 实现个人专属知识库&#xff0c;非常简单易上手。最近&#xff0c;智谱 AI 研发团队又推出了 ChatGLM 系列的新模型 ChatGLM2-6B&#xff0c;是开源中英双语对话模型 ChatGLM-6B 的第二代版本&#xff0c;性能更强悍。 树先生之所以现…

能“出汗”,会“呼吸”的户外行走机器人

美国亚利桑那州立大学(ASU)科学家研制出了世界上第一个能像人类一样出汗、颤抖和呼吸的户外行走机器人模型。这个机器人名叫ANDI&#xff0c;是一个能模仿人类出汗的热敏“热模型”。 ANDI 身上不仅有可以使它行走的关节&#xff0c;还有其他机器人身上都没有的东西——它浑身…

编译libtiff库给IOS平台用

打开libtiff官方网 : libtiff / libtiff GitLab 克隆: git clone --recursive https://gitlab.com/libtiff/libtiff.git 克隆成功并打开libtiff目录,发现有autogen.sh 与CMakeLists.txt所以可生成Configure程序来配置并编译,也可直接使用CMake-GUI来配置编译,选择其中一种 …