MySQL

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.数据库时间存放问题

一般存放时间戳:主要为了排序功能  
  1. 合并重复 区别状态值 保留所有值(多条件判断实现多条件复杂统计/求和查询)

    例子:
    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';
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容