MYSQL数据库语法补充

一,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 heightfrom student
-- 这里是查询学号,姓名,以及当身高大于等于1.70时 返回高个子否则返回非高个子并作为列,应用于每一行
select num,name,(case when height>=1.70 then '高个子'when height>=1.60 then '正常' else '低个子' end)as heightfrom 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.80select * 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.mzph.cn/pingmian/76011.shtml

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

相关文章

Redis到底能不能做主数据库?

张三拍案而起&#xff1a;“Redis 是缓存数据库&#xff0c;怎么能当主数据库用&#xff1f;简直是天方夜谭&#xff01;” 李四冷笑回应&#xff1a;“你没用过&#xff0c;凭什么说不行&#xff1f;我已经用 Redis 做主数据库好几年了&#xff0c;系统稳定得像铁板一块&…

flutter 项目结构目录以及pubspec.ymal等文件描述

在Flutter项目中&#xff0c;目录结构和pubspec.yaml文件是非常重要的组成部分&#xff0c;它们定义了项目的结构、依赖管理以及如何构建和运行项目。下面我将详细解释这些关键元素&#xff1a; 1. Flutter项目目录结构 Flutter项目的标准目录结构通常如下所示&#xff1a; …

CentOS 环境下 MySQL 数据库全部备份的操作指南

最近阿里云个人服务到期&#xff0c;因为是很久之前买的测试机器&#xff0c;配置较低&#xff0c;上面运行的有技术博客 和以往的测试项目&#xff0c;所以准备放弃掉。 需要备份下上面的表结构和数据、以及代码仓库。 下面是一个完整的 CentOS 环境下 MySQL 数据库全部备份…

ecplise 工具 没有Java EE Tools 选项

Java EE Tools 是将项目转换为web项目的重要的快捷键&#xff0c;如果进行web开发 那是不可或缺的 该工具是一个插件&#xff0c;可以作为插件安装到ecplise上 安装步骤如下&#xff1a; 找到help-->install new software 在弹出的页面中 work with中输入&#xff1a;Jun…

544 eff.c 1761 优化设计文档

1:性能分析 1.1性能对比 oneapi 与hygonGcc性能对比发现&#xff0c;544课题中的eff.c 1761循环处&#xff0c;oneapi 进行了循环向量化, gcc使用标量&#xff0c;循环源码前加 #pragma clang loop vectorize(disable) 找出oneapi在该循环处关闭和开启loop vect 的性能差距&a…

LeetCode.3396.使数组元素互不相同所需的最少操作次数

3396. 使数组元素互不相同所需的最少操作次数 给你一个整数数组 nums&#xff0c;你需要确保数组中的元素 互不相同 。为此&#xff0c;你可以执行以下操作任意次&#xff1a; 从数组的开头移除 3 个元素。如果数组中元素少于 3 个&#xff0c;则移除所有剩余元素。 注意&…

【已完结STM32】--自学江协科技笔记汇总

以下学习笔记代码均来自b站江协科技视频 笔记汇总完结 文章笔记对应江科大视频新建工程【2-2】新建工程江科大STM32-GPIO输出 点亮LED&#xff0c;LED闪烁&#xff0c;LED流水灯&#xff0c;蜂鸣器&#xff08;学习笔记&#xff09;_unit32-t rcc-apb2periph-CSDN博客 【3-1】…

QML Loader:加载组件与状态监控

目录 引言相关阅读工程结构示例一&#xff1a;从文件加载组件 (LoaderFile.qml)代码实现被加载的组件&#xff1a;MyComponent.qml代码解析运行效果 示例二&#xff1a;直接加载Component对象 (LoaderComponent.qml)代码实现代码解析运行效果 示例三&#xff1a;监控加载状态 (…

K8S核心技术点

Pod&#xff0c;Service和Deployment的关系 Pod&#xff1a;Kubernetes 中最小的部署单元&#xff0c;用于运行容器化应用。 Service&#xff1a;提供服务发现和负载均衡&#xff0c;为 Pod 提供稳定的网络端点&#xff0c;ClusterIP&#xff0c;NodePort&#xff0c;LoadBala…

Spring 核心注解深度解析:@Autowired、@Repository 与它们的协作关系

引言 在 Spring 框架中&#xff0c;​依赖注入&#xff08;DI&#xff09;​​ 是实现松耦合架构的核心机制。Autowired 和 Repository 作为两个高频使用的注解&#xff0c;分别承担着 ​依赖装配​ 和 ​数据访问层标识​ 的关键职责。本文将深入探讨它们的功能特性、协作模式…

[Linux]从零开始的ARM Linux交叉编译与.so文件链接教程

一、前言 最近在项目需要将C版本的opencv集成到原本的代码中从而进行一些简单的图像处理。但是在这其中遇到了一些问题&#xff0c;首先就是原本的opencv我们需要在x86的架构上进行编译然后将其集成到我们的项目中&#xff0c;这里我们到底应该将opencv编译为x86架构的还是编译…

svelte+vite+ts+melt-ui从0到1完整框架搭建

框架太“重”了&#xff1a;通常一个小型项目只由少数几个简单页面构成&#xff0c;如果使用 Vue 或者 React 这些框架来研发的话&#xff0c;有点“大材小用”了。构建的产物中包含了不少框架运行时代码(虚拟 DOM、响应式、状态管理等)&#xff0c;这些代码对于小型项目而言是…

无法看到新安装的 JDK 17

在 Linux 系统中使用 update-alternatives --config java 无法看到新安装的 JDK 17&#xff0c;可能是由于 JDK 未正确注册到系统备选列表中。 一、原因分析 JDK 未注册到 update-alternatives update-alternatives 工具需要手动注册 JDK 路径后才能识别新版本。如果仅安装 JDK…

鼎讯信通 便携式雷达信号干扰模拟器:打造实战化电磁环境的新利器

在现代战争中&#xff0c;电磁环境的复杂性直接影响着雷达装备的性能和作战效果。面对敌方日益精进的电子战手段&#xff0c;如何提升雷达设备的抗干扰能力&#xff0c;确保其在实战环境中的稳定性和可靠性&#xff0c;已成为各国军队和科研机构的重要课题。 为此&#xff0c;…

【AI提示词】决策专家

提示说明 决策专家可以帮助你进行科学决策&#xff0c;尽可能避免错误&#xff0c;提升决策成功的概率。 提示词 # Role : 决策专家决策&#xff0c;是面对不容易判断优劣的几个选项&#xff0c;做出正确的选择。说白了&#xff0c;决策就是拿个主意。决策专家是基于科学决策…

力扣Hot100题,刷题

力扣HOT100 - 1. 两数之和 解题思路&#xff1a; 解法一&#xff1a;暴力 class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for (int i 0; i < n; i)for (int j i 1; j < n; j) {if (target nums[i] nums[j])return new int[]…

uni-app ucharts自定义换行tooltips

实现效果&#xff1a; 第一步&#xff1a;在uni_modules文件夹下找到config-ucharts.js和u-charts.js文件 第二步&#xff1a;在config-ucharts.js文件中配置换行格式 // 换行格式"wrapTooltip":function(item, category, index, opts){return item.name&#xff1a;…

国标GB28181视频平台EasyCVR顺应智慧农业自动化趋势,打造大棚实时视频监控防线

一、方案背景 近年来&#xff0c;温室大棚种植技术凭借其显著的优势&#xff0c;在提升农作物产量和质量、丰富农产品供应方面发挥了重要的作用&#xff0c;极大改善了人们的生活水平&#xff0c;得到了广泛的推广和应用。大棚内的温度、湿度、光照度和二氧化碳浓度等环境因素…

InternVideo2.5:Empowering Video MLLMs with Long and Rich Context Modeling

一、TL&#xff1b;DR InternVideo2.5通过LRC建模来提升MLLM的性能。层次化token压缩和任务偏好优化&#xff08;mask时空 head&#xff09;整合到一个框架中&#xff0c;并通过自适应层次化token压缩来开发紧凑的时空表征MVBench/Perception Test/EgoSchema/MLVU数据benchmar…

【时时三省】(C语言基础)条件运算符和条件表达式

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 有一种if语句&#xff0c;当被判别的表达式的值为“真”或“假”时&#xff0c;都执行一个赋值语句且向一个变量赋值。 如&#xff1a; if ( a > b ) max a&#xff1b; else max …