Mysql 问题
1.MySQL数据库管理工具SQLyog导入外部sql文件报错 data too long for column 'title' at row 1
经查询错误原因是编码不统一。
检查MySQL文件夹下的my.ini文件中
default-character-set=utf8
之后在外部sql文件第一行添加
set names utf8;
解决该问题。
2.mysql 生成指定时间内的时间戳
SELECT (FROM_UNIXTIME( UNIX_TIMESTAMP('2017-07-01') + FLOOR( RAND() * ( UNIX_TIMESTAMP('2018-03-30') - UNIX_TIMESTAMP('2017-07-01') + 1 ) ) ) ) AS randtime FROM DUAL ;
3.mysql 根据对应关系把一张表的字段值复制给另外一张表的字段
UPDATE t_person SET fcreatetime = (SELECT fcreatetime FROM t_company WHERE t_person.fid = t_company.fpersonid)
where t_person.fcreatetime in (select distinct fcreatetime from t_company)
4.mysql 给用户赋予连接的权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'
然后重新启动mysql的服务
5.mysql 排序的字段有null值
-- DESC 降序时候默认null值排在后面、ASC升序时默认null值排在前面,可使用 IS NULL处理
ORDER BY fnum IS NULL,fnum ASC
6.mysql 带条件的插入语句
insert into policylabel(fid,fpolicyid,flabelid) select '2',#{fpolicyid},#{flabelid} from dual where not exists (select fid from policylabel where fpolicyid = #{fpolicyid} and flabelid = #{flabelid})
7.mysql 导入导出整个数据库
1.导出:
导出数据库:在mysql 的安装目录的/bin 目录下执行:mysqldump -u 用户名 -p 数据库名 > 导出的文件名路径
导出一个表:mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名路径
导出一个数据库结构 :mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
(有配置环境变量可直接执行)
2.导入:
1.进入MySQL:mysql -u 用户名 -p
如我输入的命令行:mysql -u root -p (输入同样后会让你输入MySQL的密码)
2、新建一个数据库,这时是空数据库,如新建一个名为person的目标数据库
3,输入:mysql>use 目标数据库名
如我输入的命令行:mysql>use person;
4,导入文件:mysql>source 导入的文件名;
如我输入的命令行:mysql>source d:/person.sql;
mysql 绿色版安装参考 :https://www.cnblogs.com/rysinal/p/7565259.html
8.添加表注释
CREATE TABLE groups(
gname VARCHAR(200) COMMENT '列注释',
) COMMENT='表注释'
显示表格的注释
SHOW FULL COLUMNS FROM 表名