Mysql高阶语句与MySQL存储过程

news2024/12/23 17:37:26

Mysql高阶语句

    • 准备环境(1)
  • 一、MySQL高阶进阶SQL语句
    • 1、select
    • 2、distinct
    • 3、where
    • 4、and or
    • 5、in
    • 6、between
    • 7、通配符
    • 8、order by
    • 9、函数
      • 数学函数
      • 字符串函数
    • 10、group by
    • 11、having
    • 12、别名
    • 13、子查询
    • 13、EXISTS
  • 二、MySQL高阶进阶SQL语句2
    • 环境准备(2)
    • 1、连接查询
      • 多表查询
    • 2、create view 视图
    • 3、union联集
    • 4、交集值
    • 5、无交集值
    • 六、case
    • 七、空值(NULL) 和 无值('') 的区别
        • (1)使用length函数查看字符的长度
        • (2)查看表里面字符为null的行和不为null的行
        • (3)查看空值的行和不为空值的行
        • (4)统计所有的行数和忽略为null值的行
        • 正则表达式
        • (1)匹配以es结尾的字符串的字段
        • (2)匹配字符串里包含to的字段
        • (3)匹配字符串以A-G开头的字段
        • (4)匹配字符串以 HO | Bo 开头的字段
  • MySQL存储过程
    • 存储过程的概念
    • 存储过程的优点
    • 创建存储过程
    • 查看存储过程
    • 存储过程的参数
      • in
      • out
      • inout
    • 删除存储过程
    • 存储过程的控制语句

准备环境(1)

mysql -uroot -p
create database kgc;
use kgc;

create table location(region varchar(10),store_name char(20)); # 表一结构
create table store_info(storm_name char(20),sales int(10),date char(15)); #表二结构



# 表一数据内容
insert into location values ('East','Bostion');
insert into location values ('East','New York');
insert into location values ('West','Los Angeles');
insert into location values ('West','Houstion');

# 表二数据内容
insert into store_info values('Los Angeles',1500,'2023-01-30');
insert into store_info values('Los Angeles',300,'2023-01-30');
insert into store_info values('Houstion',200,'2023-01-30');
insert into store_info values('Bostion',700,'2023-01-30');


select * from region;
select * from fare;

在这里插入图片描述

在这里插入图片描述

一、MySQL高阶进阶SQL语句

1、select

显示表格中一个或数个字段的所有资料
语法:select 字段 from 表名

select region from store_info;

在这里插入图片描述

2、distinct

不显示重复的数据记录
语法:select distinct ‘字段’ from ‘表名’;

select distinct storm_name from store_info ;

在这里插入图片描述

3、where

有条件查询
语法:select “字段” from"表名" where ‘条件’;

select storm_name from store_info where sales > 1000;

在这里插入图片描述

4、and or

且 ,或
语法:select “字段” from “表名” where “条件1” {[and|or] “条件2”}+ ;

select sales from store_info where sales > 500 and sales < 1000;
select sales from store_info where sales > 500 or sales < 1000;

在这里插入图片描述

5、in

显示已知的值的数据记录
语法:select “字段” from “表名” where “字段” in (‘值1’, ‘值2’, …);

select * from store_info where storm_name in ('Los Angeles','Houston');

在这里插入图片描述

6、between

显示两个值范围内的数据记录
语法:select “字段” from “表名” where “字段” between ‘值1’ and ‘值2’;

select * from store_info where date between '2020-12-05' and '2020-12-10';

在这里插入图片描述

7、通配符

通常通配符都是跟 LIKE 一起使用的

%百分号表示零个、一个或多个字符
_下划线表示单个字符
‘A_Z’所有以 ‘A’ 起头,另一个任何值的字符,且以 ‘Z’ 为结尾的字符串。例如,‘ABZ’ 和 ‘A2Z’ 都符合这一个模式,而 ‘AKKZ’ 并不符合 (因为在 A 和 Z 之间有两个字符,而不是一个字符)。
‘ABC%’所有以 ‘ABC’ 起头的字符串。例如,‘ABCD’ 和 ‘ABCABC’ 都符合这个模式。
‘%XYZ’所有以 ‘XYZ’ 结尾的字符串。例如,‘WXYZ’ 和 ‘ZZXYZ’ 都符合这个模式。
‘%AN%’所有含有 'AN’这个模式的字符串。例如,‘LOS ANGELES’ 和 ‘SAN FRANCISCO’ 都符合这个模式。
‘_AN%’所有第二个字母为 ‘A’ 和第三个字母为 ‘N’ 的字符串。例如,‘SAN FRANCISCO’ 符合这个模式,而 ‘LOS ANGELES’ 则不符合这个模式。

like:用于匹配模式来查找资料
语法:select “字段” from “表名” where “字段” like{模式};

select * from store_info where storm_name like 'Los%';
select storm_name from store_info where storm_name like 'Los%';

在这里插入图片描述

8、order by

按关键字排序
语法:select “字段” from “表名” [where “条件”] order by “字段”[ASC, DESC];

select sales,date,storm_name from store_info order by sales desc;

在这里插入图片描述

  • #ASC 是按照升序进行排序的,是默认的排序方式。

  • #DESC 是按降序方式进行排序。
    SELECT Store_Name,Sales,Date FROM Store_Info ORDER BY Sales DESC;==

9、函数

数学函数

abs(x)返回 x 的绝对值
rand()返回 0 到 1 的随机数
mod(x,y)返回 x 除以 y 以后的余数
power(x,y)返回 x 的 y 次方
round(x)返回离 x 最近的整数
round(x,y)保留 x 的 y 位小数四舍五入后的值
sqrt(x)返回 x 的平方根
truncate(x,y)返回数字 x 截断为 y 位小数的值
ceil(x)返回大于或等于 x 的最小整数
floor(x)返回小于或等于 x 的最大整数
greatest(x1,x2…)返回集合中最大的值,也可以返回多个字段的最大的值
least(x1,x2…)返回集合中最小的值,也可以返回多个字段的最小的值
select abs(-1), rand(), mod(5,3), power(2,3), round(1.89);

在这里插入图片描述

select round(1.8937,3), truncate(1.235,2), ceil(5.2), floor(2.1), least(1.89,3,6.1,2.1);

在这里插入图片描述

字符串函数

trim()返回去除指定格式的值
concat(x,y)将提供的参数 x 和 y 拼接成一个字符串
substr(x,y)获取从字符串 x 中的第 y 个位置开始的字符串,跟substring()函数作用相同
substr(x,y,z)获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串
length(x)返回字符串 x 的长度
replace(x,y,z)将字符串 z 替代字符串 x 中的字符串 y
upper(x)将字符串 x 的所有字母变成大写字母
lower(x)将字符串 x 的所有字母变成小写字母
left(x,y)返回字符串 x 的前 y 个字符
right(x,y)返回字符串 x 的后 y 个字符
repeat(x,y)将字符串 x 重复 y 次
space(x)返回 x 个空格
strcmp(x,y)比较 x 和 y,返回的值可以为-1,0,1
reverse(x)将字符串 x 反转

10、group by

  • by后面的栏位的查询结果进行汇总分组,通常是结合聚合函数一起使用的
  • group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在group by后面。

语法:select 字段1,sum(字段2) from表名 group by 字段1;

select store_name,sum(sales) from store_info select 字段1,wum(字段2) from 表名 group by 字段1;

11、having

  • 用来过滤由group by语句返回的记录集,通常与group by语句联合使用。
  • having语句的存在弥补了where关键字不能与聚合函数联合使用的不足。如果被select的只有函数栏,那就不需要group by子句。

语法:select 字段1,sum(字段2) from 表名 group by 字段1 having(函数条件);

select site,count(money),sum(money),date from from group by site having sum(money) >=700;

12、别名

字段别名、表格别名

 select location.store_name from location,store_info where location.store_name = store_info.store_name;

在这里插入图片描述

13、子查询

连接表格,在WHERE 子句或HAVING 子句中插入另一个SQL 语句

SELECT 字段1 FROM 表格1 WHERE 字段2 [比较运算符]      #外查询
(SELECT 字段1 FROM 表格2 WHERE 条件)                #内查询
  • 可以是符号的运算符
    例:=、>、<、>=、<=
  • 也可以是文字的运算符
    例:LIKE、IN、BETWEEN
select A.site,region from REGION AS A where A.site in
(select B.site from FARE AS B where money<2000);

select B.site,money,date from FARE AS B where site in
(select A.site from REGION AS A where region = 'north');

13、EXISTS

  • 用来测试内查询有没有产生任何结果,类似布尔值是否为真
  • 如果有的话,系统就会执行外查询中的SQL语句,若是没有,那整个SQL语句就不会产生任何结果。
语法:
SELECT 字段1 FROM 表1 WHERE EXISTS (SELECT * FROM 表2 WHERE 条件);

例:

select region from REGION where exists (select * from FARE where money = '700');

二、MySQL高阶进阶SQL语句2

环境准备(2)

use kgc;
create table location (Region char(20),Store_Name char(20));
insert into location values('East','Boston');
insert into location values('East','New York');
insert into location values('West','Los Angeles');
insert into location values('West','Houston');


create table store_info (Store_Name char(20),Sales int(10),Date char(10));
insert into store_info values('Los Angeles','1500','2020-12-05');
insert into store_info values('Houston','250','2020-12-07');
insert into store_info values('Los Angeles','300','2020-12-08');
insert into store_info values('Boston','700','2020-12-08');


select * from location;
select * from store_Info

在这里插入图片描述

1、连接查询

  • 内连接 inner join: 只返回两个表中联结字段相等的行
  • 左连接 left join:返回包括左表中的所有记录和右表中联结字段相等的记录
  • 右连接 right join :返回包括右表中的所有记录和左表中联结字段相等的记录

内连接1 inner join

语法:select 字段 from 表名1 表别名1 inner join 表名2 表别名2 on 表别名1.联结字段 = 表别名2.联结字段; 

例:
select * from location A inner join store_info B on A.store_name = B.store_name ;

在这里插入图片描述

内连接2 inner join(using)函数

语法:select 字段 from 表名1 inner join 表名2 using(联结字段);

例:
select * from location inner join store_info using(store_name}; #必须保证要查询的交集字符字段名一样才可以

在这里插入图片描述

左连接 left join

语法:select 字段 from 表1 表别名1 left join 表2 表别名2 on 表别名1.联结字段1 = B.联结字段2 ;

例:
 select * from location A left join store_info B on A.store_name = B.store_name ;

在这里插入图片描述

右连接 right join

语法:select 字段 from 表1 表别名1 right join 表2 表别名2 on 表别名1.联结字段1 = 表别名2.联结字段2;

例:
select * from location A right join store_info B on A.store_name = B.store_name ;

在这里插入图片描述

多表查询

语法:
select 字段 from 表1,表2 where 表1.联结字段 = 表2.联结字段;

在这里插入图片描述

2、create view 视图

视图,可以被当作是虚拟表或存储查询

  • 视图跟表格的不同是,表格中有实际储存数据记录,而视图是建立在表格之上的一个架构,它本身并不实际储存数据记录。
  • 临时表在用户退出或同数据库的连接断开后就自动消失了,而视图不会消失。
  • 视图不含有数据,只存储它的定义,它的用途一般可以简化复杂的查询。比如你要对几个表进行连接查询,而且还要进行统计排序等操作,写SQL语句会很麻烦的,用视图将几个表联结起来,然后对这个视图进行查询操作,就和对一个表查询一样,很方便。
语法:create view "视图表名" AS "select 语句";

例子
create view v_aa AS select A.region region sum (B.sales) sales from location A inner join store_info B on A.store_name = B.store_name group by region;

在这里插入图片描述

3、union联集

将两个SQL语句的结果合并起来,两个SQL语句产生的字段需要是同样的资料种类

  • UNION:生成结果的资料值将没有重复,且按照字段的顺序进行排序。
语法:
select 语句1 union select 语句2;

在这里插入图片描述

  • union all:将生成结果的资料值都列出来,无论有无重复
语法:select 语句1 union all select 语句2;

在这里插入图片描述

4、交集值

取两个SQL语句结果的交集

在这里插入图片描述

  • 内连接查询

在这里插入图片描述

  • 左连接查询交集字符

在这里插入图片描述

  • 右连接查询交集字符

在这里插入图片描述

5、无交集值

显示第一个SQL语句的结果,且与第二个SQL语句没有交集的结果,还不能重复

在这里插入图片描述

  • 子查询无交集

在这里插入图片描述

  • 左连接查询无交集

在这里插入图片描述

-右连接查询无交集

在这里插入图片描述

六、case

是 SQL 用来做为 if-then-else之类逻辑的关键字

语法:
select case("字段名")
--> when "条件1" then "结果1"
--> when "条件2" then "结果2"
  ...
  [lese "结果N"]
  END
FROM "表名";

# "条件" 可以是一个数值或是公式。 ELSE 子句则并不是必须的。



例子:
select store_name, case store_name 
  when 'Los Angeles' then sales * 2 
  when 'Boston' then 2000
  else sales   end "New sales",date from store_Info;
 
#"New sales" 是用于 case那个字段的字段名。

在这里插入图片描述

七、空值(NULL) 和 无值(‘’) 的区别

  • 无值的长度为 0,不占用空间的;而 NULL 值的长度是 NULL,是占用空间的。
  • IS NULL 或者 IS NOT NULL,是用来判断字段是不是为 NULL 或者不是 NULL,不能查出是不是无值的。
  • 无值的判断使用='‘或者<>’'来处理。<> 代表不等于; !=也代表不等于。
  • 在通过 count()指定字段统计有多少行数时,如果遇到 NULL 值会自动忽略掉,遇到无值会加入到记录中进行计算。

(1)使用length函数查看字符的长度

  • null长度就为null

  • 字符1234的长度就为4

  • 空值的长度为0

select length(null), length('1234'), length('');

在这里插入图片描述

(2)查看表里面字符为null的行和不为null的行

语法:
select 字段 from 表名 where 字段 is null;
select 字段 from 表名 where 字段 is not null;
例:
select  *  from cs where name is null;
select  *  from cs where name is not null;

在这里插入图片描述

(3)查看空值的行和不为空值的行

语法:
select 字段 from 表名 where 字段 = '';
select 字段 from 表名 where 字段 != '';
select 字段 from 表名 where 字段 <> '';
例:
select * from cs where name = '';
select  * from cs where  name <> '';
select  * from cs where  name != '';

在这里插入图片描述
在这里插入图片描述

(4)统计所有的行数和忽略为null值的行

语法:
select count(*) from 表名;
select count(name) from 表名;
例子
select count(*) from cs;
select count(name) from cs;

在这里插入图片描述

正则表达式

匹配模式描述实例
^匹配文本的开始字符‘^bd’ 匹配以 bd 开头的字符串
$匹配文本的结束字符‘qn$’ 匹配以 qn 结尾的字符串
.匹配任何单个字符‘s.t’ 匹配任何 s 和 t 之间有一个字符的字符串
*匹配零个或多个在它前面的字符‘fo*t’ 匹配 t 前面有任意个 o
+匹配前面的字符 1 次或多次‘hom+’ 匹配以 ho 开头,后面至少一个m 的字符串
字符串匹配包含指定的字符串‘clo’ 匹配含有 clo 的字符串
p1 丨p2匹配 p1 或 p2‘bg丨fg’ 匹配 bg 或者 fg
[…]匹配字符集合中的任意一个字符‘[abc]’ 匹配 a 或者 b 或者 c
[^…]匹配不在括号中的任何字符‘[^ab]’ 匹配不包含 a 或者 b 的字符串
{n}匹配前面的字符串 n 次‘g{2}’ 匹配含有 2 个 g 的字符串
{n,m}匹配前面的字符串至少 n 次,至多m 次‘f{1,3}’ 匹配 f 最少 1 次,最多 3 次
语法:
select "字段" from "表名" where "字段" regexp {模式};

在这里插入图片描述

(1)匹配以es结尾的字符串的字段

select * from store_info where store_name regexp 'es$';

在这里插入图片描述

(2)匹配字符串里包含to的字段

select * from store_info where store_name regexp 'to';

在这里插入图片描述

(3)匹配字符串以A-G开头的字段

select * from store_info where store_name regexp '^[A-G]';

在这里插入图片描述

(4)匹配字符串以 HO | Bo 开头的字段

select * from store_info where store_name regexp 'Ho|Bo';

在这里插入图片描述

MySQL存储过程

存储过程的概念

  • 存储过程是一组为了完成特定功能的SQL语句集合。

  • 存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时,只需要调用它即可。存储过程在执行上比传统SQL速度更快、执行效率更高。

存储过程的优点

  • 执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率
  • SQL语句加上控制语句的集合,灵活性高
  • 在服务器端存储,客户端调用时,降低网络负载
  • 可多次重复被调用,可随时修改,不影响客户端调用
  • 可完成所有的数据库操作,也可控制数据库的信息访问权限

创建存储过程

语法:
delimiter $$							#将语句的结束符号从分号;临时改为两个$$(可以是自定义)
create procedure cs()					#创建存储过程,过程名为Proc,不带参数
-> begin								#过程体以关键字 begin开始
-> select * from store_info;			#过程体语句
-> end $$								#过程体以关键字 end 结束
delimiter ;								#将语句的结束符号恢复为分号


##调用存储过程##
call cs;

在这里插入图片描述

查看存储过程

在这里插入图片描述
在这里插入图片描述

存储过程的参数

  • IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
  • OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
  • INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

in

在这里插入图片描述
在这里插入图片描述

out

在这里插入图片描述
在这里插入图片描述

inout

在这里插入图片描述
在这里插入图片描述

删除存储过程

  • 存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。如果要修改存储过程的名称,可以先删除原存储过程,再以不同的命名创建新的存储过程。
语法:
DROP PROCEDURE IF EXISTS Proc;		#仅当存在时删除,不添加 IF EXISTS 时,如果指定的过程不存在,则产生一个错误

在这里插入图片描述

存储过程的控制语句

  • if
  • while

if:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

while:

(2)循环语句while ···· end while
DELIMITER $$  
CREATE PROCEDURE proc3()
-> begin 
-> declare var int(10);  
-> set var=0;  
-> while var<6 do  
-> insert into t values(var);  
-> set var=var+1;  
-> end while;  
-> end $$  

DELIMITER ;

CALL Proc3;

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

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

相关文章

DINDIEN

DIEN模型 DIN存在的问题&#xff1a; DIN引入了attention机制来通过用户历史行为数据对用户兴趣进行建模&#xff0c;而缺乏对具体行为背后的序列信息或者说依赖关系进行专门的建模&#xff0c;也就是没法捕捉到用户的兴趣变化过程。 DIEN的改动&#xff1a; 这个模型既然是…

为什么黑客不黑/攻击赌博网站?

攻击了&#xff0c;只是你不知道而已&#xff01; 同样&#xff0c;对方也不会通知你&#xff0c;告诉你他黑了赌博网站。 攻击赌博网站的不一定是正义的黑客&#xff0c;也可能是因赌博输钱而误入歧途的法外狂徒。之前看过一个警方破获的真实案件&#xff1a;28岁小伙因赌博…

Vue3 组合式 API

前言 传统的组件随着业务复杂度越来越高&#xff0c;代码量会不断的加大&#xff0c;整个代码逻辑都不易阅读和理解。Vue3 使用组合式 API 的地方为 setup。在 setup 中&#xff0c;我们可以按逻辑关注点对部分代码进行分组&#xff0c;然后提取逻辑片段并与其他组件共享代码。…

【FFmpeg实战】编解码 AVCodec

转载自&#xff1a;https://www.cnblogs.com/wangyaoguo/p/8192273.html FFmpeg编解码 FFmpeg支持绝大多数视频编解码格式&#xff0c;如何遍历FFmpeg编解码器&#xff1f; 编解码器以链表形式存储&#xff0c;使用av_codec_next() 函数可以获取编解码器指针&#xff0c;当参数…

【YOLO】yolov5训练自己的数据集

文章目录 0 前期教程1 前言2 准备数据集2.1 数据集来源2.2 数据集结构介绍2.3 标签格式的转换 3 训练以及训练结果3.1 训练3.2 测试 4 数据标注5 后续教程 0 前期教程 【Python】朴实无华的yolov5环境配置 1 前言 上面前期教程中&#xff0c;大致介绍了yolov5开发环境的配置方…

Windows 10 安装 Redis

安装 Redis 1&#xff1a;下载 下载 Windows 版本的 Redis&#xff0c;点击这里 下载redis 2&#xff1a;解压 解压下载的 zip 包到任意目录&#xff0c;如我的目录&#xff1a; 3&#xff1a;启动 命令行进入刚才解压文件的根目录下&#xff0c;然后执行如下命令即可&a…

跌倒检测 关节点角度数学计算

参考&#xff1a; https://github.com/GitGudwl/MediapipePoseEstimationForFallDetection/tree/main https://blog.csdn.net/weixin_45824067/article/details/130646962 1、mediapipe 根据关节点角度计算 1、11与12取中间点&#xff0c;记为center_up; 23 与24取中间点记为c…

为什么自学Python会从入门到放弃?

前言 Python现在非常火&#xff0c;语法简单而且功能强大&#xff0c;很多同学都想学Python&#xff01;所以蛋糕给各位看官们准备了高价值Python学习视频教程及相关电子版书籍&#xff0c;欢迎前来领取&#xff01; 下面小编与大家分享一下自学Python的人&#xff0c;放弃的…

【unity造轮子】Unity ShaderGraph使用教程与各种特效案例(持续更新)

文章目录 一、前言二、ShaderGraph1.什么是ShaderGraph2.在使用ShaderGraph时需要注意以下几点&#xff1a;3.优势4.项目 三、实例效果外发光进阶&#xff1a;带方向的菲涅尔边缘光效果裁剪进阶 带边缘色的裁剪溶解进阶 带边缘色溶解卡通阴影水波纹积雪效果不锈钢效果UV抖动水波…

使用编码工具

本文主要介绍了对句子编码的过程&#xff0c;以及如何使用PyTorch中自带的编码工具&#xff0c;包括基本编码encode()、增强编码encode_plus()和批量编码batch_encode_plus()。 一.对一个句子编码例子 假设想在要对句子’the quick brown fox jumps over a lazy dog’进行编码…

【K8S系列】深入解析K8S存储

序言 做一件事并不难&#xff0c;难的是在于坚持。坚持一下也不难&#xff0c;难的是坚持到底。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用来标记二级论点 Kubernetes (k8s) 是一…

ppp协议,一文带你了解

一、PPP协议简介 PPP&#xff08;Point-to-Point Protocol&#xff09;是一种数据链路层协议&#xff0c;用于在两个节点之间建立点对点的数据通信连接。PPP协议是TCP/IP协议族中的一员&#xff0c;它可以在串行通信线路上传输IP数据包&#xff0c;支持多种网络层协议&#xff…

C++ Primer 第11章关联容器

11.1 使用关联容器 map类型通常被常被称为关联数组。关联数组与正常数组类似&#xff0c;不同之处在于其下标不必是整数set就是关键字的简单集合&#xff0c;当想知道一个值是否存在时&#xff0c;set是最有用的 使用map #include<iostream> #include<string> #…

智慧水务物联网数据采集平台和营收管理平台建设

平台概述 智慧水务物联网数据采集平台是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心&#xff0c;以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧运维等产品体系为支撑&#xff0c;以城市水资源、水生…

MySQL - 第10节 - MySQL索引特性

1.索引的概念 索引的概念&#xff1a; • 数据库表中存储的数据都是以记录为单位的&#xff0c;如果在查询数据时直接一条条遍历表中的数据记录&#xff0c;那么查询的时间复杂度将会是O(N)。 • 索引的价值在于提高海量数据的检索速度&#xff0c;只要执行了正确的创建索引的操…

B049-cms04-浏览次数 富文本 轮播图 上传

目录 浏览次数页面加载发送请求后台处理请求前台展示 展示日期富文本编辑static下引入富文本资源文件夹模态框文本域替换成如下内容底部引入相关文件调整模态框样式把富文本选项移到模态框前面上传表情或图片等富文本添加操作手动清空富文本编辑器内容修改操作手动回显富文本编…

postman接口测试—Restful接口开发与测试

开发完接口&#xff0c;接下来我们需要对我们开发的接口进行测试。接口测试的方法比较多&#xff0c;使用接口工具或者Python来测试都可以&#xff0c;工具方面比如之前我们学习过的Postman或者Jmeter &#xff0c;Python脚本测试可以使用Requests unittest来测试。 测试思路…

抖音短视频矩阵系统源码:技术开发与实践

目录 一.短视频账号矩阵管理系统囊括的技术 1.开发必备的开发文档说明&#xff1a; 二.技术文档分享&#xff1a; 1.底层框架系统架构&#xff1a; 2.数据库接口设计 1.技术开发必备的开发文档说明&#xff1a; 1.1系统架构&#xff1a; 抖音SEO排名系统主要由以下几个模…

PHP 对PDF文件实现数字签名

PHP通过TCPDF库对生成的PDF文件进行数字签名。 效果如下&#xff1a; 这个是因为签名证书不在可信任证书列表中。 目录 准备数字证书 1.申请数字证书 2.自签名证书 安装TCPDF 证书签名 设置证书路径 设置证书信息 设置文档签名 设置签名外观 图像签名外观 空签名外观…

git使用命令技巧

文章目录 前言查看提交用户名更改提交用户名查看文件的diff查看提交记录Git 本地分支管理查看、切换、创建和删除分支 前言 我们在使用git的时候&#xff0c;提交后会看到如下记录&#xff1a; 经常会遇到提交后&#xff0c;这个作者的名字和自己设置的名字不一致&#xff0…