千家信息网

MySQL数据库常用操作的示例分析

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,小编给大家分享一下MySQL数据库常用操作的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:一、查询不同表
千家信息网最后更新 2025年11月08日MySQL数据库常用操作的示例分析

小编给大家分享一下MySQL数据库常用操作的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

具体如下:

一、查询不同表中同名字段(表连接查询条件神器)

use information_schema;select * from columns where column_name='字段名';

二、查询记录总数

SELECT SQL_CALC_FOUND_ROWS * FROM TABLE WHERE 1=1;

即可得出总数据行数

SET @RowCount=found_rows();

三、存储过程数据查询分页

预定义变量:

/*错误代码*/SET @RetCode='1';/*错误提示*/SET @RetVal='1';/*返回记录行数*/SET @RowCount='0';/*页码*/SET @PageCount='0';/*每页显示数*/SET @CurrentItem=0;/*每页显示数*/SET @PageSize=arg_page_size;/*页码*/SET @PageCurrent=arg_page_current;SET @SqlExe='select * from table where 1=1';入参:arg_page_size int,arg_page_current intIF(@PageCurrent IS NOT NULL && @PageSize IS NOT NULL) THENSET @CurrentItem = (@PageCurrent-1)*@PageSize;SET @SqlExe=CONCAT(@SqlExe,'LIMIT ', @PageSize,' OFFSET ', @CurrentItem);ELSESET @SqlExe=CONCAT(@SqlExe,' ');END IF;prepare stmt from @SqlExe;execute stmt;deallocate prepare stmt;IF(@RowCount IS NOT NULL && @RowCount != 0) THENIF(@PageSize is null)thenSET @PageSize= @RowCount;END IF;SET @PageCount = ceiling(@RowCount/@PageSize);ELSESET @RowCount = 0;SET @PageCount = 1;END IF;

四、字符串相关操作

1、从左开始截取字符串

left(str, length)

说明:left(被截取字段,截取长度)

例:

select left(content,200)as abstract from my_content_t

2、从右开始截取字符串

right(str, length)

说明:right(被截取字段,截取长度)

例:

select right(content,200)as abstract from my_content_t

3、截取字符串

substring(str, pos)

substring(str, pos, length)

说明:

substring(被截取字段,从第几位开始截取)

substring(被截取字段,从第几位开始截取,截取长度)

例:

select substring(content,5)as abstract from my_content_tselect substring(content,5,200)as abstract from my_content_t

(注:如果位数是负数 如-5则是从后倒数位数,到字符串结束或截取的长度)

4、按关键字截取字符串

substring_index(str,delim,count)

说明:substring_index(被截取字段,关键字,关键字出现的次数)

例:

select substring_index("blog.csdn.net",".",2)as abstract from my_content_t

结果:

blog.csdn

(注:如果关键字出现的次数是负数 如-2 则是从后倒数,到字符串结束)

函数简介:

SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)

不带有len 参数的格式从字符串str返回一个子字符串,起始于位置pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置pos。 使用FROM的格式为标准SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos字符,而不是字符串的开头位置。在以下格式的函数中可以对pos使用一个负值。

MySQL字符串大小写转换

deMySQL 字符串大小写转化函数有两对: lower(), uppper()lcase(), ucase()

mysql>select lower('DDD');结果:dddmysql> select upper('ddd');结果:DDDmysql> select lcase('DDD');结果:dddmysql> select ucase('ddd');结果:DDD

通常情况下,我选择 lower(), upper() 来转换字符串大小写,因为这和其他数据库中函数相兼容。

五、时间获取相关操作

declare _LastWeekStartTime date; -- 上周开始时间declare _LastWeekEndTime date; -- 上周结束时间

-- 因系统为星期日为每星期第一天 所以需要减1

set @A = date_add(curdate(), interval -1 day);

-- 算出本周星期一的日期

set @B = subdate( @A,date_format(@A,'%w')-1);

-- 因系统为星期日为每星期第一天 所以需要 减2获取上星期最后一天(上星期星期六)

set @C = date_add(@B, interval -2 day);set _LastWeekStartTime = ( subdate( @C,date_format( @C,'%w')-1));set _LastWeekEndTime = ( date_add(subdate( @C,date_format( @C,'%w')-1), interval 6 day));

-- 获取当前日期是星期几 1为周日2为周一 以此类推

SET @nowdate=(select DAYOFWEEK(NOW()));SET @NowD=case @nowdatewhen 1 then '星期日'when 2 then '星期一'when 3 then '星期二'when 4 then '星期三'when 5 then '星期四'when 6 then '星期五'when 7 then '星期六'end;

-- 周日时间需要重新计算

if (DATE_FORMAT(CURDATE(),'%w')=0) thenSET @curmon=(SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')+6));SET @cursun=(SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')));else

-- 开始时间(周一)

SET @curmon=(SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-1));

-- 结束时间(周日)

SET @cursun=(SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-7));

六、排序技巧

CREATE TABLE test (id INT PRIMARY KEY not null auto_increment,val nvarchar (50) NOT NULL);INSERT INTO test(val) VALUES ('0');INSERT INTO test(val) VALUES ('1');INSERT INTO test(val) VALUES ('2');INSERT INTO test(val) VALUES ('3');SELECT * from test;-- 根据 id为 2 0 1 3的优先级自定义排序SELECT * FROM test ORDER BY instr('2013',id);-- 原理样例SET @ORDBYD='2013';SELECT '2',instr(@ORDBYD,'2') as `INDEX`unionSELECT '0',instr(@ORDBYD,'0') as `INDEX`unionSELECT '1',instr(@ORDBYD,'1') as `INDEX`unionSELECT '3',instr(@ORDBYD,'3') as `INDEX`;

instr函数(摘自百度百科instr函数语法)

instr( string1, string2, start_position,nth_appearance )

string1:源字符串,要在此字符串中查找。
string2:要在string1中查找的字符串 。
start_position:代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
nth_appearance:代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。

注意:

位置索引号从1开始。

如果String2在String1中没有找到,instr函数返回0。

示例:

SELECT instr('syranmo','s') FROM dual; -- 返回 1SELECT instr('syranmo','ra') FROM dual; -- 返回 3SELECT instr('syran mo','at',1,2) FROM dual; -- 返回 0

以上是"MySQL数据库常用操作的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

字符 字符串 星期 函数 字段 位置 参数 时间 数据 结果 长度 关键 关键字 格式 查询 数据库 示例 大小 篇文章 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 监控登陆服务器超时是什么意思 西安软件开发工作室 杭州项目软件开发正规平台 诺基亚6681软件开发 云南服务器回收多少钱 软件开发方向职业规划 想学软件开发推荐大学 威廉通做网站服务器 王者荣耀服务器注销了还显示 靠谱的纸箱吸塑一体软件开发商 深圳网势互联网科技有限公司 dayz进同一个服务器 网络技术工程 初级数据库和高级检索 软件开发工作职责和要求 密云区正规网络技术售后服务 蓝星专利数据库 APP软件开发软件公司 贵阳渗透靶场网络安全培训 三国杀创建公会数据库信息 北京图灵网络安全 千峰网络安全专业就业前景 数据库中什么叫字符集 监狱网络安全管理干嘛 儿童网络安全危害 甘肃戴尔服务器虚拟化解决方案 戴尔服务器新插入硬盘做raid 密云区正规网络技术售后服务 网络安全宣传周每天都发信息 大同软件开发行业标准
0