Mysq基础知识
varchar(X)中X的理解
具体还是要看版本的
4.0版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节)
5.0版本以上,varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放100个。
新增列
①新增一列
alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(45) not null;
②指定列后新增列:
alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(45) not null after COLUMN_NAME;
③新增一列放最前面
alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(45) not null first;
遇到问题解决思路
2020年7月15日09:47:30 在将excel数据转移至数据库的时候,遇到两个问题
一:Data too long for column "**"
在将excel表插入到mysql的时候,命名设置的数据库字段长度大于表中的数据长度,但是还是提示说Data too long for column "**"错误,即时改成text也不行,后来同过网上查找问题发现一个解决方法:
在navicat中提交此语句:
SET @@global.sql_mode= '';
完了之后就可以顺利插入了。关于此语句的作用详情见:“https://www.jb51.net/article/157929.htm”
二:'Timestamp' object has no attribute 'translate'
此问题的原因是虽然我设置如下:
New_customers_visit_type = { '省': String(16), '会员编码': String(12), '会员名称': String(16), '销售日期': DATETIME, '产品名称': String(64), '回访时间1': DATETIME, '回访人': String(8), '致电结果': String(32), '了解渠道': String(32), '购买原因': String(32), '使用情况': String(16), '转牌去向': String(16), '真实性': String(8), # "id": String(32) } self.df.to_sql(name=self.sql_table_name, con=engine, if_exists=self.merge_method, index=False, index_label=False,dtype=New_customers_visit_type, chunksize=10000)
虽然我的dtype参数用的映射中回访日期是 sqlalchemy 中的DATETIME,但是pandas在读取excel时间格式的列之后由于某种原因并没有将其认为datatime64格式。于是可以通过读取数据之后将需要设置为时间格式的列转换为其时间格式来解决此问题;
df[colname] = pd.to_datetime(df[colname])
2020年7月24日11:24:09
三 【MySQL】[Err] 1241 - Operand should contain 1 column(s)
错误原因:
往往是我们多出一列操作数,或者给的参数格式不正确;
WHERE msg_type IN (SELECT * FROM ies_message where msgsendtype=2)
IN操作符后面的子查询是: SELECT * IN操作符对应的只有一列操作数,而SELECT *回传的参数不只一列,导致该错误的产生;
GROUP BY(t.t1, t.t2)
group by 后面不能加括号后添加多个字段,需要添加字段的话不能加括号:
GROUP BY t.t1, t.t2
Mysql JOIN

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号