mysql中去重 distinct 用法

亡梦爱人 提交于 2019-12-06 14:33:53

#########sample 1

mysql中去重 distinct 用法

 

在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段,例如有如下表user:

用distinct来返回不重复的用户名:select distinct name from user;,结果为:

这样只把不重复的用户名查询出来了,但是用户的id,并没有被查询出来:select distinct name,id from user;,这样的结果为:

distinct name,id 这样的mysql 会认为要过滤掉name和id两个字段都重复的记录,如果sql这样写:select id,distinct name from user,这样mysql会报错,因为distinct必须放在要查询字段的开头。

所以一般distinct用来查询不重复记录的条数。

如果要查询不重复的记录,有时候可以用group by :

select id,name from user group by name;

https://www.cnblogs.com/shiluoliming/p/6604407.html

 

#####sample 2

 

1、查看标的创建语句

SHOW CREATE TABLE table_name;

 

2、简单查看表结构

DESC table_name;

 

 

3、查询表结构详细信息——包括列注释

select * from information_schema.columns where table_schema = 'db' #表所在数据库
and table_name = 'tablename' ; #你要查的表
4、查询表结构部分详细信息——包括列注释
select column_name,
column_comment from information_schema.columns where table_schema ='db' and
table_name = 'tablename' ;


5、查看表的信息

select table_name,table_comment from information_schema.tables where table_schema = 'db' and table_name ='tablename'

 

————————————————
版权声明:本文为CSDN博主「qq_42072311」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42072311/article/details/80600200

 

 

########sample 3

利用.my.cnf,安全实现Shell下MySQL免输入密码登录

2018-06-18 17:22:25 1428次

 

MySQL,相信大家都不陌生,平时也可能会在Linux服务器上使用mysql,mysqldump等登录到MySQL服务器进行操作。

如果直接执行

mysql/mysqldump -u root -p

则会提示输入该用户的密码。

想一想,如果执行该命令的是cron等非交互式的程序,那到这一步就无法继续。

有人会在-p后接上密码,这是非常不安全的一种做法,万一有用户这时执行ps aux,你的密码就暴露了……

其实,MySQL官方文档有说明,可以在~/.my.cnf处指定用户的密码。

.my.cnf的格式如下:

[client]

password="MySQL密码"

user=MySQL用户名

 

上面的user一行可以省略,不指定user,则自动以当前Shell登录的用户身份登入mysql。

把上述代码保存到~/.my.cnf,再次输入mysql(或mysql -u 用户名),mysql-client就会自动读取当前用户的家目录下.my.cnf文件的信息,可以无密码自动登入MySQL。

cron等非交互式的程序执行mysql,可能不会自动读取~/.my.cnf,或者.my.cnf保存在其他路径或保存为其他文件名时,就需要使用–defaults-file参数手动指定该配置文件的路径了:

mysql --defaults-file=/folder1/folder2/filename -u 用户名

 

 

最后说一句:一定要保证.my.cnf别的用户/组不能读取(chmod 400)

在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段,例如有如下表user:

用distinct来返回不重复的用户名:select distinct name from user;,结果为:

这样只把不重复的用户名查询出来了,但是用户的id,并没有被查询出来:select distinct name,id from user;,这样的结果为:

distinct name,id 这样的mysql 会认为要过滤掉name和id两个字段都重复的记录,如果sql这样写:select id,distinct name from user,这样mysql会报错,因为distinct必须放在要查询字段的开头。

所以一般distinct用来查询不重复记录的条数。

如果要查询不重复的记录,有时候可以用group by :

select id,name from user group by name;

https://www.cnblogs.com/shiluoliming/p/6604407.html

 

#####sample 2

 

1、查看标的创建语句

SHOW CREATE TABLE table_name;

 

2、简单查看表结构

DESC table_name;

 

 

3、查询表结构详细信息——包括列注释

select * from information_schema.columns where table_schema = 'db' #表所在数据库
and table_name = 'tablename' ; #你要查的表
4、查询表结构部分详细信息——包括列注释
select column_name,
column_comment from information_schema.columns where table_schema ='db' and
table_name = 'tablename' ;


5、查看表的信息

select table_name,table_comment from information_schema.tables where table_schema = 'db' and table_name ='tablename'

 

————————————————
版权声明:本文为CSDN博主「qq_42072311」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42072311/article/details/80600200

 

 

########sample 3

利用.my.cnf,安全实现Shell下MySQL免输入密码登录

2018-06-18 17:22:25 1428次

 

MySQL,相信大家都不陌生,平时也可能会在Linux服务器上使用mysql,mysqldump等登录到MySQL服务器进行操作。

如果直接执行

mysql/mysqldump -u root -p

则会提示输入该用户的密码。

想一想,如果执行该命令的是cron等非交互式的程序,那到这一步就无法继续。

有人会在-p后接上密码,这是非常不安全的一种做法,万一有用户这时执行ps aux,你的密码就暴露了……

其实,MySQL官方文档有说明,可以在~/.my.cnf处指定用户的密码。

.my.cnf的格式如下:

[client]

password="MySQL密码"

user=MySQL用户名

 

上面的user一行可以省略,不指定user,则自动以当前Shell登录的用户身份登入mysql。

把上述代码保存到~/.my.cnf,再次输入mysql(或mysql -u 用户名),mysql-client就会自动读取当前用户的家目录下.my.cnf文件的信息,可以无密码自动登入MySQL。

cron等非交互式的程序执行mysql,可能不会自动读取~/.my.cnf,或者.my.cnf保存在其他路径或保存为其他文件名时,就需要使用–defaults-file参数手动指定该配置文件的路径了:

mysql --defaults-file=/folder1/folder2/filename -u 用户名

 

 

最后说一句:一定要保证.my.cnf别的用户/组不能读取(chmod 400)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!