Mysql
文章平均质量分 51
DanceDonkey
这个作者很懒,什么都没留下…
展开
-
mysql将某一列的数据根据固定字符拆分后判断存不存在
如果是0,则说明在开头匹配到了1157这个字符串,此时需要根据1157这个字符串的长度去找这个长度 + 1 在大字符中下标处的字符,例如1157的长度是4,4+1 = 5,则需要在大字符串中找下标为5的字符,结果11574这个字符串下标为5的字符是4,这样就不对了,因为如果是个独立的1157,下标为5的这个位置必须是一个逗号,。如果不是0,这个时候需要判断前一位的下标是不是逗号,以及长度+1位的下标是不是逗号(当然不排除子字符串恰好处于末尾的情况)。如果不相等,则需要判断返回的结果是不是0。原创 2023-07-12 15:50:34 · 693 阅读 · 0 评论 -
MySql Order by 字段出现重复导致 limit 分页后的数据错乱
所以此时的解决办法有2个,一个是order by 后面根据一个唯一的列去排序,如果还是优先想根据重复的列去排序,则可以使用多列排序。当使用mysql 进行分页查询出现数据不一致问题时候 可以看看order by 后面列数据是否有重复值。说明当order by 列中有重复值的时候,mysql server 会看自己心情随机处理返回结果。但是加了limit以后就出现问题了,原本以为是截取的前10条,结果出现了数据错乱的情况。共有28条数据,确实是按照event_time排序的。在官方文档 有这样一句话。原创 2023-06-02 22:49:04 · 1155 阅读 · 0 评论 -
Sql条件查询的逻辑判断顺序
第一条记录可以匹配name = ‘zs’ and age = 10,此时这个结果就是true,true or true 或者 true or false 结果都是true。只有false or false 结果才是 false,第一条记录符合。第二条记录也符合,第三条记录 name = ‘zs’ and age = 10 是false,但是 false or age = 20 ,age = 20 ,这个是true的,整个where 条件也是true的,那么此时name = zs ,这个条件相当于失效了。原创 2022-08-21 10:15:39 · 980 阅读 · 0 评论 -
MYSQL中变量的操作
变量分为系统变量和用户自定义变量,顾名思义,系统变量就是系统定义好的一些变量,这些变量是固定的,而用户变量不是固定的,用户可以根据需求来定义且使用。系统变量系统变量又分为全局系统变量和会话系统变量,全局系统变量的修改影响所有的会话,而会话变量的修改只影响当前会话。查看系统变量show global variables查看时筛选show global variables like '%char%'查看会话变量show session variables 注意:如果gl原创 2022-07-19 21:42:24 · 180 阅读 · 0 评论 -
Mysql将某一列的值根据指定字符拆分成列
mysql子查询原创 2022-06-06 11:02:14 · 743 阅读 · 0 评论 -
SQL查询练习题
经典sql50练习题-- 1.查询" 01 “课程比” 02 “课程成绩高的学生的信息及课程分数use testdb;select *from student swhere (select score from sc where s.sid = sc.sid and sc.cid = '01') > (select score from sc where s.sid = sc.sid and sc.cid = '02')select s.*from student s.原创 2022-05-04 21:35:27 · 814 阅读 · 0 评论 -
Sql子查询的具体分析
select * from sys_menu;1.from xxx首先确定出要查哪个表,如果有连接查询,则多个表会生成笛卡尔积,生成一个虚拟表2.on xxx通过on条件一条一条筛选,又生成一个虚拟表3.紧接着来到where,根据where后的条件一条一条筛选 又生成一个虚拟表4.如果有group by 则执行group by 和 having5.紧接着来到select此时加入有10条数据那么还是会一条一条遍历,只取出你select指定的列在取的过程中,如果不是列变量,而是字符串,那么在原创 2022-04-29 22:23:29 · 676 阅读 · 0 评论 -
Mysql的事务隔离级别
查看数据库隔离级别select @@tx_isolation;设置数据库的隔离级别;set global transaction_isolation = 'READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ SERIALIZABLE '或者set global transaction isolation level READ UNCOMMITTED;不同事务之间操作数据可能会出现的问题脏写此时假设有一条id = 1,n.原创 2022-04-28 20:55:36 · 565 阅读 · 0 评论 -
Innodb存储引擎下索引模型以及设计注意事项
索引模型在innodb存储引擎下,只有主键索引(聚餐索引)的叶子节点才真正了存储的记录数据.其他的非聚簇索引叶子节点只存储索引列的值,叶子节点保存了叶子节点值和该条记录的主键值.创建一张测试表在这里插入代码片设置了id为主键以后,会自动为id列添加主键索引(聚簇索引),如果没有主键,则存储引擎会找一个有唯一约束的列生成聚簇索引,如果没有,则存储引擎会自已生成一个隐式的列来当做这条数据的主键.该聚簇索引的BTree示意图如下:如果为name字段添加了索引,则该索引BTree示意图如下:原创 2022-04-27 21:53:28 · 465 阅读 · 0 评论 -
PreparedStatement的setObject与getObject方法
使用setObject方法填充占位符时,setObject会判断实际传入的参数类型,进行参数转换,例如,如果是String类型,则会在参数开始和结尾追加 ',setString的源码 parameterAsBytes = null; buf = new StringBuilder(x.length() + 2); buf.append('\''); buf..原创 2022-03-10 21:56:46 · 1897 阅读 · 0 评论 -
SQL常用字符串函数、日期函数、流程控制函数汇总
/* 字符串函数讲解*/# 返回第一个字符的ascii的码值select ascii('abc') ;# 返回内存层面的字符数select char_length('aaa哈哈');# 返回底层真正存储的字节数select length('aaa哈哈');# 以指定字符连接字符串(第一个参数是连接符),select concat_ws('-','hello','word','beijing');# 替换指定索引后的字符,注意:在sql中字符串的索引是从1开始的,从第二个字符开始原创 2022-02-25 21:02:34 · 444 阅读 · 0 评论 -
mysql日期函数使用,统一日期字符串格式
截取日期到分钟left ('2021-11-03 10:00:20',16) //截取到前16位获取当前时间前分钟的时间,截取日期到分钟left (DATE_ADD(now(),INTERVAL -2 MINUTE),16)原创 2021-11-03 10:51:55 · 1779 阅读 · 0 评论 -
JDBC的理解
概述JDBC是sun公司提供的一套Java程序访问数据库的接口API,只提供接口,而不提供实现,具体的实现由数据库厂商提供。这样使得Java开发人员在操作数据库时,只需要面向统一的接口编程,而不需要关注底层的细节,同时,也大大提高了我们程序的可移植性,如果将来由某种数据库切换为另一种数据库,则只需要修改少量的配置代码和切换一下驱动,就可以实现数据库的切换,因为整个过程是面向的接口编程,程序中没有出现任何的第三方的API。同时,由于各个驱动实现了同一套JDBC规范,在真正创建驱动对象时,其实是创建的第三方实原创 2021-09-19 13:26:06 · 189 阅读 · 0 评论 -
mybatis动态sql问题
List<User> selectUserByIf(String age); select * from user where 1 = 1 and <if test="age == 0"> </if>mybatis的动态sql在进行if判断时如果出现 xxx == ‘0’ 或者 xxx == 0的情况,mybatis会把xxx的值转为int类型比较,就是说等号两边若出现了数字型,则mybatis就会把另一边也转为数字。所以这个age参数如果传的是一个非数字类原创 2021-07-17 09:07:50 · 185 阅读 · 0 评论 -
mysql主键去0
假设mysql表中有一条数据的id为 012345,则在查找这条数据的时候,下面两条SQL是都可以查询出来的,mysql在查询时,会将查询时的参数前面的0去掉,前提是整型。 1. select * from tbl where id = 012345 2. select * from tbl where id = 12345 若将查询条件改为以下(查询参数为字符串类型): 1. select * from tbl where id = '012345' 2. select * fr原创 2021-07-12 13:58:00 · 325 阅读 · 0 评论 -
详解SQL99语法各类查询使用
一、多表查询分类内连接 (inner join)等值链接非等值链接自连接外链接左外链接 (left join)右外链接 (right join)全连接 (full join)交叉连接 (cross join)语法:对join链接查询的详解可参考这里 https://blog.csdn.net/qq_43750656/article/details/106770806select [查询列表]from [表1] [别名] [链接类型] join[表2] [别名]原创 2020-11-19 10:08:36 · 372 阅读 · 0 评论 -
详解SQL聚合函数、分组查询
SQL共有五个聚合函数,分别是 sum,avg,max,min,count,下面来一一介绍执行下面的sql脚本/*SQLyog Ultimate v10.00 Beta1MySQL - 5.5.15 : Database - myemployees**********************************************************************//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE='原创 2020-11-18 16:23:15 · 1469 阅读 · 0 评论 -
数据库索引的创建以及索引的优化
什么是索引?在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中信息。当表中有大量记录时,若要对表进行查询,第一种原创 2020-06-16 15:32:18 · 442 阅读 · 0 评论 -
Explain查询SQL分析
Explain的使用介绍:使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。使用:explain sql语句字段id(1 id相同,则执行顺序为table自上而下执行,也就是t1,t2,t3(2 id不同,若包含了子查询,则id越大的,越先执行,这条sql中t1为最外面的,而t2,t3都是子查询,子查询的优先级越高。(3 id相同不同 ,首先还是按照优先级越高,id越大的越先执行,也就是先查原创 2020-06-16 14:33:18 · 1685 阅读 · 0 评论 -
MySQL的7中JOIN用法详解
七种JOIN都是什么?向数据中插入测试数据 t_emp和t_deptCREATE TABLE `t_dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAULT NULL, `address` VARCHAR(40) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREAT原创 2020-06-15 21:15:18 · 517 阅读 · 0 评论 -
InnoDB和MyISAM两种数据库存储引擎的对比
存储引擎相关命令查看MySQL提供的所有存储引擎show engines;从上图我们可以查看出 MySQL 当前默认的存储引擎是InnoDB,并且在5.7版本所有的存储引擎中只有InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务。我们也可以通过下面的命令查看默认的存储引擎。show variables like '%storage_engine%';可以发现默认使用的为InnoDB存储引擎。查看表的存储引擎show table status like "table原创 2020-06-15 17:13:06 · 935 阅读 · 0 评论 -
SpringBoot集成Sharding-JDBC实现读写分离
一、数据库一主一从环境搭建1.首先打开服务管理器,找到mysql服务。右击属性查看mysql服务的磁盘位置找到D磁盘上的mysql文件夹,复制一份mysql-slave当做从机进入mysql-slave的data文件夹,修改my.ini文件修改四个地方,端口,slave服务的磁盘位置,以及slave服务的数据库的磁盘位置,按照datadir="C:/ProgramData/MySQL/MySQL Server 5.5 - slave/Data/"的路径在相应目录复制一份数据库。这样的话原创 2020-06-10 11:37:54 · 596 阅读 · 0 评论 -
SpringBoot集成Sharding-JDBC实现分库分表
一、环境搭建1.创建一个springboot项目,引入以下依赖。 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>原创 2020-06-09 22:14:28 · 1358 阅读 · 1 评论 -
Servlet + Mysql + Java 做一个网上书城小项目
小项目没有用到任何框架,单纯servlet和mysql的一些知识项目结构图效果预览 - 注册界面注册成功登录界面 - 刚才注册了个张三 (账号:张三 密码:12345678 )首页书籍页面购物车页面清空购物车数据库简单设计了两张表t_user 和 t_book....原创 2019-11-17 12:32:56 · 689 阅读 · 12 评论