MYSQL数据库语法补充

news2025/4/14 6:24:55

一,DQL基础查询

DQL(Data Query Language)数据查询语言,可以单表查询,也可以多表查询

语法:

        select 查询结果 from 表名 where 条件;

特点:

        查询结果可以是:表中的字段,函数

        查询的结果是一个虚拟的表格

1,查询结果处理:

查询特定列: select column1,column2 from table

全部列查询: select * from table

处理函数: select 函数 from table

函数分类:

        单行函数:如concat,length,ifnull等,会对查询的每行进行处理

        分组函数:做统计使用,又称为统计函数、分组函数,会将多行处理成一行

单行函数:

(1)字符函数:

1.length()获取参数值的字节个数(一个中文字符占3个字节,英文字符一个字母占一个字节)

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

SELECT NAME,LENGTH(NAME),CHAR_LENGTH(NAME) FROM student
-- 这里查询了学生表中的姓名,姓名的字节长度,姓名的字符长度

3.concat(str1,str2,...)拼接字符串

SELECT CONCAT(num,':',NAME) FROM student -- 这里指给学号列添加了:以及姓名列

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

SELECT UPPER(NAME),LOWER(NAME) FROM student
-- UPPER(NAME)转大写,LOWER(NAME)转小写,仅仅转换英文字母大小写

5.substring(column,position,length)截取字符串 位置从1开始

-- substring(列,开始的位置,截取长度) 注意开始的位置是从1开始,返回的是被截取的字符
SELECT SUBSTRING(NAME,1,1) FROM student

6.trim(column)去掉字符串前后的空格或子串,trim(指定子串 from column)

-- trim(列) 默认是取出前后的空格
SELECT NAME,TRIM(NAME) FROM student
 
-- trim('*' FROM NAME) 去掉前后指定的字符串
SELECT NAME,TRIM('*' FROM NAME) FROM student


7.replace(column,old,new)替换,替换所有的子串

-- replace(列,old,new)将列中的数据将旧的字符改为新的字符
SELECT REPLACE(NAME,'j','J') FROM student

(2)逻辑处理

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

-- case when 条件 then 条件成立执行 else 条件不成立 end; 可以有多个when,且必须完成否则代码报错,else后直接跟结果
select num,name,
       (case when height>=1.70 then '高个子' else '非高个子' end)as height
       from student
-- 这里是查询学号,姓名,以及当身高大于等于1.70时 返回高个子否则返回非高个子并作为列,应用于每一行
select num,name,
        (case 
              when height>=1.70 then '高个子'
              when height>=1.60 then '正常' 
              else '低个子' 
              end)as height
         from student

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

-- ifnull(列,'默认值')检测指定列的值是否为空,如果为空显示默认值
select num,name,ifnull(birthday,'暂未录入信息')as birthday from student-- 检测birthday列的值是否为空,如果为空则显示传入的字符串
-- 查询学生表的学号,姓名,以及查询某个列是否为空,如果不为空显示表中的信息,如果不为空显示'暂未录入信息'

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

-- if(条件,结果1,结果2)
select num,name,if(height>=1.70,'高个子','非高个子')as height from student
-- 这里指查询学号,姓名

(3)数学函数

round(数值):四舍五入

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

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

truncate(数值,保留小数位的位数):截断,小数点后截断到几位,不会进行四舍五入

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

(4)日期函数

now():返回当前系统时间(年月日时分秒)

curdate():返回当前系统日期(年月日)

date_format(日期列,格式):将日期转换为指定格式

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

日期格式:

select num,name,now(),curdate() from student
-- 查询学生表的学号,姓名,当前系统日期(年月时分秒),当前的系统时间(年月日)
select num,name,date_format(birthday,'%Y')as birthday from student-- 将生日格式化
select num,name from student where date_format(birthday,'%Y') = '2008'-- 查询生日为2008年的某行数据
select num,name from student where date_format(birthday,'%Y-%m-%d') = '2008-09-08'-- 先将生日格式化,通过where 条件查询birthday为'2008-09-08的学号与姓名'
select num,name,datediff(curdate(),birthday)as borndays from student-- 查询今天与生日相差多少天

分组函数

功能:用作统计使用,又称为聚合函数或统计函数

sum(列):求和  返回给定列的合计

-- 查询了学生表的最高身高且为单行单列
select sum(height) from student

avg(列):平均值  返回给定列的平均值

select avg(height) from student -- 查询学生表的身高平均值

max(列):最大值  返回该列中的最大值

min(列):最小值  返回该列中的最小值

select max(height)as maxheight ,min(height)as minheight from student

count(列):计数  统计此列中的个数,如果列值为null,则不统计,一般使用*或主键

-- count(列) 统计该列总数 值如果为null,不计算
select count(birthday) from student
 
-- 如果统计所有的数据,一般用主键列或*
select count(id) from student
select count(*) from student

注:

单独使用分组函数时没有问题

SELECT MAX(height) FROM student

如果使用分组函数的同时,还需要查询其他列名,则会报错,需要结合group by语句

SELECT no,name,MAX(height) FROM student

(1)条件查询

使用where 子句,将不满足条件的行进行过滤,where子句紧随from子句
语法:select<查询结果>from<表名>where<条件>
在where子句中使用的符号以及逻辑运算符:
比较: =,!=,>,<,>=,<=   between and 两者之间,包含临界值;
逻辑运算:and 与
                or   或
               not  非

-- select 查询结果 from 表 where 条件 [排序,数量限制,分组 分组后条件筛选]
select * from student where gender ='男'
 
-- and 并且 与
select * from student where gender = '男' and height>=1.80 -- 有多个条件可以继续添加
-- or 或
select * from student where gender = '男' or height>=1.80
 
select * from student where height>=1.70 and height<=1.80
select * from student where height>1.70 and height<1.80
 
-- 在两个值之间,包含边界值
select * from student where height between 1.70 and 1.80

模糊查询

LIKE:是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值或数值型.

通配符: 匹配% 任意多个字符

in 判断某字段的值是否属于in列表中的某一项

not in判断某字段的值是否不属于in列表中的某一项

IS NULL(为空的)

IS NOT NULL(不为空的)

(2)查询时的合并

1,UNION的语法如下

SQL语句1

UNION

SQL语句2

2,UNION ALL的语法如下

SQL语句1

UNION ALL

SQL语句2

当使用union 时,mysql 会把结果集中重复的记录删掉,而使用union all ,mysql 会把所有的记录返回,且效率高于union 。

-- UNION 合并时,可以去除多条语句查询出的重复数据
select num,name,gender  from student where gender = '男'
union
select num,name,gender  from student where gender = '女'
 
-- union all 只是简单的合并没有去重
select num,name,gender from student
union all
select num,name,gender from student where gender='女'

排序

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

-- 排序 order by 列名 asc (升序)/desc(降序)
select * from student where num>1 order by height asc
-- 先数据来源,在走条件,再走查询结果
select * from student order by height asc
select * from student order by regtime desc-- 注册日期降序
select * from student order by height desc,regtime asc -- 多个字段进行排序,相同位置再根据第二个排顺序,当身高相同时再根据regtime 升序进行排序


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

-- 数量限制 limit (开始的位置,每次查询的数量) 开始的位置从零开始
select * from student where num>1 order by id asc limit 0,2
select * from student order by id asc limit 2,2
select * from student limit 4,2 -- 放在sql语句最末尾位置


mysql分页公式 :limit (n-1)*每页大小,每页大小 
根据第几页选择,其中n是第几页

分组查询

语法:

select 分组函数,列(字段) from 表 group by 分组的列 [having 分组后的筛选条件]

可以同时对两列进行分组

having是对查询后的结果进行处理

-- 用哪个列作为分组条件,会把该列相同的数据分到同一组处理
select gender,count(*) from student where num>1 group by gender

注:查询时语法运行顺序

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

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

相关文章

在Windows搭建gRPC C++开发环境

一、环境构建 1. CMake Download CMake 2. Git Git for Windows 3. gRPC源码 git clone -b v1.48.0 https://github.com/grpc/grpc 进入源码目录 cd grpc 下载依赖库 git submodule update --init 二、使用CMake生成工程文件 三、使用vs2019编译grpc库文件 四、使用…

[Python] 企业内部应用接入钉钉登录,端内免登录+浏览器授权登录

[Python] 为企业网站应用接入钉钉鉴权&#xff0c;实现钉钉客户端内自动免登授权&#xff0c;浏览器中手动钉钉授权登录两种逻辑。 操作步骤 企业内部获得 开发者权限&#xff0c;没有的话先申请。 访问 钉钉开放平台-应用开发 创建一个 企业内部应用-钉钉应用。 打开应用…

用AbortController取消事件绑定

视频教程 React - &#x1f914; Abort Controller 到底是什么神仙玩意&#xff1f;看完这个视频你就明白了&#xff01;&#x1f4a1;_哔哩哔哩_bilibili AbortController的好处之一是事件绑定的函数已无需具名函数,匿名函数也可以被取消事件绑定了 //该代码2秒后点击失效…

this指针 和 类的继承

一、this指针 Human类的属性fishc与Human&#xff08;&#xff09;构造器的参数fishc同名&#xff0c;但却是两个东西。使用this指针让构造器知道哪个是参数&#xff0c;哪个是属性。 this指针&#xff1a;指向当前的类生成的对象 this -> fishc fishc当前对象&#xff08;…

无锡无人机驾驶证培训费用

无锡无人机驾驶证培训费用&#xff0c;随着科技的迅速发展&#xff0c;无人机在众多行业中发挥着举足轻重的作用。从影视制作到农业监测&#xff0c;再到物流运输与城市规划&#xff0c;无人机的应用场景不断扩展&#xff0c;因此越来越多的人开始意识到学习无人机驾驶技能的重…

我们如何思考AI创业投资

&#x1f3ac; Verdure陌矣&#xff1a;个人主页 &#x1f389; 个人专栏: 《C/C》 | 《转载or娱乐》 &#x1f33e; 种完麦子往南走&#xff0c; 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ 声明&#xff1a;本文作者转载&#xff0c;原文出自…

LabVIEW 中数字转字符串常用汇总

在 LabVIEW 编程环境里&#xff0c;数字与字符串之间的转换是一项极为基础且重要的操作&#xff0c;广泛应用于数据处理、显示、存储以及设备通信等多个方面。熟练掌握数字转字符串的方法和技巧&#xff0c;对编写高效、稳定的程序起着关键作用。接下来&#xff0c;我们将全面深…

蓝桥杯 C/C++ 组历届真题合集速刷(二)

一、0ASC - 蓝桥云课 &#xff08;单位换算&#xff09;算法代码&#xff1a; #include <iostream> using namespace std; int main() {printf("%d",L);return 0; } 二、0时间显示 - 蓝桥云课 &#xff08;单位换算&#xff09;算法代码&#xff1a; #inclu…

【接口自动化_数据格式与类型】

在HTTP接口的自动化测试中&#xff0c;请求的数据格式和内容类型是两个密切相关但又有所区别的概念。以下是它们的分类和详细说明&#xff1a; 一、数据格式 数据格式是指请求体&#xff08;Body&#xff09;中数据的组织方式&#xff0c;常见的数据格式有以下几种&#xff1…

网络带宽测速工具选择指南iperf3 nttcp tcpburn jperf使用详解

简介 本文主要介绍内网&#xff08;局域网&#xff09;与外网&#xff08;互联网&#xff09;的网络带宽测速工具下载地址、选择指南、参数对比、基本使用。 测速工具快速选择指南 测速工具下载地址 iperf 官网下载链接&#xff1a;iperf.fr/iperf-download.php该链接提供了不…

源代码保密解决方案

背景分析 随着各行各业业务数据信息化发展&#xff0c;各类产品研发及设计等行业&#xff0c;都有关乎自身发展的核心数据&#xff0c;包括业务数据、源代码保密数据、机密文档、用户数据等敏感信息&#xff0c;这些信息数据有以下共性&#xff1a; — 属于核心机密资料&…

PyCharm使用Flask启动项目后,如何修改文件,开启启动加载或是热启动,不用重启项目,直接生效。

PyCharm使用Flask启动项目后&#xff0c;每次修改完文件比如html、py文件都要重启项目才生效&#xff0c;在测试时很不方便&#xff0c;如何设置热启动&#xff0c;修改完文件后直接生效了&#xff1f; 解决方法 1、app.py文件&#xff0c;设置debugTrue。开启调试模式。 开…

SpringCloud微服务(一)Eureka+Nacos

一、认识 微服务技术对比&#xff1a; SpringCloud&#xff1a; 版本匹配&#xff1a; 二、服务拆分以及远程调用 消费者与提供者&#xff1a; Eureka&#xff1a; 搭建EurekaServer&#xff1a; Ribbon负载均衡&#xff1a; 实现原理&#xff1a; IRule&#xff1a;规则接口…

深度学习天崩开局

李沐大神的d2l包导入&#xff0c; 这玩意需要python311版本&#xff0c;我现在版本已经313了&#xff0c;作为一个天生要强的男人&#xff0c;我是坚决不向低版本低头的。 然后我就研究啊&#xff0c;各种翻资料啊&#xff0c;然后deepseek加豆包都翻烂了&#xff0c; 最终所…

【详细图文】在VScode中配置python开发环境

目录 一、下载安装VSCode 1、官网下载VSCode 2、安装VSCode 3、汉化vscode &#xff08;1&#xff09;已自动下载汉化版插件 &#xff08;2&#xff09;未自动下载汉化版插件 二、 下载安装Python 1、官网下载Python 2、安装Python &#xff08;1&#xff09;双击打开…

VR体验馆如何用小程序高效引流?3步打造线上预约+团购裂变系统

VR体验馆如何用小程序高效引流&#xff1f;3步打造线上预约团购裂变系统 一、线上预约的核心价值&#xff1a;优化体验&#xff0c;提升转化​​ ​​减少客户等待时间​​ 通过小程序预约功能&#xff0c;客户可提前选择体验时段&#xff0c;避免到店排队。数据显示&#…

使用 node.js 和 MongoDB 编写一个简单的增删改接口 demo

文章目录 前言一、环境准备二、项目结构三、环境变量四、连接数据库3.1. connect.js 文件 五、定义数据模型5.1. BannerModel.js 文件 六、实现 server 接口6.1. server.js 文件 七、服务文件7.1. app.js 文件 八、感谢 前言 Mongoose 是一个在 Node.js 环境中操作 MongoDB 数据…

【Redis】——最佳实践

目录 一.键值设计 1.如何优雅的设计key结构 2.拒绝BigKey 3.选择合适的数据结构 4.总结 二.批处理优化&#xff08;海量数据批处理&#xff09; 1.Pipeline 2.集群模式下的批处理 三.服务端优化 1.持久化配置 2.慢查询问题 1.记录慢查询 2.找到慢查询 3.集群最佳…

深度学习 Deep Learning 第20章 深度生成模型

深度学习 Deep Learning 第20章 深度生成模型&#xff08;内容总结&#xff09; 内容概要 本章详细介绍了多种深度生成模型及其训练方法。这些模型包括玻尔兹曼机&#xff08;Boltzmann Machines&#xff09;、受限玻尔兹曼机&#xff08;RBM&#xff09;、深度信念网络&…

我提了一个 Androidx IssueTracker

问题 在运行 gradle plugin 插件的 transform R8 阶段出现了报错 Caused by: com.android.tools.r8.internal.xk: java.lang.NullPointerException: Cannot invoke “String.length()” because “” is null 报错日志 FAILURE: Build failed with an exception.* What went w…