当前位置: 首页 > news >正文

数据库的筛选条件

【一】筛选过滤条件

【1】完整的查询语句

-- 查询当前表中的全部数据select * from 表名 where 筛选条件;​-- 查询当前表中的指定字段的数据select 字段名,字段名 from 表名 where 筛选条件;# 执行顺序from
where
select
​select 你选择的列1, 你选择的列2, ...
from 查询的表名
where 筛选条件;

例如:

  • 等于:=(例如:age = 25

  • 不等于:<>!=(例如:age <> 25

  • 大于:>(例如:salary > 5000

  • 小于:<(例如:rating < 4.5

  • 大于等于:>=(例如:quantity >= 10

  • 小于等于:<=(例如:price <= 100

  • 模糊匹配:LIKE(例如:name LIKE 'J%'

  • 范围:BETWEEN(例如:age BETWEEN 18 AND 30

  • 列表:IN(例如:department IN ('IT', 'Finance')

具体示例:

select * from employeewhere employee_id = '2';

image-20240125193149346

【2】数据准备

( 1 )创建数据库

create database Student;

( 2 )切换到Student数据库

use Student;

image-20240125194108716

( 3 ) 创建school表

create table school (id int primary key auto_increment comment'id 信息',course varchar(255),lecturer varchar(255),address varchar(255)
);

( 4 )再插入我们需要的数据

insert into school (id, course, lecturer, address) values(1, 'go', 'xiao', '301'),(2, 'java', 'mao', '302'),(3, 'paython', 'jing', '303'),(4, 'seo', 'yi', '304'),(5, 'API接口', 'bao', '305'),(6, 'Vue', 'peng', '306'),(7, 'CSS', 'ban', '307'),(8, 'Web', 'tian', '308'),(9, 'MySQL', 'yun', '309');

( 5 ) 查询信息

select * from school;

image-20240125194836222

select * from school\G;# MySQL 将以垂直格式显示查询结果

image-20240125194948244

【3】查询联系

  • 查询 id 在 1 ~ 5 之间的数据

-- 原始模版select * from * where *;
​
-- 最麻烦的写法select * from school where id>=1 and id <=5;
​
-- 在SQL语句中没有 select * from school where 1<= id <=5;
​
-- 优化后的写法select * from school where id between 1 and 5;

image-20240125201114725

or

select * from * where *;
​
-- 最原始的写法 三个 orselect * from school where course='go' or course='java' or course='API接口';
​
-- 简单写法,成员运算select * from school where course in ('go','paython','seo');

image-20240125201441810

  • 查询 课程名称中包含字母a的课程

select * from * where *;
​# % 匹配多个字符
# _ 匹配一个字符select * from school where course like "%a%";select * from school where course like "_a%";

image-20240125201632215

image-20240125201712554

  • 查询课程,跟老师姓名是由六个字符组成

select lecturer,course from school where char_length(lecturer) = 4;

image-20240125201943539

【二】分组条件

【1】分组条件group by

  • 每个,平均、最高、最低

【2】语法

select * from 表名 group by 分组条件;select 列名1, count(*), sum(列名2), avg(列名3)from table_namegroup by 列名1;# 查询所有列select group_concat(course) from 表名 group by 列名;
​# 拼接select group_concat(course : teachar_name) from 表名 group by 列名;group_concat 必须分组之后才能使用
concat 不分组也能使用

【3】准备工作

create table scores (student_id int,course varchar(255),score int
);
​insert into scores (student_id, course, score) values
(1, '数学', 80),
(1, '英语', 90),
(1, '物理', 70),
(2, '数学', 85),
(2, '英语', 92),
(2, '物理', 75),
(3, '数学', 90),
(3, '英语', 85),
(3, '物理', 80),
(4, '数学', 87),
(4, '英语', 88),
(4, '物理', 79);

case 这个就是如果的意思

SET就是更新表中数据的关键字。它用于指定要修改的列和新的值。

通常,SET 关键字与 UPDATE 语句一起使用,用于更新表中的记录。以下是使用 SET 的一般语法:

update 表名
set 列名1 = 新值1, 列名2 = 新值2, ...
where 条件;

示例:

假设我们有一个名为 scores 的表,其中包含学生的成绩信息。要更新学生ID为1的学生的成绩,将数学成绩修改为90分

update scoresset math_score = 90where student_id = 1;
select student_name,casewhen score >= 90 then '优秀'when score >= 80 then '良好'when score >= 70 then '中等'else '不及格'end as grade
from scores;

我这里可以插入一列老师名字信息

alter table scores
add column teacher_name varchar(255);

image-20240125220845793

update scores
set teacher_name = 
case student_idwhen 1  then '痴梦老师'when 2  then '赵老师'when 3  then '刘老师'when 4  then '张老师'
end;

image-20240125202624849

image-20240125202644197

  • 使用分组条件group by来计算每门课程的平均、最高和最低分数。

select course, avg(score) as avg_score, max(score) as max_score, min(score) as min_score 
from scores group by course;

image-20240125203423192

【4】分组注意事项

(1)where和group by可以同时使用,但是要注意顺序

select * from * where *;
select * from * group by *;
​
-- 同时出现要有先后顺序 
-- where 先对整体过滤 group by 再对局部过滤
select * from * where * group by *;

(2)where不能使用聚合函数

  • 先筛选出课程是英语的信息

-- 方法一
select student_id,course,score from scores where course = '英语' or course = '物理';
  • 先筛选出课程是英语跟语文的信息

-- 方法二
select * from scores
where course in ('英语', '物理');

  • 再对大于85分以上跟小于85分进行分组

select casewhen score > 85 then '大于85分'when score <= 85 then '小于等于85分'end as score_group,count(*) as count
from scores
group by score_group;
  • 成绩大于75分的学生

select student_id, avg(score)
from scores
where score > 75
group by student_id;
  • select student_id, avg(score):选择学生ID和成绩平均值,这里使用avg()聚合函数来计算每个学生的成绩平均值。

  • from scores:指定要查询的表为scores

  • where score > 75:指定筛选条件为分数大于75分。

  • group by student_id:按照学生ID进行分组。

image-20240125205532771

image-20240125211128852

【三】having(分组之后筛选)

【1】注意事项

  • having的语法和where是一致的

  • 只不过having是在分组之后进行的过滤操作

  • 即having是可以直接使用聚合函数的

select * from * where * group by * having *;

【2】练习

  • scores的表中选取所有分数大于85分的学生,然后按照学生ID进行分组,并计算每个学生的分数大于85分的成绩的平均值。

select student_id,avg(score) from scoreswhere score > 85group by student_idhaving avg(score)>=90;
​
  • SELECT student_id, AVG(score):选择学生ID和成绩平均值,这里使用AVG()聚合函数来计算每个学生的成绩平均值。

  • FROM scores:指定要查询的表为scores

  • WHERE score > 85:指定筛选条件为分数大于85分。

  • GROUP BY student_id:按照学生ID进行分组。

  • HAVING AVG(score):指定筛选条件为成绩平均值大于等于90,

image-20240125221426911

【四】筛选条件之distinct(去重)

【1】注意事项

  • 必须是完全一样的数据才可以去重

  • 一定要注意主键的问题

  • 在主键存在的情况下是一定不可能去重的

【2】练习

select distinct student_id,course from scores;

image-20240125221704868

select distinct course from scores;

image-20240125221829863

【五】筛选条件之(order by)排序

  • asc 默认省略不写 ----> 修改降序

  • order by 列名 desc; : 降序

  • order by 列名: 默认是升序

【1】将scores表中的数据按照分数排序(升序)

select * from scores order by score;

image-20240126153942758

【2】将scores表中的数据按照分数排序(降序)

select * from scores order by score desc;

image-20240126154133521

【3】将scores表中的数据按照分数排序(降序),年龄升序排序。

  • 先在表中插入新的老师年龄数据

alter table 表名 add 列名 数据类型;
alter table scores
add column age varchar(255);更新原始数据表scores中的数据update scores
set age = 
case teacher_namewhen '痴梦老师'  then 36when '赵老师'  then 39when '刘老师'  then 45when '张老师'  then 26
end;

image-20240126155602750

  • 将scores表中的数据按照分数排序(降序),年龄升序排序

select * from scores order by score desc,age asc;

image-20240126155909454

scores 表中选取两个列:student_idscore。对于每一个不同的 student_id,计算该学生的所有成绩(score)的平均值,并将其命名为 average_score

select student_id, avg(score) as average_scorefrom scoreswhere age > 38group by student_idorder by average_score desc;

image-20240126160730317

【六】筛选条件之(limit)限制条数

  • 针对数据太多的情况,我们大都是做分页处理

  • limit x,y : 第一个参数是起始位置, 第二个是条数

select * from * [where*] limit *;

【2】查看scores表中5条数据

select * from scores limit 5;

image-20240126160925727

【3】按照区间取数据

select * from * [where *] limit x,yselect * from 表名 limit 0,6;start_page = 0 # 起始位置step = 6 # 步长while True:sql = f"select * from emp limit {start_page},{step}"start_page += step
select * from scores limit 0,6;

image-20240126161122591

【七】正则

【一】正则语法

  • 简单版

 属性名 regexp '匹配方式'
  • 终极版

select * from * where 字段名 regexp 正则表达式;
  • “匹配方式”中有很多的模式匹配字符,它们分别表示不同的意思。

  • 下表列出了 regexp 操作符中常用的匹配方式。

image-20240126161656280

【1】创建表

create table `person`  (`name` varchar(255) character set utf8 collate utf8_general_ci null default null,`age` int(40) null default null,`heigh` int(40) null default null,`sex` varchar(255) character set utf8 collate utf8_general_ci null default null) engine = innodb character set = utf8 collate = utf8_general_ci row_format = dynamic;

【2】插入数据

insert into `person` values ('thomas ', 25, 168, '男');insert into `person` values ('tom ', 20, 172, '男');insert into `person` values ('dany', 29, 175, '男');insert into `person` values ('jane', 27, 171, '男');insert into `person` values ('susan', 24, 173, '女');insert into `person` values ('green', 25, 168, '女');insert into `person` values ('henry', 21, 160, '女');insert into `person` values ('lily', 18, 190, '男');insert into `person` values ('liming', 19, 187, '男');

image-20240126162116753

【3】案例

# 查询 name 字段以j开头的记录select * from person where name regexp '^j';
​
select * from person where name regexp 'y$';
​
select * from person where name regexp 'th*';
​
# sql语句中的正则表达式并不完善,所以功能不全select * from person where name regexp '....';

相关文章:

数据库的筛选条件

【一】筛选过滤条件 【1】完整的查询语句 -- 查询当前表中的全部数据select * from 表名 where 筛选条件;​-- 查询当前表中的指定字段的数据select 字段名,字段名 from 表名 where 筛选条件;# 执行顺序from where select ​select 你选择的列1, 你选择的列2, ... from 查询的…...

MySQL学习笔记(一)数据库事务隔离级别与多版本并发控制(MVCC)

一、数据库事务隔离级别 数据库事务的隔离级别有4种&#xff0c;由低到高分别为Read uncommitted &#xff08;读未提交&#xff09;、Read committed&#xff08;读提交&#xff09; 、Repeatable read&#xff08;可重复读&#xff09; 、Serializable &#xff08;串行化&a…...

如何在Linux上为PyCharm创建和配置Desktop Entry

在Linux操作系统中&#xff0c;.desktop 文件是一种桌面条目文件&#xff0c;用于在图形用户界面中添加程序快捷方式。本文将指导您如何为PyCharm IDE创建和配置一个 .desktop 文件&#xff0c;从而能够通过应用程序菜单或桌面图标快速启动PyCharm。 步骤 1: 确定PyCharm安装路…...

Igraph入门指南 4

二、图的创建 图分有向图和无向图&#xff0c;所以图的创建有各自的实现方式。 1、手工创建图&#xff1a; 1-1 通过文本创建&#xff1a;graph_from_literal 通过每项提供两个顶点名&#xff08;或ID号&#xff09;作为一条边的格式&#xff0c;手动创建图&#xff0c;顶点…...

外包干了30天,技术明显退步。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 这次来聊一个大家可能也比较关心的问题&#xff0c;那就是就业城市选择的问题。而谈到这个问题&a…...

数据库 — 增删查改

一、操作数据库、表 显示 show databases;创建 create database xxx;使用 use xxx; 删除 drop database xxx;查看表&#xff1b; show tables; 查看表结构 desc 表名; 创建 create table 表名(字段1 类型1&#xff0c;字段2 类型2&#xff0c;.... ); 删除 drop table 表名; 二…...

eclipse搭建java web项目

准备条件 eclipsejdk1.8 &#xff08;配置jdk环境&#xff09;apache-tomcat-8.5.97&#xff08;记住安装位置&#xff09; 一 点击完成 开始创建javaweb项目 import java.io.IOException; import java.io.PrintWriter;import javax.servlet.ServletException; import javax.s…...

gitlab-ci_cd语法CICD

工作原理 1、将代码托管在git 2、在项目根目录创建ci文件.gitlan-ci.yml 在文件中指定构建&#xff0c;测试和部署脚本 3、gitlab将检测到他并使用名为git Runner的工具运行脚本 4、脚本被分组为作业&#xff0c;他们共同组成了一个管道gitlab-ci的脚本执行&#xff0c;需要自…...

python 蓝桥杯之动态规划入门

文章目录 DFS滑行&#xff08;DFS 记忆搜索&#xff09; 思路&#xff1a; 要思考回溯怎么写&#xff08;入参与返回值、递归到哪里&#xff0c;递归的边界和入口&#xff09; DFS 滑行&#xff08;DFS 记忆搜索&#xff09; 代码分析&#xff1a; 学会将输入的数据用二维列表…...

[LeetCode][102]二叉树的层序遍历——遍历结果中每一层明显区分

题目 102. 二叉树的层序遍历 给定二叉树的根节点 root&#xff0c;返回节点值的层序遍历结果。即逐层地&#xff0c;从左到右访问所有节点。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 示例 2&#xff1a; 输入…...

GIS之深度学习10:运行Faster RCNN算法

&#xff08;未完成&#xff0c;待补充&#xff09; 获取Faster RCNN源码 &#xff08;开源的很多&#xff0c;论文里也有&#xff0c;在这里不多赘述&#xff09; 替换自己的数据集&#xff08;图片标签文件&#xff09; &#xff08;需要使用labeling生成标签文件&#xf…...

appium2的一些配置

appium-desktop不再维护之后&#xff0c;需要使用appium2。 1、安装appium2 命令行输入npm i -g appium。安装之后输入appium或者appium-server即可启动appium 2、安装安卓/ios的驱动 安卓&#xff1a;appium driver install uiautomator2 iOS&#xff1a;appium driver i…...

基于springboot+vue实现高校学生党员发展管理系统项目【项目源码+论文说明】

基于springboot实现高校学生党员发展管理系统演示 摘要 随着高校学生规模的不断扩大&#xff0c;高校内的党员统计及发展管理工作面临较大的压力&#xff0c;高校信息化建设的不断优化发展也进一步促进了系统平台的应用&#xff0c;借助系统平台可以实现更加高效便捷的党员信息…...

Java代码审计安全篇-常见Java SQL注入

前言&#xff1a; 堕落了三个月&#xff0c;现在因为被找实习而困扰&#xff0c;着实自己能力不足&#xff0c;从今天开始 每天沉淀一点点 &#xff0c;准备秋招 加油 注意&#xff1a; 本文章参考qax的网络安全java代码审计&#xff0c;记录自己的学习过程&#xff0c;还希望…...

C#实现快速排序算法

C#实现快速排序算法 以下是C#中的快速排序算法实现示例&#xff1a; using System;class QuickSort {// 快速排序入口函数public static void Sort(int[] array){QuickSortRecursive(array, 0, array.Length - 1);}// 递归函数实现快速排序private static void QuickSortRecu…...

upload-labs通关记录

文章目录 前言 1.pass-012.pass-023.pass-034.pass-045.pass-056.pass-067.pass-078.pass-089.pass-0910.pass-1011.pass-1112.pass-1213.pass-1314.pass-1415.pass-1516.pass-1617.pass-1718.pass-1819.pass-19 前言 本篇文章记录upload-labs中&#xff0c;所有的通过技巧和各…...

Nginx实现高并发

注&#xff1a;文章是4年前在自己网站上写的&#xff0c;迁移过来了。现在看我之前写的这篇文章&#xff0c;描述得不是特别详细&#xff0c;但描述了Nginx的整体架构思想。如果对Nginx玩得透得或者想了解深入的&#xff0c;可以在网上找找其他的文章。 ......................…...

华为荣耀终端机试真题

文章目录 一 、字符展开(200分)1.1 题目描述1.2 解题思路1.3 解题代码二、共轭转置处理(100分)2.1 题目描述2.3 源码内容一 、字符展开(200分) 1.1 题目描述 // 64 位输出请用 printf(“%lld”)给定一个字符串,字符串包含数字、大小写字母以及括号(包括大括号、中括号…...

C++ Qt开发:QNetworkInterface网络接口组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QNetworkInterface组件实现查询详细的…...

Luajit 2023移动版本编译 v2.1.ROLLING

文章顶部有编好的 2.1.ROLLING 2023/08/21版本源码 Android 64 和 iOS 64 luajit 目前最新的源码tag版本为 v2.1.ROLLING on Aug 21, 2023应该是修正了很多bug, 我是出现下面问题才编的. cocos2dx-lua 游戏 黑屏 并报错: [LUA ERROR] bad light userdata pointer 编…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...