今天分享一个mysql的偷懒小技巧,
通常一般查询数据库时,都会有以下的写法
select 查询字段名 from 表名 where 条件
正常情况下,查询字段名这里尽量不要使用*号来代替所有表中的字段,因为使用*号会将该表里面所有匹配到的数据中所有字段的数据都会查询出来返回到结果,
然而绝大部分情况都不可能会去使用表里面的所有字段,所以使用*大多情况下都会造成网络资源和内存资源的浪费,但是用*号确实很方便,比如你有40个字段,
,要使用30个字段,用*来代替可能一两秒你的单表查询sql语句就写好了,但写30个要使用的字段的话几分钟都难以写出来,因为你需要去一个个的拷贝那些字段名,
遇到这种情况,那么我们可以执行以下的一句sql
SELECT
GROUP_CONCAT( CONCAT( 'a.', column_name ), '' )
FROM
Information_schema.COLUMNS
WHERE
table_Name = 'table_name'
AND TABLE_SCHEMA = 'bjto';
注意,这句sql仅限于mysql where条件后面跟两个参数,第一个是表名,第二个是数据库名(防止多个数据库有相同的表名会多出不要的字段)
当你正确的执行sql之后 ,大概会得到这么一个东西
这里有a.是因为我需要有它,根据不同情况修改,数据库返回给我们一行数据,这是该表里面的所有字段信息,然后你将他复制到你需要的地方,将不用的直接删除,这样是不是省下了很多的复制粘贴步骤
好,接下来我们分析一 下这条sql里面用到的知识点
1、GROUP_CONCAT()函数
他可以将我们mysql查询到的结果集多行数据用,号连接拼接成一行
2、CONCAT()函数
因为我最终的查询sql里面是取了别名的,所以这里需要加一个a.,CONCAT函数也可以理解成字符串拼接作用
3、Information_schema.COLUMNS
mysql里面可以通过他来查询所有的表结构信息,包括字段名,字段类型,注释等