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

MySQL-CRUD入门2

文章目录

    • 数据的查询(补充)
      • 条件查询
      • 关于SQL语句的执行顺序
      • 分页查询(LIMIT)
    • 数据的修改
      • 数据修改基础知识

数据的查询(补充)

这一节接着写, 包括数据的查询(补充), 数据的更新, 数据的删除

条件查询

其实就是根据给定的一些条件, 然后过滤掉不符合实际情况的记录, 把符合条件的记录返还给用户, 执行这些操作是通过一些运算符, 比如说比较运算符, 逻辑运算符, 和Java中的思路的是一样的

运算符说明
> , >= , < , <=大于, 大于等于, 小于, 小于等于
=等于, NULL不安全, 如NULL= NULL的结果就是NULL(参加运算)
<=>等于, NULL安全, NULL <=> NULL 的结果是1(表示真)
!=, <>不等于, NULL不安全
betweed m and n范围匹配, [m, n], 如果m <= value <= n, 返回1(表示真)

小练习(关于NULL) :

-- 进行简单的select操作不需要使用数据库
select NULL > 1;
select NULL = NULL;
select NULL <=> NULL;
select not (NULL = NULL);
select not (NULL <=> NULL);
select NULL <> NULL;-- 执行结果 : NULL, NULL, 1, NULL, 0, NULL
-- 总结就是 : 
关于NULL的数学运算结果都是NULL
关于NULL的含有安全等于的运算是有一定意义的
运算符说明
in (option,…)如果是option中的任意一个返回1(表示真)
is null是NULL
is not null不是NULL
like模糊查询, %表示任意个(包括0个)任意字符; _表示任意一个字符

小练习 :

-- 进行简单的select操作不需要使用数据库
select 1 in (1, 2, 3);
select 5 in (1, 2, 3);
select NULL is null;
select NULL is not null;
-- 查询结果是 1, 0, 1, 0-- 关于模糊查询的操作就需要使用数据库了
use sel_test;
select * from exam where name like '%孙%';
-- 上面的查找的是名字中有 '孙' 这个字的信息
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
+------+-----------+---------+------+---------+
select * from exam where name like '孙_';
+------+--------+---------+------+---------+
| id   | name   | chinese | math | english |
+------+--------+---------+------+---------+
|    6 | 孙权   |    70.0 | 73.0 |    78.5 |
+------+--------+---------+------+---------+-- 之前我们查看当前数据库的字符集的时候用的下面这个指令就是模糊查询(下面一致)
show variables like '%character%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8mb4                                                 |
| character_set_connection | utf8mb4                                                 |
| character_set_database   | utf8mb4                                                 |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8mb4                                                 |
| character_set_server     | utf8mb4                                                 |
| character_set_system     | utf8mb3                                                 |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
show variables like '%charac%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8mb4                                                 |
| character_set_connection | utf8mb4                                                 |
| character_set_database   | utf8mb4                                                 |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8mb4                                                 |
| character_set_server     | utf8mb4                                                 |
| character_set_system     | utf8mb3                                                 |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
运算符说明
and(&&)多个条件必须都为true(1), 结果才是true(1)
or(l l)任意一个条件为true(1), 结果就是true(1)
not条件为true(1), 结果为false(0), 类似于Java中!
特殊说明一下, 逻辑运算符的优先级不建议记忆, 建议使用的时候还是通过小括号的方式, 手动的去指定优先级, 使用where条件的语法
select * from 表名 where 列名/表达式 运算符 条件;

首先展示一下我们的数据中的数据(等会测试验证)

select * from exam;
+------+--------------+---------+------+---------+
| id   | name         | chinese | math | english |
+------+--------------+---------+------+---------+
|    1 | 唐三藏       |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空       |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能       |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德       |    82.0 | 84.0 |    67.0 |
|    5 | 刘玄德       |    55.5 | 85.0 |    45.0 |
|    6 | 孙权         |    70.0 | 73.0 |    78.5 |
|    7 | 宋公明       |    75.0 | 65.0 |    30.0 |
|    8 | 齐天大圣     |    87.5 | 78.0 |    77.0 |
|    9 | 孙行者       |    NULL | 84.0 |    83.5 |
|   10 | 宋江         |    76.0 | NULL |    77.0 |
|   11 | 李逵         |    67.0 | 90.0 |    NULL |
+------+--------------+---------+------+---------+

练习
需求1 : 找到英语成绩不及格的同学(english < 60)

mysql> select * from exam where english < 60;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
|    7 | 宋公明    |    75.0 | 65.0 |    30.0 |
+------+-----------+---------+------+---------+
因为 NULL < 60 不论什么时候都是不成立的, 所以直接过滤, 留下三条记录

需求2 : 找打数学成绩好于英语成绩的同学(math > english)

mysql> select * from exam where math > english;
+------+--------------+---------+------+---------+
| id   | name         | chinese | math | english |
+------+--------------+---------+------+---------+
|    1 | 唐三藏       |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空       |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能       |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德       |    82.0 | 84.0 |    67.0 |
|    5 | 刘玄德       |    55.5 | 85.0 |    45.0 |
|    7 | 宋公明       |    75.0 | 65.0 |    30.0 |
|    8 | 齐天大圣     |    87.5 | 78.0 |    77.0 |
|    9 | 孙行者       |    NULL | 84.0 |    83.5 |
+------+--------------+---------+------+---------+

需求三 : 查询总分在200以下的同学(结果降序排列)

select id, name, chinese + math + english 
as '总分' from exam where chinese + math + english < 200 
order by '总分' desc;
+------+-----------+--------+
| id   | name      | 总分   |
+------+-----------+--------+
|    5 | 刘玄德    |  185.5 |
|    7 | 宋公明    |  170.0 |
+------+-----------+--------+

思考上面的代码, 如果把where中的chinese + math + english替换为’总分’可以么 ?
在这里插入图片描述

关于SQL语句的执行顺序

主要就是下面几个点的执行顺序

  1. select 2. from 3. where 4. order by

关于这个问题, 我有一套自己的逻辑, 我们可以把一个数据库类比为一个数据池, 我们想要从中筛选指定的数据, 首先要搬出来数据池, 也就是from, 那么就需要一个滤网去过滤, 也就是where, 筛选出来指定的数据之后就select把数据选到结果集, 最后再次进行排序(order by)
也就是首先是from, 然后是where, 其次是select, 最后是order by

where中的别名问题
由上面的结论可以得到, 如果在where中通过别名进行筛选的话, 就不会筛选出来指定的结果, 但是有一个例外, 就是当别名通过引号进行标注的话, 就可以正常的执行
在这里插入图片描述
但是也会生成一个警告
在这里插入图片描述

分页查询(LIMIT)

限制结果集中的数据的条数, 在上一节我们说过如果不对数据的条数进行限制, 是一个很危险的操作, 所以就出现了分页查询的操作, 分页查询在实际的项目中应用是十分的频繁的, 只要是多条数据的集合, 一般都是用分页进行查询, 分页查询的优点也是很明显的, 可以有效的控制一次查询出来的结果集记录的条数, 减小数据库的压力, 同时对用户也是十分友好的

基础语法

-- 第一种分页语法(从索引为0的位置开始查询n条记录, 索引的起始位置是0)
select[字段]from[表名]where[查询条件]order by[字段][asc|desc]limit n;
-- 第二种分页语法(从索引为s的位置开始查询n条记录)
select[字段]from[表名]where[查询条件]order by[字段][asc|desc]limit s,n;
-- 第三种分页语法(跟第二种一样但是语法更加严密)
select[字段]from[表名]where[查询条件]order by[字段][asc|desc]limit n offset s;

假设上面的数据库我们要用分页查询法, 每4个是一页, 按照id排序

-- 分页的偏移量是 (页数 - 1) * 每页数据量
mysql> select * from exam order by id limit 4 offset 0;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
+------+-----------+---------+------+---------+
4 rows in set (0.00 sec)mysql> select * from exam order by id limit 4 offset 4;
+------+--------------+---------+------+---------+
| id   | name         | chinese | math | english |
+------+--------------+---------+------+---------+
|    5 | 刘玄德       |    55.5 | 85.0 |    45.0 |
|    6 | 孙权         |    70.0 | 73.0 |    78.5 |
|    7 | 宋公明       |    75.0 | 65.0 |    30.0 |
|    8 | 齐天大圣     |    87.5 | 78.0 |    77.0 |
+------+--------------+---------+------+---------+
4 rows in set (0.00 sec)mysql> select * from exam order by id limit 4 offset 8;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    9 | 孙行者    |    NULL | 84.0 |    83.5 |
|   10 | 宋江      |    76.0 | NULL |    77.0 |
|   11 | 李逵      |    67.0 | 90.0 |    NULL |
+------+-----------+---------+------+---------+
3 rows in set (0.00 sec)

现在分页查询需求是按照总分进行排序(每一页四条数据)

mysql> select id, name, chinese + math + english as '总分' from exam order by '总分' desc limit 4 offset 0;
+------+-----------+--------+
| id   | name      | 总分   |
+------+-----------+--------+
|    1 | 唐三藏    |  221.0 |
|    2 | 孙悟空    |  242.5 |
|    3 | 猪悟能    |  276.0 |
|    4 | 曹孟德    |  233.0 |
+------+-----------+--------+
4 rows in set (0.00 sec)mysql> select id, name, chinese + math + english as '总分' from exam order by '总分' desc limit 4 offset 4;
+------+--------------+--------+
| id   | name         | 总分   |
+------+--------------+--------+
|    5 | 刘玄德       |  185.5 |
|    6 | 孙权         |  221.5 |
|    7 | 宋公明       |  170.0 |
|    8 | 齐天大圣     |  242.5 |
+------+--------------+--------+
4 rows in set (0.00 sec)mysql> select id, name, chinese + math + english as '总分' from exam order by '总分' desc limit 4 offset 8;
+------+-----------+--------+
| id   | name      | 总分   |
+------+-----------+--------+
|    9 | 孙行者    |   NULL |
|   10 | 宋江      |   NULL |
|   11 | 李逵      |   NULL |
+------+-----------+--------+
3 rows in set (0.00 sec)

思考, 我们的null进行运算完之后数据都是null, 但现在我们的需求是如果是null默认为0, 那就要用到我们ifnull函数了, 关于函数我们会详细讲解, 这里简单说一下

select id, name, ifnull(chinese, 0) + ifnull(math, 0) + ifnull(english, 0) as '总分' from exam order by '总分' desc limit 4 offset 0;select id, name, ifnull(chinese, 0) + ifnull(math, 0) + ifnull(english, 0) as '总分' from exam order by '总分' desc limit 4 offset 4;select id, name, ifnull(chinese, 0) + ifnull(math, 0) + ifnull(english, 0) as '总分' from exam order by '总分' desc limit 4 offset 8;

最后一个SQL语句执行结果就会按照需求进行调整

+------+-----------+--------+
| id   | name      | 总分   |
+------+-----------+--------+
|    9 | 孙行者    |  167.5 |
|   10 | 宋江      |  153.0 |
|   11 | 李逵      |  157.0 |
+------+-----------+--------+

数据的修改

数据修改基础知识

也就是CRUD中的U(update), 更新某一张表中的数据, 这个才是真正意义上的’更改器’
基础语法

update [表名] set [字段1] = [期望值] ... where 筛选条件 order by 排序规则 limit..

需求1 : 将孙悟空同学的数学成绩变为80分

在这里插入图片描述
Rows matched 指的是匹配到了多少行, Changed 是指真正修改的数据行数

mysql> select * from exam where name = '孙悟空';
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    2 | 孙悟空    |    87.5 | 80.0 |    77.0 |
+------+-----------+---------+------+---------+

需求2 : 将孙悟空同学的语文成绩加20分
在这里插入图片描述
注意这里不可以使用math += 10, mysql不支持这种操作

mysql> select * from exam where name = '孙悟空';
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    2 | 孙悟空    |    97.5 | 80.0 |    77.0 |
+------+-----------+---------+------+---------+

需求3 : 把总分排名倒数前3的人的数学成绩加上10分

 update exam set math = math + 10 where math is not null order by math + chinese + english asc limit 3;

相关文章:

MySQL-CRUD入门2

文章目录 数据的查询(补充)条件查询关于SQL语句的执行顺序分页查询(LIMIT) 数据的修改数据修改基础知识 数据的查询(补充) 这一节接着写, 包括数据的查询(补充), 数据的更新, 数据的删除 条件查询 其实就是根据给定的一些条件, 然后过滤掉不符合实际情况的记录, 把符合条件的…...

高级java每日一道面试题-2024年9月06日-基础篇-Java中的PO、VO、BO、DO、DAO、DTO、POJO是什么意思?

如果有遗漏,评论区告诉我进行补充 面试官: Java中的PO、VO、BO、DO、DAO、DTO、POJO是什么意思? 我回答: PO持久化对象&#xff08;Persistent Object&#xff09; PO是持久化对象&#xff0c;用于表示数据库中的实体或表的映射 通常与数据库表的结构和字段对应 PO的属性对…...

MFC读取PC6408板卡输入信号实例

本程序基于前期我的博客文章《MFC用信号灯模拟工控机数字量输入信号实时采集实例&#xff08;源码下载》 1、在TheradDlg.h中相关代码 ... private:unsigned short nAddr; ... TheradDlg.cpp中相关代码 #include "pc60002k.h"BOOL CTheradDlg::OnInitDialog() { ..…...

@Async的使用说明

在 Spring Boot 中&#xff0c;Async 注解用于实现异步方法调用&#xff0c;允许方法在单独的线程中执行&#xff0c;从而避免阻塞主线程&#xff0c;提升应用的并发处理能力。 1. 基本用法 在 Spring Boot 中使用 Async 很简单&#xff0c;主要步骤如下&#xff1a; 步骤 1…...

经验笔记:SQL调优

SQL调优经验笔记 引言 SQL调优是确保数据库系统高效运行的重要环节。通过对查询语句、数据库配置、硬件资源等方面进行优化&#xff0c;可以显著提升数据库性能&#xff0c;进而增强应用程序的整体表现。以下是基于常见调优手段和实践经验整理的一份经验笔记。 1. 查询语句优…...

Selenium使用浏览器用户配置进行测试

本文主要介绍了如何在使用Selenium WebDriver进行自动化测试时&#xff0c;创建和使用自定义的Firefox配置文件。 什么是Firefox配置文件&#xff1f; Firefox会将用户的个人信息&#xff0c;如书签、密码和用户偏好设置存储在一个称为配置文件的文件集合中&#xff0c;这些文…...

virsh命令的使用

virsh 是一个用于管理虚拟机的命令行工具&#xff0c;它与 libvirt 服务配合使用&#xff0c;支持对虚拟机的创建、配置、启动、停止等操作。 1、列出虚拟机 列出正在运行的虚拟机&#xff1a; virsh list列出所有虚拟机&#xff08;包括未启动的&#xff09;&#xff1a; …...

【来学Vue吧】创建一个Vue项目

&#x1f31f; 嗨&#xff0c;我是命运之光&#xff01; &#x1f30d; 2024&#xff0c;每日百字&#xff0c;记录时光&#xff0c;感谢有你一路同行。 &#x1f680; 携手启航&#xff0c;探索未知&#xff0c;激发潜能&#xff0c;每一步都意义非凡。 首先需要配置Vue环境…...

C#迭代器方法和yield用法

一.迭代器方法介绍 可使用foreach循环进行遍历的方法&#xff0c;称为迭代器方法。 迭代器方法使用yield return语句返回元素。 到达yield return语句时&#xff0c;会记住当前在代码中的位置。 下次调用迭代器函数时&#xff0c;将从该位置开始执行。换言之&#xff0c;如果…...

斗破C++编程入门系列之二十六:数组、指针和字符串:动态内存分配和释放(一星斗师)

斗破C目录&#xff1a; 斗破C编程入门系列之前言&#xff08;斗之气三段&#xff09; 斗破C编程入门系列之二&#xff1a;Qt的使用介绍&#xff08;斗之气三段&#xff09; 斗破C编程入门系列之三&#xff1a;数据结构&#xff08;斗之气三段&#xff09; 斗破C编程入门系列之…...

Servlet 和 Spring Boot 的请求处理流程区别和例子

当然可以为您绘制一个流程图&#xff0c;展示 Servlet 和 Spring Boot 的请求处理流程。这将帮助我们更直观地比较两者的工作方式。 #mermaid-svg-PgFEmecUmDhvxxtQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-P…...

C++笔记之map的实用操作

C++笔记之map的实用操作 文章目录 C++笔记之map的实用操作1.初始化1.1.使用列表初始化1.2.使用 `insert` 方法1.3.使用 `emplace` 方法1.4.复制构造1.5.移动构造2.赋值2.1.列表赋值2.2.插入元素2.3.批量插入3.取值3.1.使用 `[]` 操作符3.2.使用 `at()` 方法3.3.检查键是否存在3…...

Lombok失效:报错 找不到符号 Springboot项目

错误原因&#xff0c;Springboot项目为Lombok提供了版本管理的支持&#xff0c;所以引入Lombok依赖的时候&#xff0c;无需手动指定版本&#xff0c;手动指定了可能会导致依赖冲突。 去掉手动指定的版本&#xff0c;问题解决...

Linux 基础命令-文件与目录操作

在 Linux 操作系统中&#xff0c;文件和目录是组织和管理数据的核心单元。作为一个命令行驱动的操作系统&#xff0c;Linux 提供了一系列强大且灵活的命令来操作文件和目录。掌握这些命令不仅是管理 Linux 系统的基础&#xff0c;也是高效使用 Linux 环境的关键。 一、文件与目…...

Delphi 12.1安卓APP开发中获取硬件信息及手机号

Demo与代码已上传到CSDN下载。 这里简单说一下代码内容&#xff0c;完整代码请自行下载&#xff0c;不清楚的欢迎留言交流。 前言 演示Demo使用了我自己开发的一个控件&#xff0c;TLayoutPro 《Delphi D10.3 LayoutsPro 控件简介 -避免输入焦点被虚拟键盘遮挡》请查看并下载控…...

STM32 - 笔记4

1 STM32 示波器 基于STM32的简易示波器项目(含代码)——HAL库_stm32简易示波器 基于STM32的简易示波器项目(含代码)——HAL库_stm32简易示波器_stm32示波器-CSDN博客 【强烈推荐】基于stm32的OLED各种显示实现(含动态图)_stm32oled以十六进制显示-CSDN博客 STM32示波器…...

【H2O2|全栈】更多关于HTML(1)HTML进阶(一)

目录 HTML进阶知识 前言 准备工作 标签的扩展&#xff08;一&#xff09; 本文中的标签在什么位置使用&#xff1f; title标签 meta标签 name viewport referrer http-equiv charset content link标签 实际案例 可视部分 代码分析 其他标签 base标签 styl…...

新160个crackme - 053-devilz KeyGen me#3

运行分析 解压出来4个文件运行程序发现要破解Name和Serial PE分析 32位&#xff0c;petite壳 手动脱壳 使用windows XP虚拟机OD打开程序按2下F8&#xff0c;发现ESP变红&#xff0c;根据ESP定律&#xff0c;在该地址右键 -> HW break下断点 继续按2下F9&#xff0c;来到灰色…...

ORA-12514

第一步&#xff0c;去这个地址&#xff0c;查查你的服务名是否存在 第二步&#xff0c;没查到就是你服务名写错了&#xff0c;查到了就退出我的解答...

MyBatis-PlusDruid数据源

MyBatis-Plus简介 MyBatis-Plus&#xff08;简称MP&#xff09;是一个MyBatis的增强工具&#xff0c;它在MyBatis的基础上进行了增强而不改变其原有的功能&#xff0c;旨在简化开发、提高效率。以下是对MyBatis-Plus的详细简介&#xff1a; 一、基本概述 定义&#xff1a;MyBat…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...