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;

  1. https://www.cnblogs.com/bubuchu/p/7239835.html ↩︎

  2. https://www.cnblogs.com/difs/p/9447199.html ↩︎

  3. https://www.cnblogs.com/lyftest/p/8034470.html ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值