MySQL学习&Jpa

目录

一、MySQL学习

1、MySQL单字段存储大容量内容,数据过多存储错误的解决办法

2、GROUP BY /GROUP_CONCAT

3、SQL语句截取

4、upper和Lower函数

5、limit

6、replace函数

7、Mysql获取表名、创建信息,备注信息等获取

8、主外键数据批量插入获取关联ID数据


一、MySQL学习

1、MySQL单字段存储大容量内容,数据过多存储错误的解决办法

MySQL单字段存储大容量内容

Data too long for column 'abc' at row 1

解决办法:
将字段类型修改成更大的类型

字段类型类型长度空间大小
TINYTEXT256 bytes
TEXT65,535 bytes~64kb
MEDIUMTEXT16,777,215 bytes~16MB
LONGTEXT4,294,967,295 bytes~4GB

例:

代码中

@Column(name = "ABC",columnDefinition="MEDIUMTEXT")
private String abc;

数据库DB中直接--设计表-->修改类型就ok了

=========

columnDefinition属性表示创建表时,该字段创建的SQL语句。

需要特殊指定字段类型的情况如上。

2、GROUP BY /GROUP_CONCAT

GROUP BY 分组分割,有多个的情况,想显示这多个情况,使用GROUP_CONCAT进行显示。

GROUP_CONCAT显示的长度默认1024;如果超过就会发生截取

此时需要在数据库中做设置

//临时修改,重启数据库就失效了
SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len=102400;
//查看mysql的group_concat_max_len
show variables like 'group_concat_max_len';

//永久修改
修改配置文件my.ini
在[mysqlId]下面添加
group_concat_max_len=4294967295
重启mysql后去检查
show variables like 'group_concat_max_len';

3、SQL语句截取

SUBSTR(str,pos,len)

--pos可以为负数,起始值从1开始,不是0;
select SUBSTR(name, 1, 5) from student;

4、upper和Lower函数

SELECT UPPER(expression) FROM tab;
SELECT Lower(Expression) FROM tab;

5、limit

limit子句用于限制查询结果返回的数量,常用于分页查询

select * from tableName limit i,n
# tableName:表名
# i:为查询结果的索引值(默认从0开始),当i=0时可省略i
# n:为查询结果返回的数量
# i与n之间使用英文逗号","隔开
# 
limit n 等同于 limit 0,n

# 查询8条数据,索引从5到12,第6条记录到第13条记录
select * from tableName limit 5,8;

6、replace函数

--修改表中某个字段中的内容
把'你好'修改为'你好!'
update t_user set content=REPLACE(content,'你好','你好!') where content like'%你好%';

7、Mysql获取表名、创建信息,备注信息等获取

SELECT
	table_name,
	table_comment,
	create_time,
	update_time
FROM
	information_schema. TABLES
WHERE
	table_schema = (SELECT DATABASE())
AND table_name NOT LIKE 'qrtz_%'
AND table_name NOT LIKE 'gen_%'
AND table_name NOT IN (
	SELECT
		table_name
	FROM
		gen_table
);
 
#SELECT DATABASE()

Mysql关联表设计:考虑追加外键。

8、主外键数据批量插入获取关联ID数据

drop table if exists t_sub;
drop table if exists t_a;
create table t_a (
  id           bigint(20)      not null auto_increment    comment 'id',
  name         varchar(30)     default ''                 comment '名称',
  create_by         varchar(64)     default ''                 comment '创建者',
  create_time 	    datetime                                   comment '创建时间',
  update_by         varchar(64)     default ''                 comment '更新者',
  update_time       datetime                                   comment '更新时间',
  primary key (id)
) comment = 't_a表';


create table t_sub (
  id                bigint(20)      not null auto_increment    comment 'id',
  a_id              bigint(20)      not null                   comment 'a_id',
  name              varchar(30)     default ''                 comment '名称',
  create_by         varchar(64)     default ''                 comment '创建者',
  create_time 	    datetime                                   comment '创建时间',
  update_by         varchar(64)     default ''                 comment '更新者',
  update_time       datetime                                   comment '更新时间',
  primary key (id),
  CONSTRAINT `t_a_id` FOREIGN KEY (`a_id`) REFERENCES `t_a` (`id`) on DELETE CASCADE ON UPDATE CASCADE
) comment = 't_sub表';


insert into t_a(name,create_by,create_time,update_by,update_time)  values('名1','admin', sysdate(), '', null);
SELECT @aId :=LAST_INSERT_ID();
insert into t_sub(name,a_id,create_by,create_time,update_by,update_time)  values('名2',@aId,'admin', sysdate(), '', null);
insert into t_a(name,create_by,create_time,update_by,update_time)  values('名3','admin', sysdate(), '', null);
SELECT @aId :=LAST_INSERT_ID();
insert into t_sub(name,a_id,create_by,create_time,update_by,update_time)  values('名4',@aId,'admin', sysdate(), '', null);

不断学习才能不断提高!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杀神lwz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值