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

【SQL学习笔记】

Pycharm社区版的页面中无database选项?

1、进入Setting-Pluggins窗口,输入database navigator

2、安装后,重启即可

MySQL 的架构共分为两层:Server 层和存储引擎层

1、Server 层负责建⽴连接、分析和执⾏ SQL

2、存储引擎层负责数据的存储和提取, ⽀持 InnoDBMyISAMMemory 等多个存储引擎, 现在最常⽤的存储引擎是 InnoDB,其⽀持索引类型是 B+ 树索引。


数据库

创建数据库

CREATE DATABASE [ IF NOT EXISTS] 库名;

此处添加 [ IF NOT EXISTS] 时,若存在同名数据库,不会创建库且不会报错;

不添加会报错提示,下同。

查看数据库

SHOW DATABASES;

必须是databases,复数形式。

删除数据库

DROP DATABASE  库名;

连接到数据库(需要进入特定数据库)

USE 库名;

修改数据库编码集

ALTER DATABASE 库名 CHARACTER SET = charset_name;

如:ALTER DATABASE XXX CHARACTER SET=utf8;关闭再打开数据库后,数据库编码改变。


表格

创建表

CREATE TABLE [ IF NOT EXISTS] 表名(

        列名 数据类型 约束,

        列名 数据类型 约束

[ENGINE=engine_name]|[DEFAULT] CHARACTER SET[= charset_name];

如:CREATE TABLE XXX(

        id INT,

        name VARCHAR(50),

         age INT

) DEFAULT CHARACTER SET utf-8;

查看数据库所有的表

SHOW TABLES;

查看具体表

SHOW CREATE TABLE 表名;

删除表

通过外键约束连接在一起的表不能被删除。删除表之前,需先删除约束。

DROP TABLE 表名;

复制表

CREATE TABLE 新表名 AS (SELECT * FROM 旧表名);

只复制表结构,不需要数据

CREATE TABLE 新表名 LIKE 旧表名;

修改表名

ALTER TABLE 旧表名 RENAME [TO|AS] 新表名;

添加列

ALTER TABLE 表名 ADD [COLUMN] 列定义;

如:ALTER TABLE XXX ADD COLUMN ip VARCHAR(50);

修改列名

ALTER TABLE 表名 CHANGE [COLUMN] 原列名 新列名 列定义;

如:ALTER TABLE XXX ADD COLUMN ip ip_person VARCHAR(50);

修改列类型

ALTER TABLE 表名 MODIFY [COLUMN] 列名 列定义;

ALTER TABLE XXX MODIFY COLUMN ip_person VARCHAR(20);

删除列

ALTER TABLE 表名 DROP [COLUMN] 列名;


插入数据行

INSERT INTO 表名 [(列名)] VALUES (值列表);

如:INSERT INTO XXX (id,name) VALUES (1,'aki');

注意:

1、每次插入一行,不能只插入半行或几列。

2、数据值的数据类型、精度与对应列匹配,否则MySQL可能作自动处理。

3、若列是自增列,一般不手动指定该列指定值。

4、设计表的时候指定了某列NOT NULL,但插入数据时未提供值,MySQL自动处理为一个默认值。

一次插入多行

INSERT INTO 表名 [(列名)] VALUES (值列表1), (值列表1),(值列表1);

更新数据行

UPDATE 表名 SET 列名=新值 [WHERE 条件];

如:

更新列单个元素

UPDATE XXX SET name='googole' WHERE name='aki';

更新列部分元素

UPDATE XXX SET id= id + 5 WHERE id <= 10;

更新列全部元素

UPDATE XXX SET name='googole';

删除数据行

DELETE FROM 表名 [WHERE 条件];

如:

删除所有数据

DELETE FROM;

删除符合条件数据

DELETE FROM XXX WHERE name='aki';

删除表所有数据

TRUNCATE TABLE 表名

功能类似语句DELETE FROM;

注意:

1、不能用于有外键约束的表。

2、表结构、列、约束不被改动。

3、标识列重新开始编号。

4、DELETE 按条删除数据行,TRUNCATE一次性删除数据表。

5、DELETE手动提交事务、可在事务中回滚,TRUNCATE自动提交事务、无法回滚。

查询语句

SELECT 列名|* FROM 表名 [WHERE 查询条件] [ORDER BY 排序的列名 [ASC|DESC]];

如:SELECT name FROM XXX;

注意:

1、大小写不敏感。

2、可写为一行或多行;但关键字不能跨行。

3、子语句独立行编写

计算

如:SELECT id, id+5 FROM XXX

定义列的别名

若别名中存在空格,需要使用引号

如:

SELECT name AS 姓名, FROM XXX;

SELECT name 姓名, FROM XXX;

SELECT name AS '姓 名', FROM XXX;

使用DISTINCT关键字删除重行

如:SELECT DISTINCT name FROM XXX;

不能使用DISTINCT多列排除重复

如:SELECT DISTINCT name, idcard FROM XXX;

以上语句表名name,idcard组合无重复,不能保证单列无重复

限制查询行数

SELECT 列名1,列名2,…… FROM LIMIT OFFSET,COUNT;

OFFSET指定要返回的第一行的偏移量。默认第一行偏移量为0。

COUNT指定返回最大行数。

如:

SELECT * FROM XXX LIMIT 5,6; 从偏移量为5的行开始取6行。

SELECT * FROM XXX LIMIT 6 = SELECT * FROM XXX LIMIT 0,6; 默认第一行偏移量为0。

查询条件

预算符含义
BETWEEN …… AND……两值之间(包含)
IN(list)匹配列出的值
LIKE匹配一个字符模式
IS NULL空值
=相等
AND组合条件and
OR组合条件or
NOT条件为假返回真值

如:

SELECT idnumber FROM XXX WHERE idnumber BETWEEN 10023 AND 50023;

SELECT idnumber FROM XXX WHERE idnumber IN(10023,20023,30023,40023,50023);

SELECT idnumber FROM XXX WHERE idnumber IS NULL;

LIKE执行通配查询

查询条件可包含文字字符或数字。

% 表示0或多个字符。

_ 表示1个字符

如:

SELECT idnumber FROM XXX WHERE idnumber LIKE ‘50023%’;

以上返回以50023开头的idnumber

SELECT idnumber FROM XXX WHERE idnumber LIKE ‘_0023%’;

以上返回第2-4位字符为0023的idnumber

排序

ASC:升序,默认升序

DESC:降序

ORDER BY语句必须放在SELECT语句整体最后

如:SELECT name, idnumber FROM XXX ORDER BY idnumber DESC;

可使用别名排序

SELECT name, id+5 id_re FROM XXX ORDER BY id_re;

可使用多列排序

先排序第一个条件,再在基础上排序第二个条件,由此进行。

SELECT name, id, idnumber, idcard FROM XXX ORDER BY idnumber ASC, idcard DESC;

聚合分组

聚合函数针对进行运算的所有记录返回唯一一个结果。

分组函数group by对记录进行分组。分组函数会省略列中的空值

COUNT:返回结果集中行的数目

COUNT(*)返回表中记录数

COUNT(列名)返 回非空记录数

SELECT COUNT(计数范围) FROM 表名;

SUM:返回结果集中所有值的总和

AVG:返回结果集中所有值的平均值

MAX:返回结果集中所有值的最大值,可用于日期类型

MIN:返回结果集中所有值的最小值,可用于日期类型

IFNULL函数强制分组函数包括空值

如:SELECT AVG(IFNULL(id, 0))        使用0代替空值进行计算

SELECT后出现聚合函数,该位置只能出现其他聚合函数分组依据列,普通列仅显示第一行值。

如:SELECT idcard,name, AVG(id) FROM XXX GROUP BY idcard

此处普通列name仅显示第一行值,无具体意义

HAVING子句对分组进行过滤

        放在GROUP BY后面,ORDER BY 之前

SELECT idcard, AVG(id) FROM XXX GROUP BY idcard HAVING SUM(idcard) > 1000;

语句执行顺序

SELECT AVG(列名) FROM XXX

WHERE 条件

GROUP BY 列名

HAVING 条件

ORDER BY 列名 ASC/DESC

LIMIT OFFSET,COUNT

①先执行FROM子句,从表中加载数据,在内存形成一张虚拟表

②若有WHERE子句,根据条件,在虚拟表中去掉不满足条件行

③根据GROUP BY子句指定的分组列,进行分组

④计算分组中SELECT子句中聚合函数值,并为每组生成查询结果中的一行

⑤若有HAVING子句,根据条件,分组计算、聚合计算的结果再次过滤

⑥若有ORDER BY子句,根据列,对结果排序

多行子查询

运算符解释
IN在子查询中
ANY其中一个值满足条件返回True
ALL其中任意值满足条件返回True

多表连接查询

类型

内连接INNER JOIN

外连接LEFT JOIN 和 RIGHT JOIN

内连接

在WHERE子句或者JOIN ON中写连接条件。利用主键与外键相等的特性。

SELECT table1.column, table2.column

FROM table1, table2

WHERE  table1.column = table2.column;

SELECT table1.column, table2.column

FROM table1 INNER JOIN table2

ON  table1.column = table2.column;

连接查询必须指定连接条件,否则会形成笛卡尔积结果。

多表连接必须限定列名,即table.column。

外连接

LEFT JOIN中,会返回左表的所有行,即使坐标中有不符合连接条件的记录,也会在查询结果中显示。RIGHT JOIN相似。


约束

数据类型

类型精度范围与格式用途
INT(n)(-2147483648, 2147483647)(0,4294967295)整数
CHAR(n)

0 - 255

字符型定长字符
VARCHAR(n)0 - 65535字符型不定长字符
FLOAT(-3.40E-38,3.40E+38)7位小数单精度浮点数
TEXT0 - 65535文本型大容量文本
BLOB65K二进制文件二进制大对象

定长字符串:长度固定;实际字符不足时,空格补齐;

变长字符串:最长长度固定;实际长度根据实际存储值确定;

日期和时间类型

类型格式范围
YEARYYYY1901-2155
DATEYYYY-MM-DD1000-01-01 - 9999-12-31
TIMEHH:MM:SS-835:59:59 - 838:59:59
TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 - 2038
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 - 9999-12-31 23:59:59

日期和时间类型插入示例

CREAT TABLE XXX(

        id INT AUTO_INCREMENT PRIMARY_KEY,

        reg_datetime DATETIME,

        reg_time TIME,

        reg_date DATE,

        reg_year YEAR

);

INSERT INTO XXX VALUES(1,'2000-01-01 23:23:23','09:09:09','2000-01-02','2000');

创建主键

1、直接在字段定义后面声明主键

CREATE TABLE XXX(

        id INT PRIMARY KEY,

        ……

);

2、用constraint声明主键

CREATE TABLE XXX(

        id  INT,

        name VARCHAR(10) NOT NULL,

        ……

        CONSTRAINT XXX_namep PRIMARY KEY (id,name)

        或者简写成 PRIMARY KEY (id,name)

);

3、用alter语句补充声明主键

ALTER TABLE XXX ADD CONSTRAINT XXX_namep PRIMARY KEY(id,name); 

删除主键

ALTER TABLE XXX DROP PRIMARY KEY

创建外键

用于强制引用完整性。

CREATE TABLE XXX_DEMO(

        cid  INT,

        sid  INT,

        ……

        FOREIGN KEY (sid) REFERENCES XXX (sid)

); 

指定外键删除或更新的行为

1、若子表试图创建一个父表中不存在的外键值,InnoDB会拒绝任何INSERT或UPDATE操作

2、若父表试图UPDATE或DELETE任何子表中存在的外键值,最终动作取决于外键约束定义中的ON UPDATE和ON DELETE选项。

InnoDB支持四种不同的动作(MyISAM),若没有指定ON UPDATE和ON DELETE,默认动作RESTRICT。

CASCADE:父表删除或更新对应行,同时自动删除或更新子表匹配的行

SET NULL:父表删除或更新对应行,同时子表外键列设为空,仅外键列未设置为NOT NULL生效;否则报错

NO ACTION:InnoDB拒绝删除或者更新父表

RESTRICT:拒绝删除或者更新父表

CREATE TABLE XXX_DEMO(

        cid  INT,

        sid  INT,

        ……

        FOREIGN KEY (sid) REFERENCES XXX (sid) ON UPDATE CASCADE [ON DELETE RESTRICT]

); 

通过alter + constraint补充添加外键

ALTER TABLE XXX_DEMO ADD CONSTRAINT xxx_namef FOREIGN KEY(sid) REFERENCES XXX(sid) ON UPDATE CASCADE ON DELETE CASCADE;

删除外键

ALTER TABLE XXX_DEMO DROP FOREIGN KEY xxx_namef;

创建自增长

设定自增的列必须为主键,且一张表只能有一个自增列

CREAT TABLE XXX(

        id INT AUTO_INCREMENT PRIMARY_KEY,

        name VARCHAR(10)

);

INSERT INTO XXX VALUES(DEFAULT,'123');

创建唯一约束

CREAT TABLE XXX(

        dicard  VARCHAR(10) UNIQUE,

        ……

);

创建非空约束

CREAT TABLE XXX(

        name  VARCHAR(10) NOT NULL,

        ……

);

创建检查约束

Mysql原生并不支持检查越苏,对于离散值可使用setenum方式解决;对于连续值只能通过触发器解决。

CREAT TABLE XXX(

        sex SET('man','female'),

        arrangement ENUM('now','later')

        ……

);

创建默认值

CREAT TABLE XXX(

        tel VARCHAR(60) DEFAULT '13313313313',

        ……

);

高级特性、存储过程

变量

设置用户自定义变量

1、以@开始,形式为“@变量名”

SET @demo="hello";

查询变量

SELECT @demo;

2、通过SELECT语句定义

SELECT @demo:="hello"

SELECT ''hello" INTO @demo

使用变量

SELECT name FROM XXX WHERE name = @demo;

存储过程

存储在数据库目录中的一段声明性SQL语句。

优点

·有助于提高应用程序性能。

·有助于减少应用程序和数据库服务器间流量,不必发送冗长的SQL语句到数据库,只需要传递存储过程的名称和参数。

·对任何应用程序都是可重用的和透明的。

·存储的程序是安全的,支持权限控制

定义存储过程

创建成功后,若使用Navicat工具,函数一栏中会出现存储过程名。

DELIMITER //

CREATE PROCEDURE 存储过程名字()

        BEGIN

        ___代码

        END //

DELIMITER;

如:

DROP PROCEDURE IF EXISTS getname;        若存在同名存储过程名,则删除

DELIMITER //

CREATE PROCEDURE getname()

        BEGIN

        SELECT name FROM XXX;

        END //

DELIMITER;

CALL getname;                调用存储过程

声明变量

DECLARE var_name datatype(size) DEFAULT default_value;

变量赋值

SET 变量名 = 变量值        注:此处无@

SELECT 变量值 INTO 变量名 FROM XXX

带参数的存储过程

三种模式

IN——默认模式。调用存储过程时,必须将参数传递给存储过程。IN参数值不能被改变。

OUT——可以更改OUT参数值

INOUT——可以传递参数,并在存储过程中修改INOUT参数

如:

DROP PROCEDURE IF EXISTS getname;

DELIMITER //

CREATE PROCEDURE getname(IN idnum INT(10), OUT demo_name VARCHAR)

        BEGIN

        SELECT name INTO demo_name FROM XXX WHERE id > idnum;

        END //

DELIMITER;

在存储过程中定义的参数,MYSQL中自动生成以下划线命名的参数

CALL getname(10,@_demo);

SELECT @_demo;

流程控制

可以在存储过程中加入流程控制

IF判断

IF 表达式1 THEN

……

ELIF 表达式2 THEN

……

ELSE

……

END IF;

CASE条件

CASE 表达式

WHEN 表达式1 THEN ……

……

ELSE ……

END CASE;

循环

REPEAT

循环体

UNTIL 条件

END REPEAT;

WHILE 条件 DO

        循环体

END WHILE;

循环跳出

ITERATE:类似continue

LEAVE:类似break

flag: WHILE 条件 DO

        ITERATE flag;

        LEAVE flag;

END WHILE flag;

触发器

一种特殊的存储过程,不由用户直接调用。主要用于强制复杂的业务规则或要求。

特点
·与表紧密相连,可以看作表定义的一部分。

·不能通过名称直接调用,不允许带参数;当用户对表中数据进行修改时,自动执行。

·可以用于MySQL约束、默认值和规则完整性检查,实施更为复杂的数据完整性约束。

创建

CREATE TRIGGER 名

trigger_time trigger_event ON 表名 FOR EACH ROW

BEGIN

__代码

END

trigger_time:{BEFORE|AFTER}

trigger_event:{INSERT|UPDATE|DELETE}

注意:

不能有返回值和返回结果集

MYSQL的触发器不能对本表进行INSERT\UPDATE\DELETE操作,以免递归循环触发

old和new的使用

使用INSERT时,原表无数据,插入数据后,新插入数据是new。

使用UPDATE时,修改原表数据的时候,原表数据是old;修改后的数据是new。

使用DELETE时,删除的那一条数据是old。

删除

DROP TRIGGER [IF EXISTS] 名;

查看触发器

SHOW TRIGGERS;

示例:

向emp表插入新数据时,若com大于sal,则将com设置为和sal一样的值。

CREATE TRIGGER trigger_demo BEFORE INSERT  ON emp FOR EACH ROW

BEGIN

IF new.com > new.sal THEN

        SET new.com = new.sal

END IF;

END

删除dept表中还有员工的部门,提示错误提示信息

CREATE TRIGGER delete_demo BEFORE DELETE ON dept FOR EACH ROW

BEGIN

IF old.deptno<>40 THEN

        SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = "不能删除还有员工的部门"

END IF;

END

数据库事务

事务是作为单个逻辑单元执行的一系列操作。

多个操作 作为一个整体向系统提交,要么执行、要么都不执行,事务是一个不可分割的工作逻辑单元。

特别适用多用户同时操作的数据通信系统。

InnoDB:不能结构化编程,只能通过标记开启、提交或回滚事务。

MyISAM:不支持事务,用于只读程序提高性能。

事务的特性

原子性:

事务是不可分割的最小单元。针对操作本身

一致性:

事务处理执行前后,数据库一致的。针对操作结果

隔离性:

一个事务处理对另一个事务处理没有影响。

持久性:

事务处理的效果能被永久存储。

反过来说,事务能承受所有的失败,包括服务器、进程、通信以及媒体失败等。

事务控制语句

开始事务

START TRANSACTION;

或者

BEGIN;

提交事务

COMMIT;

对于数据库的修改是永久性的,无法回滚。

事务回滚

ROLLBACK;

相关文章:

【SQL学习笔记】

Pycharm社区版的页面中无database选项&#xff1f; 1、进入Setting-Pluggins窗口&#xff0c;输入database navigator 2、安装后&#xff0c;重启即可 MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层 1、Server 层负责建⽴连接、分析和执⾏ SQL 2、存储引擎层负…...

contact form 7设置方法与详细步骤

Contact Form 7(CF7)是WordPress中非常流行的表单插件&#xff0c;用于创建和管理网站上的联系表单。以下是Contact Form 7的设置方法与详细步骤&#xff1a; 一、安装Contact Form 7插件 从WordPress后台安装&#xff1a; 登录WordPress后台&#xff0c;进入“插件”菜单下…...

第170天:应急响应-战中溯源反制对抗上线CSGoby蚁剑Sqlmap等安全工具

目录 案例一&#xff1a;溯源反制-Webshell工具-Antsword 案例二&#xff1a;溯源反制-SQL注入工具-SQLMAP 案例三&#xff1a;溯源反制-漏洞扫描工具-Goby 案例四&#xff1a;溯源反制-远程控制工具-CobaltStrike 反制Server&#xff0c;爆破密码&#xff08;通用&#x…...

5-容器管理工具Docker

├──5-容器管理工具Docker | ├──1-容器管理工具Docker | | ├──1-应用部署容器化演进之路 | | ├──2-容器技术涉及Linux内核关键技术 | | ├──3-Docker生态架构及部署 | | ├──4-使用容器运行Nginx及docker命令介绍 | | ├──5-容器镜像介…...

OCR+PDF解析配套前端工具开源详解!

目录 一、项目简介 TextIn为相关领域的前端开发提供了优秀的范本。 目前项目已在Github上开源&#xff01; 二、性能特色 三、安装使用 安装依赖启动项目脚本命令项目结构 四、效果展示 面对日常生活和工作中常见的OCR识别、PDF解析、翻译、校对等场景&#xff0c;配套的…...

【操作系统】引导(Boot)电脑的奇妙开机过程

&#x1f339;&#x1f60a;&#x1f339;博客主页&#xff1a;【Hello_shuoCSDN博客】 ✨操作系统详见 【操作系统专项】 ✨C语言知识详见&#xff1a;【C语言专项】 目录 什么是操作系统的引导&#xff1f; 操作系统的引导&#xff08;开机过程&#xff09; Windows操作系…...

国产云桌面迁移对接信创AD域控方案

在前文《替换AD域时&#xff0c;网络准入场景如何迁移对接国产身份域管&#xff1f;》中&#xff0c;根据 AD 在企业中的应用程度&#xff0c;我们将企业分为了轻度、中度及深度三类微软 AD 用户。 轻度AD用户&#xff1a;仅部分应用对接 AD 。替换 AD 时&#xff0c;可能会直接…...

ESP32—C3实现DS18B20(温度传感器)检测温度(Arduino IED )

1源代码&#xff08;DS18B20&#xff09; #include <OneWire.h> // 引入OneWire库&#xff0c;用于与单总线设备通信 #include <DallasTemperature.h> // 引入DallasTemperature库&#xff0c;用于读取DS18B20温度传感器数据// 定义连接到DS18B20数据引脚的GPIO编…...

Linux系统中安装KenLM步骤及注意事项

一、前言&#xff1a; Kenlm模型&#xff1a;本项目基于Kenlm统计语言模型工具训练了中文NGram语言模型&#xff0c;结合规则方法、混淆集可以纠正中文拼写错误&#xff0c;方法速度快&#xff0c;扩展性强&#xff0c;效果一般 二、安装步骤&#xff1a; 1、安装依赖项 Ke…...

xss-labs靶场第六关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、注入点寻找 2、使用hackbar进行payload测试 3、绕过结果 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机&#xff1a;本机(127.0.0.1) 靶 机&#xff1a;本机(127.0.0.…...

传智杯 第六届—E

题目描述&#xff1a; leafee 最近爱上了 abb 型语句&#xff0c;比如“叠词词”、“恶心心”。 leafee 拿到了一个只含有小写字母的字符串&#xff0c;她想知道有多少个 "abb" 型的子序列&#xff1f; 定义&#xff1a; abb 型字符串满足以下条件&#xff1a; 字符…...

2024.10月12日--- SpringMVC异常处理

异常处理 SpringMVC处理异常的方式有三种&#xff0c;当然也可以使用AOP面向编程&#xff0c;自定义一个类进入切入。 第一种&#xff1a;使用SpringMVC提供的简单异常处理器SimpleMappingExceptionResolver <!--SpringMVC提供的异常处理器类型&#xff1a;SimpleMappingE…...

边缘人工智能(Edge Intelligence)

边缘人工智能&#xff08;Edge AI&#xff09;是指在边缘设备上直接运行人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;算法的技术。机器学习是一个广泛的领域&#xff0c;近年来取得了巨大的进步。它所基于的原则是&#xff0c;计算机可以通过从数据…...

C++20主要特性

Concepts&#xff08;概念&#xff09;&#xff1a; Concepts 是一种新的语言特性&#xff0c;允许程序员明确定义类型的要求&#xff0c;从而提高了模板代码的可读性和错误消息的质量。 template <typename T> concept Integral std::is_integral_v<T>;template…...

IterComp: 从模型图库中迭代合成感知反馈学习,用于文本到图像的生成

我们从多个模型中收集组成感知模型偏好&#xff0c;并采用迭代反馈学习方法&#xff0c;使基础扩散模型和奖励模型都能逐步自我完善。 我们提出了一种迭代反馈学习方法&#xff0c;通过多次迭代&#xff0c;使基础扩散模型和奖励模型逐步自我完善&#xff0c;从而以闭环方式增…...

6.Python 函数进阶(函数多返回值、函数多种传参方式、匿名函数)

一、函数多返回值 1、具体实现 def test_return():return 1, 2x, y test_return()print(x) print(y)输出结果 1 22、解析 按照返回值的顺序&#xff0c;用对应顺序的多个变量接收&#xff0c;变量之间用逗号&#xff08;,&#xff09;隔开 支持返回不同类型的数据 二、函…...

视频汇聚平台EasyCVR支持云端录像丨监控存储丨录像回看丨录像计划丨录像配置

EasyCVR视频汇聚融合平台&#xff0c;是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。平台以其强大的视频处理、汇聚与融合能力&#xff0c;在构建视频监控系统中展现出了独特的优势。 EasyCVR视频汇聚平台可接入传统监控行业中高清网络摄像机的RTSP…...

【Spring】获取 Cookie和Session

回顾 Cookie HTTP 协议自身是属于“无状态”协议 无状态&#xff1a;默认情况下&#xff0c;HTTP 协议的客户端和服务器之间的这次通信和下次通信之间没有直接的联系 但是在实际开发中&#xff0c;我们很多时候是需要知道请求之间的关联关系的 例如登录网站成功后&#xff…...

MyBatis-Plus 的核心插件及其使用介绍

MyBatis-Plus 是基于 MyBatis 的增强工具&#xff0c;为简化 MyBatis 的开发提供了诸多功能扩展。它的目标是减少重复代码、提高开发效率&#xff0c;提供了 CRUD&#xff08;Create, Read, Update, Delete&#xff09;操作的简化方法以及多种实用插件。以下是 MyBatis-Plus 的…...

雷池社区版本SYSlog使用教程

雷池会对恶意攻击进行拦截&#xff0c;但是日志都在雷池机器上显示 如何把日志都同步到相关设备进行统一的管理和分析呢&#xff1f; 如需将雷池攻击日志实时同步到第三方服务器, 可使用雷池的 Syslog 外发 功能 启用 Syslog 外发 进入雷池 系统设置 页面, 配置 Syslog 设置…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...