006-mysql 一些小技巧

mysql 一些小技巧

1、字符串连接

1)concat(str1,str2,…):返回结果为连接参数产生的字符串。
     注意:如果其中一个参数为 null,则整个返回结果为 null。

SELECT CONCAT(‘tom’,‘cat’) as name
结果:tomcat
SELECT CONCAT(‘tom’,‘cat’,null) as name
结果:null

2)concat_ws(separator,str1,str2,…):第一个参数是分隔符,返回结果是用分隔符分隔连接所有参数产生的字符串。
     注意:如果分隔符为 null,则整个返回结果为 null,其他参数为 null 时,结果中会忽略该参数。

》SELECT CONCAT_ws(’=’,‘tom’,‘cat’) as name
结果:tom=cat
》SELECT CONCAT_ws(’’,‘tom’,‘cat’) as name
结果:tomcat
》SELECT CONCAT_ws(null,‘tom’,‘cat’) as name
结果:null
》SELECT CONCAT_ws(’=’,‘tom’,null,‘kitty’) as name
结果:tom=kitty

3)group_concat(col,separator):按分组连接字段值。默认按逗号分隔。

SELECT name,group_concat(id) ids FROM user group by name;
SELECT name,group_concat(id separator ‘;’) ids FROM user group by name;

2、length 和 char_length

length(col):字段的大小(字节数)。
char_length(col):字段值的长度(字符个数)。
————————————————————————
对于 oracle
lengthb(string):计算string所占的字节长度;返回字符串的长度,单位是字节
length(string):计算string所占的字符长度;返回字符串的长度,单位是字符
注:
对于单字节字符,LENGTHB 和 LENGTH 是一样的。所以可以用length(‘string’)=lengthb(‘string’)判断字符串是否含有中文。
一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为三。
select lengthb(‘人’) from dual ;可查询汉字在 Oracle 数据库里占多少字节
————————————————————————
对于 postgresql
https://yq.aliyun.com/articles/241195
length()、char_length():计算字符串字符长度
select ' 人 ' as name,length(' 人 ') as len from dual ;
select ' 人 ' as name,char_length(' 人 ') as len from dual ;
octet_length():计算字符串大小
select ' 人 ' as name,octet_length(' 人 ') as len from dual ;

3、select 直接打印

select ‘tomcat’;
select ‘tomcat’ as name;
SELECT now();

4、mysql 中的加号(+)

mysql 中的加号只有一个作用,就是算术运算符。
1)加号运算符执行前,会试图将不是数值的转换成数值,如果不能直接转换,则被转换的对象直接使用 0 代替。
如:select ‘tom’ + 3;
结果为:3
2)如果加号连接的一方为 null,则整个运算的结果也为 null。
如:select null + 5;
结果为:null

5、escape 转义

在 like 语句中,%(任意个字符) 和 _(单个字符)是通配符。
下面有这样一个场景:
如果在查询字段中包含 % 或 _,而查询条件需要使用 % 或 _ 去作为匹配条件,而不是作为通配符使用,则这时需要将 % 和 _ 进行转义。

# 法一:使用斜杠 \ 进行转义
select name from user where like '\%kit%';
# 结果为:%kitty

# 法二:使用 escape 指定转义符
select name from user where like '$%kit%' escape '$';
# 这里 $ 就作为转义(可以为任何字符,不仅仅是$,如 a)。
select name from user where like 'a%kit%' escape 'a';

6、between … and …

包含边界值。

7、索引起始值

所有 sql 中,索引值都是从 1 开始的。

8、数据导入导出

命令导出
mysqldump -uroot -p123456 dbname tablename > test.sql
命令导入
mysql -uroot -p123456 dbname < test.sql
【xtrabackup 性能更高】

9、sql 优化

定位:
1)查看日志(通过 show variables like ‘%slow%’ 找到日志)
2)explain sql语句
3)profile
【注意】
测试 sql 速度,应先关闭 sql 缓存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值