Run Run Run

article/2025/9/18 12:04:24

学习了 2022 年集训队论文 《浅谈与 Lyndon 理论有关的字符串组合问题》
写得很好,像我这样的字符串小白也能看懂

Lyndon 分解

  • 若字符串 w w w 小于它的每一个真后缀,则称 w w w 是 Lyndon 串。
  • 若字符串 w w w 是 Lyndon 串,则 w k w ′ w^kw' wkw 是近似 Lyndon 串,其中 w ′ w' w w w w 的前缀。

w w w 可以分解位 w 1 c 1 … w k c k w_1^{c_1}\dots w_{k}^{c_k} w1c1wkck,其中 w 1 > ⋯ > w k w_1>\dots>w_k w1>>wk

最小后缀族:对于串 w w w 的后缀 w ′ w' w,若存在 u u u 使得任意后缀 w ′ ′ w'' w 满足 w ′ u < w ′ ′ u w'u<w''u wu<wu,则 w ′ w' w w w w 的一个有效后缀,有效后缀的集合称为 w w w 的最小后缀族,记为 S S ( w ) SS(w) SS(w)

  • u 2 v , u v , v u^2v,uv,v u2v,uv,v 都是 w w w 的后缀,则 u v uv uv 不是有效后缀。
  • u , v ∈ S S ( w ) , ∣ u ∣ < ∣ v ∣ u,v\in SS(w),|u|<|v| u,vSS(w),u<v,则 u u u v v v b o r d e r border border,且 2 ∣ u ∣ ≤ ∣ v ∣ 2|u|\le |v| 2uv
  • 有效后缀形如 s i = w i c i … w k c k s_i=w_i^{c_i}\dots w_k^{c_k} si=wiciwkck
  • s i + 1 s_{i+1} si+1 s i s_i si 的前缀的充要条件是 i ≤ λ i\le \lambda iλ,其中 s λ s_{\lambda} sλ 是对 w w w 进行 Duval 算法时第一次比较完字符串末尾时的近似 Lyndon 后缀。(因为 w i x s i + 1 w_i^xs_{i+1} wixsi+1 是近似 Lyndon 后缀,所以 s i + 1 s_{i+1} si+1 w i w_{i} wi 的前缀)

后接 v v v 的最小后缀:

  • 给定 w , v w,v w,v,求 w w w 的后缀 u u u,使得 u v uv uv 最小,记为 M i n s u f ( w , v ) Minsuf(w, v) Minsuf(w,v)

由于 u u u s λ , … , s k s_{\lambda},\dots,s_k sλ,,sk 之一,另 w i = s i + 1 + y i w_i=s_{i+1}+y_i wi=si+1+yi x i = y i + s i + 1 x_i=y_i+s_{i+1} xi=yi+si+1,则有 s i = s i + 1 + x i c i s_i=s_{i+1}+x_i^{c_i} si=si+1+xici

  • ∀ i ∈ [ λ , k − 1 ] , y i > x i + 1 ∞ \forall i\in [\lambda,k-1],y_i>x_{i+1}^{\infty} i[λ,k1],yi>xi+1,即证 s i + 1 y i > s i + 1 x i + 1 ∞ s_{i+1}y_i>s_{i+1}x_{i+1}^{\infty} si+1yi>si+1xi+1,即 w i > w i + 1 ∞ s i + 2 w_i>w_{i+1}^{\infty}s_{i+2} wi>wi+1si+2,又有 w i > w i + 1 ∞ w_i>w_{i+1}^{\infty} wi>wi+1
  • ∀ i ∈ [ λ , k − 1 ] , x i ∞ > x i + 1 ∞ \forall i\in [\lambda,k-1],x_i^{\infty}>x_{i+1}^{\infty} i[λ,k1],xi>xi+1

考虑比较 s i v s_iv siv s i + 1 v s_{i+1}v si+1v 的大小,发现这等价与比较 x i c i v x_i^{c_i}v xiciv v v v 的大小,这等价于比较 x i ∞ x_i^{\infty} xi v v v 的大小,故可以二分找到一个 i i i 使得 x i ∞ > v > x i + 1 ∞ x_i^{\infty}>v>x_{i+1}^{\infty} xi>v>xi+1,此时 M i n s u f ( w , v ) = s i + 1 v Minsuf(w,v)=s_{i+1}v Minsuf(w,v)=si+1v

例:JSOI 2019 节日庆典,求每个前缀的最小表示。
线性做法:考虑当前串可以表示成 u w k w ′ uw^kw' uwkw,那么只需要考虑最小表示开头为 w k w ′ w^kw' wkw 或开头在 w ′ w' w 里面的情况,在 w ′ w' w 里面时发现去掉最后 ∣ w ∣ |w| w 个字符即为 u w k − 1 w ′ uw^{k-1}w' uwk1w 的循环表示,是之前已经求出的答案。

Runs

Runs 的定义和 Runs 定理

定义:本源串, k k k 次方串,平方串,本源 k k k 次方串。
Runs:对于字符串 S S S,若其一个子串 S [ i , j ] S[i,j] S[i,j] 具有最小周期 p p p,满足 2 p ≤ j − i + 1 2p\le j-i+1 2pji+1,且 S i − 1 ≠ S i + p − 1 , S j + 1 ≠ S j + 1 − p S_{i-1}\neq S_{i+p-1},S_{j+1}\neq S_{j+1-p} Si1=Si+p1Sj+1=Sj+1p,则 r = ( i , j , p ) r=(i,j,p) r=(i,j,p) 构成 S S S 的一个 run, e r = j − i + 1 p e_r=\frac{j-i+1}{p} er=pji+1 为它的指数, S S S 的所有 runs 的集合记为 R u n s ( S ) Runs(S) Runs(S)
Runs 为研究幂串结构提供了方法,容易发现我们定义的 runs 满足 run 里面至少有一个平方串。

  • 周期相同的两个 runs 的交长度 < p <p <p
  • 任何一个 run r = ( i , j , p ) r=(i,j,p) r=(i,j,p) 可以导出 j − i + 1 − 2 p j-i+1-2p ji+12p 个本源平方串,每个本源平方串由唯一一个 run 导出

下面,我们将证明两个重要的命题:
Runs 定理:记 ρ ( n ) \rho(n) ρ(n) σ ( n ) \sigma(n) σ(n) 表示长为 n n n 的串的 runs 个数以及 runs 指数和的最大值,有 ρ ( n ) < n , σ ( n ) < 3 n \rho(n)<n,\sigma(n)<3n ρ(n)<n,σ(n)<3n

< 0 , < 1 <_0,<_1 <0,<1 为字符集上两种相反的序。

  • 定义 Lyndon 根:对于一个 run r = ( i , j , p ) r=(i,j,p) r=(i,j,p),若在字典序 < < < 下其长为 p p p 的子串 S [ u , u + p − 1 ] S[u,u+p-1] S[u,u+p1] 为 Lyndon 串,则称 S [ u , u + p − 1 ] S[u,u+p-1] S[u,u+p1] r r r 关于 < < < 的一个 Lyndon 根。
  • 定义 Lyndon 数组:定义 l t ( i ) l_t(i) lt(i) 表示在 < t <_t <t 下左端点为 i i i 的最长 Lyndon 串的右端点,将 l t ( i ) l_t(i) lt(i) 成为 S S S 的 Lyndon 数组。
  • 性质 l 0 ( i ) , l 1 ( i ) l_0(i),l_1(i) l0(i),l1(i) 恰有一个为 i i i,证明略。
  • 性质:对于 run r = ( i , j , p ) r=(i,j,p) r=(i,j,p),设 S j + 1 < t S j + 1 − p S_{j+1}<_tS_{j+1-p} Sj+1<tSj+1p,那么其任意 Lyndon 根 S [ u , u + p − 1 ] S[u,u+p-1] S[u,u+p1] l t ( u ) = u + p − 1 l_t(u)=u+p-1 lt(u)=u+p1。证明:对于 S [ u , v ] , u + p − 1 < v ≤ j S[u,v],u+p-1<v\le j S[u,v],u+p1<vj 满足其为 w k w ′ w^kw' wkw,对于 v > j v>j v>j 显然不是 Lyndon 串。
  • 定义 Lyndon 根:若 run r = ( i , j , p ) r=(i,j,p) r=(i,j,p) 的 Lyndon 根 S [ u , u + p − 1 ] S[u,u+p-1] S[u,u+p1] 满足 u > i u>i u>i,那么其为真 Lyndon 根。
  • 性质 S [ u , l 0 ( u ) ] , S [ u , l 1 ( u ) ] S[u,l_0(u)],S[u,l_1(u)] S[u,l0(u)],S[u,l1(u)] 不可能同时为两个 run 的 Lyndon 根。证明:设 l 0 ( u ) = u l_0(u)=u l0(u)=u,则有 S u = S u − 1 + S u + p − 1 = S l 1 ( u ) S_u=S_{u-1}+S_{u+p-1}=S_{l_1(u)} Su=Su1+Su+p1=Sl1(u),故 S [ u , l 1 ( u ) ] S[u,l_1(u)] S[u,l1(u)] 不是 Lyndon 串。
  • 性质:任意两个不同的 run 的真 Lyndon 根左端点集合不交。(由上一条得到)

B ( r ) B(r) B(r) 表示 run r r r 所有真 Lyndon 根的左端点集合,有任意 B ( r 1 ) ∩ B ( r 2 ) = ∅ B(r_1)\cap B(r_2)=\empty B(r1)B(r2)=,所以 ∑ r ∣ B ( r ) ∣ ≤ n − 1 \sum_r |B(r)|\le n-1 rB(r)n1,又 B ( r ) ≥ 1 B(r)\ge 1 B(r)1,故 ∣ R u n s ( S ) ∣ ≤ n − 1 |Runs(S)|\le n-1 Runs(S)n1
r = ( i , j , p ) r=(i,j,p) r=(i,j,p) 循环了 x x x 次,则真 Lyndon 根至少有 x − 1 x-1 x1 个,故 ∣ B ( r ) ∣ > e r − 2 |B(r)|>e_r-2 B(r)>er2 ∑ r ( e r − 2 ) ≤ n − 1 \sum_r(e_r-2)\le n-1 r(er2)n1,故 ∑ r e r < 3 n \sum_r e_r<3n rer<3n

Runs 的求解方法

算法 1:枚举周期 p p p,用 NOI2016 优秀的拆分的做法解决。
算法 2:由于 runs 的 Lyndon 根一定形如 S [ i , l t ( i ) ] S[i,l_t(i)] S[i,lt(i)],所以先求出 Lyndon 数组再进行扩展即可。求 Lyndon 数组可以考虑一种从后向前构造 Lyndon 分解的方法,即从后往前扫,维护一个单调栈,每次加入一个字符,检查能不能和栈顶的串合并。

幂串的结构

  • 性质:若 u 2 , v 2 , w 2 u^2,v^2,w^2 u2,v2,w2 是本源平方串,且 u 2 u^2 u2 v 2 v^2 v2 的前缀, v 2 v^2 v2 w 2 w^2 w2 的前缀,则 ∣ w ∣ ≥ ∣ u ∣ + ∣ v ∣ |w|\ge |u|+|v| wu+v

于是我们有结论:串 w w w 的本源平方前缀个数为 O ( log ⁡ ∣ w ∣ ) O(\log |w|) O(logw) 个。
w w w 的本源平方串个数为 O ( ∣ w ∣ log ⁡ ∣ w ∣ ) O(|w|\log |w|) O(wlogw) 个,于是也有 ∑ r ( j − i + 1 − 2 p ) \sum_r (j-i+1-2p) rji+12p) O ( ∣ w ∣ log ⁡ ∣ w ∣ ) O(|w|\log |w|) O(wlogw)

  • 性质:字符串 w w w 的本质不同本源平方串个数为 O ( ∣ w ∣ ) O(|w|) O(w)。证明:考虑最后一次出现位置,假设一个左端点有 3 个 u , v , w u,v,w u,v,w,则有 2 ∣ u ∣ ≤ ∣ w ∣ 2|u|\le |w| 2uw,那么 u 2 u^2 u2 不是最后一次出现。

:ZJOI 2020 字符串,区间询问本质不同平方串。

  • 先忽略本质不同,考虑 run r = ( i , j , p ) r=(i,j,p) r=(i,j,p),其每个 S [ l , l + 2 k p − 1 ] S[l,l+2kp-1] S[l,l+2kp1] 都可以作为一个贡献。将 ( l , l + 2 k p − 1 ) (l,l+2kp-1) (l,l+2kp1) 看作一个点,那么对于一个 k k k,我们可以将操作看成斜线加,加的次数是 ∑ r j − i + 1 p \sum_r \frac{j-i+1}{p} rpji+1,其为 O ( n ) O(n) O(n)
    下面考虑本质不同,对于两个相同子串 S [ i , i + 2 p − 1 ] , S [ j , j + 2 p − 1 ] S[i,i+2p-1],S[j,j+2p-1] S[i,i+2p1],S[j,j+2p1],我们在 ( i , j + 2 p − 1 ) (i,j+2p-1) (i,j+2p1) 放一个权值为 − 1 -1 1 的点即可。在一个 run 里面的同样只需要枚举 k k k 然后斜线减,否则就是和前面一个 run 里面的相同。从做到右扫 runs,我们只关注 run 里面第一次出现的平方串,容易发现其个数为 ∑ r ( j − i + 1 − 2 p ) ∼ O ( n log ⁡ n ) \sum_r (j-i+1-2p)\sim O(n\log n) r(ji+12p)O(nlogn),故直接使用 hash,然后在平面上会添加 O ( n log ⁡ n ) O(n\log n) O(nlogn) 个点。时间复杂度 O ( n log ⁡ 2 n + q log ⁡ n ) O(n\log^2 n+q\log n) O(nlog2n+qlogn)

Lyndon 树

对于一个 Lyndon 串 w w w,我们可以得到一个 2 ∣ w ∣ − 1 2|w|-1 2w1 个结点的二叉树,每个结点代表一个子串(且也为 Lyndon 串),构建的方法为找到 w = u + v w=u+v w=u+v,其中 v v v w w w 的最小后缀,然后 u , v u,v u,v w w w 的两个儿子。

构建方法:从后向前,维护 [ i + 1 , n ] [i+1,n] [i+1,n] 组成的森林(每一个子树是一个 Lyndon 串),加入当前字符 S i S_i Si,会合并栈顶的一些 Lyndon 串,将这些点串起来即可。

  • 性质:以 i i i 为左端点的最长 Lyndon 子串对应 Lyndon 树中以 i i i 为左端点的最大子树。(证明:建树的过程和求 Lyndon 数组相同)

  • 性质:若 S [ l , r ] S[l,r] S[l,r] 是 Lyndon 串,则 l , … , r l,\dots,r l,,r 的 LCA 的子树的左端点为 l l l

区间短周期查询:每次查询 S [ l , r ] S[l,r] S[l,r] 的最小周期,若最小周期大于一半则不用输出。

  • 这等价与查询是否有一个包含 [ l , r ] [l,r] [l,r] 且周期不超过 r − l + 1 2 \frac{r-l+1}{2} 2rl+1 的 run。
    < 0 , < 1 <_0,<_1 <0,<1 两种比较关系建 Lyndon 树,分别求出 l , … , ⌈ l + r 2 ⌉ l,\dots,\lceil \frac{l+r}{2}\rceil l,,2l+r 的 LCA,检查以其右子树为 Lyndon 根的 runs。
    证明:我们只需要找到一个包含 m m m 的 Lyndon 根。 LCA 的右子树 x x x 满足条件,若其不为答案的 runs r = ( i , j , p ) r=(i,j,p) r=(i,j,p),那么我们知道 x x x 的右端点大于 j j j,但是 S j + 1 < S j + 1 − p S_{j+1}<S_{j+1-p} Sj+1<Sj+1p,这与 x x x 的子树是 Lyndon 串矛盾。

Lyndon 串计数

  • w ^ \hat w w^ w w w 的最小表示,若 w ^ = w \hat w=w w^=w 则称 w w w 为 necklace。
  • 性质:每个 Lyndon 串都是 necklace,每个 necklace 可以写成 w k w^k wk 其中 w w w 是 Lyndon 串。

w ^ \hat w w^ 的求法:首先找到 u k = w u^k=w uk=w 然后求 u ^ \hat u u^,只需要对 u u uu uu 求 Lyndon 分解,然后找到最后一个在 [ 1 , ∣ u ∣ ] [1,|u|] [1,u] 中分解的地方 x x x,那么 u ^ = u [ x , ∣ u ∣ ] + u [ 1 , x − 1 ] \hat u=u[x,|u|]+u[1,x-1] u^=u[x,u]+u[1,x1]

求前驱 necklace:求长度等于 ∣ w ∣ |w| w 字典序 ≤ w \le w w 的最大的 necklace。记作 P L ( w ) PL(w) PL(w)

  • P L ( w ) PL(w) PL(w) 形如 P r e ( w , i − 1 ) + P ( w i ) + z ∣ w ∣ − i Pre(w,i-1)+P(w_i)+z^{|w|-i} Pre(w,i1)+P(wi)+zwi,其中 P ( c ) P(c) P(c) 表示比 c c c 小的最大字符,故我们有 ∣ w ∣ 2 |w|^2 w2 的做法,即每次判断是不是 necklace。
    考虑优化判断的过程,只需要判断 P r e ( w , i − 1 ) + P ( w i ) Pre(w,i-1)+P(w_i) Pre(w,i1)+P(wi) 是不是近似 Lyndon 串即可,用一次 Duval 算法就可以解决。

Lyndon 串计数:
P ( n ) , L ( n ) P(n),L(n) P(n),L(n) 表示本源串和 Lyndon 串的数量,有 L ( n ) = 1 n P ( n ) L(n)=\frac 1n P(n) L(n)=n1P(n),且 Σ n = ∑ d ∣ n P ( d ) \Sigma^n=\sum _{d\mid n}P(d) Σn=dnP(d),那么 L ( n ) = 1 n ∑ d ∣ n μ ( n d ) Σ d L(n)=\frac 1n \sum_{d\mid n}\mu(\frac nd)\Sigma^d L(n)=n1dnμ(dn)Σd

Lyndon 串排名:
P ( d ) , P ′ ( d ) P(d),P'(d) P(d),P(d) 表示满足 u ^ n / d ≤ w \hat u^{n/d}\le w u^n/dw 的任意串 u u u 的数量,以及本源串 u u u 的数量。
r a n k = 1 n P ′ ( n ) , P ( x ) = ∑ d ∣ x P ′ ( d ) → r a n k = 1 n ∑ d ∣ n μ ( n d ) × P ( d ) rank=\frac 1nP'(n),P(x)=\sum_{d\mid x}P'(d)\to rank=\frac 1n\sum_{d\mid n} \mu(\frac nd)\times P(d) rank=n1P(n),P(x)=dxP(d)rank=n1dnμ(dn)×P(d)
容易发现 P ( d ) P(d) P(d) 等价与 u ^ ≤ P r e ( w , d ) \hat u\le Pre(w,d) u^Pre(w,d) 的任意串数量。
识别自动机: KMP 的改版,当转移字符等于 w i w_i wi 时,到 i + 1 i+1 i+1,小于 w i w_i wi 时到 n n n,否则到 0。

  • 性质: w w w 是 necklace, u ^ ≤ w , ∣ u ∣ = ∣ w ∣ = n \hat u\le w,|u|=|w|=n u^w,u=w=n 当且仅当 u 2 u^{2} u2 中存在一个不为 w w w 真前缀的子串 v v v 满足 v ≤ w v\le w vw
  • 性质: 发现对于 necklace 的识别自动机,它和 KMP 自动机一样。

对于计算 P ( n ) P(n) P(n),我们只需要考虑不能转移到 n n n 的点有多少,我们会发现,考虑串 u ∞ u^{\infty} u 对于充分打大的 j j j j j j 转移到的点和 j + ∣ u ∣ j+|u| j+u 转移到的是一样的。
我们定义 j ∣ u ∣ j|u| ju 转移到的点 t t t 为这个串的起始点,现在就是要求环的数量。设 f j f_j fj 为长为 j j j 的环的数量,枚举第一个环 j j j,有 f i = ∑ j = 1 m i n ( n − 1 , i ) b j f i − j f_i=\sum_{j=1}^{min(n-1,i)} b_jf_{i-j} fi=j=1min(n1,i)bjfij,其中 b j b_j bj 表示从这个点转移到 0 的边数。容易发现可以使用多项式求逆来解决。于此同时,答案为 ∑ i = 1 n − 1 i × b i × f n − i \sum_{i=1}^{n-1} i\times b_i\times f_{n-i} i=1n1i×bi×fni。注意到也可以使用线性递推做到 O ( n log ⁡ n log ⁡ m ) O(n\log n\log m) O(nlognlogm) 的复杂度。


http://chatgpt.dhexx.cn/article/FqxPRVfk.shtml

相关文章

关于springboot在启动测试类时报错的问题和@RunWith的使用

【1】最重要的一点&#xff1a;测试类启动依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupI…

天呐!惊人的Springboot测试.Springboot测试类之@RunWith注解

Springboot测试类之@RunWith注解 Springboot测试类之@RunWith注解Springboot测试类之@RunWith注解 @runWith注解作用: @RunWith就是一个运行器@RunWith(JUnit4.class)就是指用JUnit4来运行@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境,以便在测试开…

SSM中使用测试类RunWith

RunWith(SpringJUnit4ClassRunner.class) 需要使用两个测试包 <!--测试包--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.2.7.RELEASE</version></dependency>…

@RunWith的使用

文章目录 RunWith作用RunWith(SpringJunit4ClassRunner.class) 使用说明测试ActiveProfiles("dev") RunWith作用 RunWith 就是一个运行器 RunWith(JUnit4.class) 就是指用JUnit4来运行 RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境 RunWit…

使用命令行创建文件夹和创建文件

进入到指定的目录之后&#xff0c;使用命令&#xff1a;mkdir可以创建新的目录&#xff0c;使用示例&#xff1a; 创建文件&#xff0c;可以使用命令touch&#xff0c;示例&#xff1a;

cmd命令窗口如何创建和删除文件、文件夹,写入内容到文件

首先&#xff0c;同时按住键盘 winR&#xff0c;调出运行窗口&#xff0c;如下图所示&#xff1a; 接下来&#xff0c; &#xff08;1&#xff09;创建文件夹。 使用【 md 文件名 或 mkdir 文件名 】来创建。 完整命令是 md 盘符:\路径\文件夹名&#xff0c;如下图所示&#x…

如何在指定文件夹打开cmd

方法一 1.进入指定的文件夹 &#xff0c;然后选中地址栏&#xff0c;并输入cmd&#xff0c;如下图所示&#xff1a;2.回车&#xff0c;就可以打开对应路径的cmd窗口了&#xff0c;如下图所示&#xff1a; 方法二 1.进入指定的文件夹&#xff0c;按住Shift建鼠标右键&#xff0…

shell、cmd创建文件软连接

&#xff08;一&#xff09;macos shell 一、软链接创建1、创建软链接 ln -s 【目标目录】 【软链接地址】 【目标目录】指软连接指向的目标目录下&#xff0c;【软链接地址】指 “快捷键” 文件名称&#xff0c;该文件是被指令创建的 软链接创建需要同级目录下没有同名的…

windows cmd命令行新建文件,编辑文件,删除文件命令

新建文件 type nul>文件名 编辑文件 copy con 文件名 开始编辑 CTRLz回车保存 删除文件 del 文件名

cmd批量创建文件和文件夹

生成文件夹或者文件 for /l %i in (2,1,10) do md D:\test\新建文件夹%i将上述语句复制到cmd执行即可,如果是批处理要将%i改为%%i,如果是文件&#xff0c;即是 for /l %i in (2,1,10) do cd.> D:\test\新建文件%i.txt学过一点python的应该知道&#xff0c;前面是一个循环语…

cmd命令:批量创建文件夹

for /l %i in (2,1,10) do md D:\test\新建文件夹%i如果是文件&#xff0c;即是 for /l %i in (2,1,10) do cd.> D:\test\新建文件%i.txt学过一点python的应该知道&#xff0c;前面是一个循环语句 &#xff08;2,1,10&#xff09;:编号为2~10&#xff0c;步长为1 md:即make…

使用cmd命令在桌面上新建一个文件夹,且在文件夹中新建一个.java文件,使用cmd命令实现.java文件的编译运行

标题使用cmd命令在桌面上新建一个文件夹&#xff0c;且在文件夹中新建一个.java文件,使用cmd命令实现.java文件的编译运行 1、在电脑桌面使用快捷键winr打开 2、打开cmd命令界面之后使用md desktop指令进入桌面 3、接下来就可以通过md指令在桌面新建一个SYY文件夹 4、然后…

MySQL语句 实验7 单表条件查询

实验7 单表条件查询 一、实验目的 (1) 掌握SELECT语句的基本用法。 (2) 使用WHERE子句进行有条件的查询。 (3) 掌握使用IN和NOT IN&#xff0c;BETWEEN…AND和NOT BETWEEN…AND来缩小查询范围的方法。 (4) 利用LIKE子句实现字符串匹配查询。 二、实验要求 1、学生提前准…

Mysql 条件查询(like、between、and、in······)

目录 Mysql 条件查询 示例 一、比较运算和逻辑运算符符 二、范围运算符 三、列表运算符 四、模糊匹配符 五、空值判断符 Mysql 条件查询 Mysql 条件查询即where子句后跟条件 运算符&#xff1a; 格式&#xff1a; select 字段 from 表名 where 条件; 示例 使用下表为…

Mysql条件查询语句(二)

一、between……and……操作符 1、查询薪水为1600到3000的员工(第一种方式:采用>= 、<=) 例如:select empno,ename,sal from emp where sal >= 1600 and sal <= 3000; 2、查询薪水为1600到3000的员式(第二种方式:采用between…and…) 例如:select em…

mysql条件查询出现or连接时会使用索引的场景

在做sql优化时&#xff0c;通常会避免使用or来进行条件连接&#xff0c;是因为大多数情况下or的条件连接会导致sql查询进行全表扫描而不会使用索引去查询。但并不是所有使用or的场景都会全表扫描&#xff0c;有些场景下使用or依旧会走索引去查询&#xff0c;下面举例说明。 表…

MySQL 流式查询

大数据量查询容易OOM&#xff1f;试试MySQL流式查询 一、前言 程序访问MySQL数据库时&#xff0c;当查询出来的数据量特别大时&#xff0c;数据库驱动把加载到的数据全部加载到内存里&#xff0c;就有可能会导致内存溢出&#xff08;OOM&#xff09;。其实在MySQL数据库中提供…

MySQL --- 数据库查询 - 条件查询

条件查询 我们知道从 MySQL 表中使用 SELECT 语句来查询数据&#xff0c;如需有条件地从表中选取数据&#xff0c;可将 WHERE 子句添加到 SELECT 语句中。 语法 SELECT 字段名 FROM 表名 WHERE 条件; 运算符表 BETWEEN 后面是最小值&#xff0c;AND 后面是最大值&#xff0c;…

Mysql条件查询json数据

前言 ❤Java学习路线个人总结-博客 ❤欢迎点赞&#x1f44d;收藏⭐留言 &#x1f4dd;分享给需要的小伙伴 1、Mysql数据库对应数据 2、查询条件 #模糊查询JSON select * from test where json_value->$.name LIKE %是% #不等于空 SELECT * FROM test WHERE json_value->…

MySQL条件查询简单汇总

条件查询语法&#xff1a; select 查询列表 from 表名 where 筛选条件; 分类&#xff1a; 一、按条件表达式筛选 条件运算符&#xff1a;> < ! <> > < 二、按逻辑表达式筛选 逻辑运算符…