1、sql命令: 用于清空某表的数据,且让自增的id重新从0开始:
在navicat右键数据库名---》命令列界面输入:truncate table 表名 ;
2、truncate,drop,delete的区别:
相同点:
- truncate和不带where语句的delete以及drop语句都可以删除表内数据。
- truncate和drop是数据库定义语言(DDL),执行后事务自动提交生效。
不同点:
- truncate和delete只删除表的数据不会删除表的结构,drop则会删除表的结构。
- delete是数据库操作语言(DML),执行后需要提交事务才会生效。
- delete不影响表的高水线,通俗来说就是表的主键id不受影响,如12345删除后再插入就是从6开始。
- truncate会将高水线复位,也就是主键id会重新从头开始。
- drop会释放整个表的空间。
- 速度方面:drop>truncate>delete
- 安全性方面:谨慎使用truncate和drop,因为自动提交,很恐怖哦,删了就没咯,当然,要是删除表就用drop,删除部分字段的话就用delete,要是值只删除数据不动结构,那就是使用truncate加上reuse stroage(再利用存储)。
- 另外,如果存在外键约束引用的表,要用不带where的delete语句。
3.清空某一列数据
update tablename set colunm =null;
4.mysql表锁死
MySQL如果频繁的修改一个表的数据,那么这么表会被锁死。造成假死现象。
比如用Navicat等连接工具操作,Navicat会直接未响应,只能强制关闭软件,但是重启后依然无效。
解决办法:
首先执行:show full processlist; //列出当前的操作process,一般会看到很多waiting的process,说明已经有卡住的proces了,我们要杀死这些process!!
再执行:
kill processid; //processid表示process的id,比如kill 3301,就会将id为3301的process杀死。
使用 kill 将所有的 id 杀死。然后重启MySQL,解决.
5.新增表字段(含注释)
示例:给city表新增城市经纬度字段
-- ----------------------------
-- Add column for `city`
-- ----------------------------
ALTER TABLE `city` ADD `longitude` VARCHAR(255) NULL COMMENT '城市经度'
,ADD `latitude` VARCHAR(255) NULL COMMENT '城市纬度';
-- ----------------------------
-- Records of city
-- ----------------------------
6.MySQL统计同一字段不同值数量并根据另一字段分组
SELECT
count(*) AS fam2
FROM
(
SELECT
sum( CASE rufm.role WHEN 'MEMBER' THEN 1 ELSE 0 END ) AS num
FROM
report_user_family_member rufm
WHERE
rufm.source_data_delete_flag = 0
and rufm.user_join_date < '2019-11-31 23 : 59 : 59'
GROUP BY
rufm.family_account_no
) t1
WHERE
t1.num = 1
附:windows安装sql5.7:https://www.jianshu.com/p/a41d45890ab2