目录
sql
语句中 like
的用法
%
:表示包含零个或多个字符的任意字符串
-
like'Mc%'
:将搜索以字母Mc
开头的所有字符串,如McBadden
-
like'%inger'
:将搜索以字母inger
结尾的所有字符串,如Ringer
、Stringer
-
like'%en%'
:将搜索在任何位置包含字母en
的所有字符串,如Bennet、Green、McBadden
_
:表示任意单个字符
-
like'_heryl'
将搜索以字母heryl
结尾的所有二十六个字母的名称,如Cheryl、Sheryl
*
:表示多个字符
-
c*c
代表cc,cBc,cbc,cabdfec
等多个字符
?
:代表单个字符
-
b?b
代表brb,bFb
等
sql
语句中的 limit
用法
当 limit
有一个参数值时
-- limit 只有一个参数值,会将表中的前三条数据查询出来
select * from product limit 3;
当 limit
有两个参数值时
-- 第一个参数表示从第几行数据开始查,第二个参数表示查几条数据
-- limit 3,2 表示从第四行数据开始,取两条数据
select * from product limit 3, 2;
union
与 union all
union
用于把多个 select
语句的结果组合到一个结果集合中
select column,......from table1
union 或者 union all
select column,...... from table2
union
与 union all
区别
- 当使用
union
时,mysql
会把结果集中重复的记录过滤掉 - 使用
union all
时mysql
会把所有的记录返回,且效率高于union
union
子句中使用 order by
子句中使用 ORDER BY
,即将 SELECT
子句的结果先排序,然后再把这些子句查询的结果进行组合。在子句中使用 ORDER BY
,由于优先级问题,需要将整个子句加圆括号()
,且必须与 LIMIT
结合使用
(SELECT aid,title FROM article ORDER BY aid DESC LIMIT 10)
UNION ALL
(SELECT bid,title FROM blog ORDER BY bid DESC LIMIT 10)
union
整句中使用 order by
如果想使用 ORDER BY
或 LIMIT
来对全部 UNION
结果进行分类或限制,则应对单个 SELECT
语句加圆括号,并把 ORDER BY
或 LIMIT
放到最后一个的后面
(SELECT aid,title FROM article)
UNION ALL
(SELECT bid,title FROM blog) ORDER BY aid DESC
uniion
使用 limit
UNION
中使用 LIMIT
用于限制返回的记录条数,如果对 SELECT
子句做限制,需要对 SELECT
添加圆括号
(SELECT aid,title FROM article LIMIT 2)
UNION ALL
(SELECT bid,title FROM blog LIMIT 2)
当需要对整个 UNION
的结果进行 LIMIT
限制时,建议将各个 SELECT
语句用圆括号括起来
(SELECT aid,title FROM article)
UNION ALL
(SELECT bid,title FROM blog)
LIMIT 2
自增主键与 UUID
主键或雪花 id
的区别
UUID
主键或雪花 id
优点
- 能确保唯一,绝对不会重复
- 可以在
Java
应用层中生成,提高数据库的吞吐量 - 安全性较高
缺点
- 它占用的存储空间比自增主键要大一倍
- 在大数据量的查询,插入时,比起自增主键,它会大大降低效率
自增主键
优点
- 存储空间很小
- 性能较好
- 适合大量数据中的插入和更新操作
缺点
- 安全性较低,因为是有规律的,能被非法获取
- 如果数据量特别大,可能会超出自增长的取值范围
区别
- 当查询,插入数据量是上百万时,自增主键的效率远远大于
uuid
主键 - 在存储上面,自增主键所占的存储空间是
uuid
主键的一半
二者使用场景
- 项目是分布式的,并且数据量达到千万级别可更高时,对速度和存储有要求时,可以用自增长主键
- 项目是单机的,并且数据量比较大(百万级)时,用自增长主键的,此时最好能考虑下安全性,做些安全措施
- 项目是单机版,并且数据量没那么大,对速度和存储要求不高时,用
UUID
主键