GLPI 中可能会用到的 Mysql 中的常用指令(一):查询表中某字段重复的数据、提取数据指定位、约束字段唯一、筛选空表、删除空表
作者:互联网
文章目录
前言
最近工作的重点一直在GLPI,发布的文章即使涉及多个方面,一般也都是围绕GLPI展开。这里收集了一些MySQL中常用的指令,并将其具体应用到GLPI的配置中。
写这些文章旨在避免自己被相同的问题磕绊,也在和大家交流学习。
Mysql查询某字段值重复的数据
查询user表中,user_name字段值重复的数据及重复次数:
select user_name,count(*) as count from user group by user_name having count>1;
1
GLPI中,资产编号一定是唯一的,若不唯一,必然是出了差错。查找重复的资产编号,并对其采取进一步的措施,具有其实际意义。解决了重复问题后,采取下文的设置字段唯一便可“一劳永逸 ”地防止此类事件发生。这里查找资产——电脑中名称重复的数据:
select name,count(*) as count from glpi_computers group by name having count>1
提取数据的某几位
用法:
SELECT SUBSTRING(column,1,15) FROM table;
这里是之前想用而找的,但是实际中用其他方法做了代替,也做个记录。
约束某字段的数值为唯一
ALTER TABLE `t_user` ADD unique(`username`);
给表t_user中的username增加唯一性约束。2原文中详细介绍了约束唯一和主键的关系,这里不再赘述。关于更多方法,参照:
https://blog.csdn.net/guo_qiangqiang/article/details/86694409
这里就是之前提到的“一劳永逸 ”。在电脑表中将名称设置为不可重复设置:
ALTER TABLE `glpi_computers` ADD unique(`name`);
这里有一点,如果之前没有采用上面的方法解决重复项的话,也可以在直接使用这个指令时得到重复的名称。MySQL不是简单地添加规则,也会检查当前表是否符合规则。
筛选、删除空表
#select TABLE_NAME from information_schema.tables where TABLE_SCHEMA='glpi' and table_rows=0;
这里可以看到MySQL的一个机制:information_schema3。当转移、copy GLPI的数据库时,我们会希望对空表做出筛选,跳过对其进行多余的操作,此时这个语句便可以派上用场。有了select,必然也有了drop,既然可以筛选,必然可以直接删除:
Select CONCAT( 'drop table ', table_name, ';' )
FROM information_schema.tables
Where table_schema='glpi' and table_rows=0;
标签:count,某字段,空表,name,重复,user,表中,table,GLPI 来源: https://blog.csdn.net/qq_38866586/article/details/92830682