目录
1、MySQL单字段存储大容量内容,数据过多存储错误的解决办法
一、MySQL学习
1、MySQL单字段存储大容量内容,数据过多存储错误的解决办法
MySQL单字段存储大容量内容
Data too long for column 'abc' at row 1
解决办法:
将字段类型修改成更大的类型
字段类型 | 类型长度 | 空间大小 |
---|---|---|
TINYTEXT | 256 bytes | |
TEXT | 65,535 bytes | ~64kb |
MEDIUMTEXT | 16,777,215 bytes | ~16MB |
LONGTEXT | 4,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);
不断学习才能不断提高!