1.去重复:
DISTINCT 字段
2.数据库连接失败:
最新 mysql登录报错“Access denied for user 'root'@'localhost' (using password: NO”的处理方法
(1).关闭正在运行的MySQL。
(2).打开DOS窗口,转到mysql\bin目录。
(3).输入mysqld --skip-grant-tables回车。如果没有出现提示信息,那就对了。(正常的情况是光标闪烁没有任何提示信息,如果不是就执行第二种方法)
(4).再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
(5).输入mysql回车,如果成功,将出现MySQL提示符 <
(6). 连接权限数据库<use mysql; (<是本来就有的提示符,别忘了最后的分号)
(7).改密码:update MySQL.user set authentication_string=password('root') where user='root';(别忘了最后的分号)
(8).刷新权限(必须的步骤)<flush privileges;
(9).\q 退出;
---------以上针对上面那种方法行不通的情况----------
(1)、关闭MySQL服务
(2)、新建文本文件 命名任意 如mysql.txt 放在 MySQL安装文件夹下 如 C:MYSQL\mysql.txt
(3)、文件内容为 set authentiction_string for 'root'@'localhost' = password ('newPassword');
(3)、打开dos系统 打开到安装的bin目录下面 执行mysqld -nt --init-file=C:MYSQL\mysql.txt
(4)、执行完之后,控制台打开MySQL服务 net start mysql ,提示服务器启动成功;
(5)、删除mysql.txt文件,另打开一个dos控制台,输入mysql --uroot -p 回车,然后输入上面修改的密码;回车之后就进入mysql>编辑框了;
(6)、\q退出;
3.数据库设置id从1开始
方法一:设计表->选项->自动递增:1
方法二:TRUNCATE 表名
4.本地数据库忘记密码
https://jingyan.baidu.com/article/454316ab4e9e65f7a7c03ad1.html
5.数据库时间存放问题
一般存放时间戳:主要为了排序功能
-
合并重复 区别状态值 保留所有值(多条件判断实现多条件复杂统计/求和查询)
例子:
image.png
将相同的公司进行合并,并根据is_agent的状态求出不同的值,再计算结果
image.png
查询语句:
select g.id,g.company_id,c.name,
count(case when g.is_agent = 0 then `g`.`id` else NULL end) salenum , //求统计用NULL
sum(case when g.is_agent = 0 then `b`.`money` else 0 end) salemoney , //求和用0
count(case when g.is_agent = 1 then `g`.`id` else NULL end) agentnum ,
sum(case when g.is_agent = 1 then `b`.`money` else 0 end) agentmoney,
count(`g`.`id`) as num,
sum(`b`.`money`) as money
from `jcc_sale_order` `g`
INNER JOIN `jcc_companylist` `c`
ON `g`.`company_id`=`c`.`id`
INNER JOIN `jcc_sale_goods` `b`
ON `b`.`order_id`=`g`.`id`
where `g`.`status` > 1
group by `c`.`id`
7.创建表之后直接存放数据库
CREATE TABLE jcc_purchase_count
SELECT
g.id AS goods_id,
g.`name` AS goods_name,
g.spu AS goods_spu,
g.sku AS goods_sku,
FROM `jcc_goods` AS g
LEFT JOIN jcc_companyroom AS cr ON (cr.comanyid = co.id)
LEFT JOIN jcc_receive_goods AS rg ON (rg.goods_id = g.id)
LEFT JOIN jcc_receive_order AS ro ON (rg.order_id = ro.id)
WHERE
g.is_del = 0
8.EXPLAIN 查询时看执行了什么
放在sql 语句前面
例如:EXPLAIN select * from goods where 。。。
9.LENGTH 字段长度
select name,barcode from jcc_goods where LENGTH(barcode)<13 and is_del=0
10.数据库连接时长问题
show global variables like "%timeout";
set global =864000;//设置成想要的时长
set global interactive_timeout=864000;
11.数据库版本问题
MySQL5.7版本:不支持group by
配置:
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

