转 mysql distinct函数 与 免密码登录 与 查看表的结构 mysql中去重 distinct 用法

#########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次

blob.png

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

如果直接执行

mysql/mysqldump -u root -p

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

blob.png

想一想,如果执行该命令的是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 用户名

blob.png

最后说一句:一定要保证.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次

blob.png

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

如果直接执行

mysql/mysqldump -u root -p

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

blob.png

想一想,如果执行该命令的是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 用户名

blob.png

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

猜你喜欢

转载自www.cnblogs.com/feiyun8616/p/11990273.html