热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Mysql你必须知道的命令和函数

引言在本文中总结一些Mysql的常用命令和函数,也许常见,也许不常见,但是重要。笔者目前整理的一些blog针对面试都是超高频出现的。大家可以点击链接:http:blog.csdn.net

引言

在本文中总结一些Mysql的常用命令和函数,也许常见,也许不常见,但是重要。笔者目前整理的一些blog针对面试都是超高频出现的。大家可以点击链接:http://blog.csdn.net/u012403290

常用、重要命令

1、完整的链接mysql命令
mysql -h host -P port -u user -p

这里写图片描述

2、查看所有数据库
show databases

这里写图片描述

3、选择某一个数据库,查看所有表
use database_name;
show tables;

在上面有一个叫mysql的数据库,这个库中主要是存放一些配置和用户,我用命令选择它同时查看它有哪些表。
这里写图片描述

4、查看当前数据库
select database()

查看你目前操作的数据库,比如说前面我use mysql,那么我当前操作的数据库就是mysql
这里写图片描述

5、刷新数据库
flush privileges;

命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在”不重启MySQL服务”的情况下直接生效,那么就需要执行这个命令。

6、退出mysql
exit或者quit或者CTRL+D退出mysql

7、创建一个用户
前面有提到,其实mysql的user表就是用户表,但是如果你不是root用户,进入mysql是没有权限操作mysql这个数据库的,并且表也是屏蔽的。接下来,我们用root用户创建一个用户:

insert into mysql.user(Host,User,Password) values(‘localhost’,’brickwork’,password(‘1234’));
先解释一下上面这个句子,Host的意思是通过哪个IP进行访问,如果你插入的时候是localhost,或者127.0.0.1,那么你只能在这台服务器本身上进行操作它,在别的ip上进行远程访问是不允许的。为什么插入password是会后需要password(‘1234’)这么写,是因为password是一个函数,它可以把你的密码进行加密:
这里写图片描述
在创建用户结束之后,一定要进行数据库用户和权限的刷新操作(flush privileges),不然是登录不了的。

8、给已有用户分配权限
如果创建一个用户之后,如果不给它赋予权限,那么它对所有的私人库表是不可见的。
这里写图片描述
如果你是DBA,那么你就需要分派用户权限。比如说这个brickwork是一个新手,那么我就只赋予它hospital数据库的所有表的读的权限,那么你就可以这么描述:
grant select on hospital.* to brickwork @localhost identified by ‘1234’;
逐字逐句翻译过来就是:赋予查询的权限在hospital这个数据库的所有表单上 给 brickwork这个只允许本地登录的用户 验证密码为1234
这里写图片描述
通用表达就是这样的:
grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”;
其中,权限包含:select,insert,update,delete,create,drop等14个权限,如果你想知道更多,请进一步研究权限系统。

接下来,我们登录brickwork这个用户,查看权限赋予之后,它可见的数据库有哪些:

这里写图片描述
可以看到区别了,在前面创建用户之后,我们并不能看到hospital库,但是权限赋予之后,我们就可以看到hospital库了。再比如说,我只开放hospital.doctor表给这个用户又如何呢?具体的学习的朋友可以自己尝试一下。在前面我们只赋予了brickwork读的权限,所以我们进行测试,尝试读取和写入:
这里写图片描述
从图中可以看出,在查询的时候是可以正常操作的,但是再插入的时候会抛出错误,提示权限不足。

9、创建用户并分配权限
难道一定要创建用户之后才可以分配权限吗?其实并不需要,在上面的权限分配的命令: grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”; 其实也保证了用户创建的所有信息。那么我们其实可以直接用这一句命令来创建一个新用户并赋予权限:
这里写图片描述
从图中可以看到,在执行该条命令的时候,如果用户不存在,它会直接新建一个用户,而且不用想前面那样刷新数据库。再者,在该创建语句中,我指定newone这个用户只能够查询hospital这个库中的doctor表,我们看看newone看到的表情况是如何的:
这里写图片描述
那么这个newone用户只能查看doctor这一张表,并且他只具有这张表的读权限。

10、支持任意IP远程访问该数据库

GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION
简单解释一下上面的语句,我们前面已经说过了关于权限赋予的命令,其实这条语句就是一个权限赋予的语句。在这个语句中“ALL PRIVILEGES ”表示所有权限,“ON . ”表示对所有的数据库和表单。“ ‘root’@’%’”表示远程登录的用户名是root,同时%表示任意IP,所以这句话合起来就是远程任意IP用用户名root登录。

11、修改某一个用户的密码
set password for 用户名@登录主机=password(‘新密码’);
我要修改用户名为brickwork的密码为123456:
这里写图片描述

12、查看表结构
desc table_name

我要查看doctor这个表设计的结构:
这里写图片描述

13、显示当前数据库的详细状态
status
这里写图片描述

14、显示最近一条警告信息
show warning;

有的时候,数据库告诉你一条错误警告,但是你没有注意,或者懒得返回去查看,你就可以用这条命令,记住前提是存在最近的一条警告:
比如说我输错了命令,系统给我了我一条警告,然后我用命令打印出最近的警告:
这里写图片描述

15、清空输入字符
\c

有的时候,我们输了老长一段sql命令,你明明知道是错误的,所以并不想回车执行它,也不想按delete来删除,那么你就可以直接用\c来结尾,表示情况所有的输入字符:
这里写图片描述
在上面的句子中,你发现自己明显select少写了一个e,那么你就可以用\c来结尾,表示清空你写的命令,重置输入。注意是反斜杠哦。

16、定义用户变量
set @var_name = expr[,@var_name=expr]….

比如说我要存储的一个基准值,这个基准值用于判断医生的医生的优先级,我们定义为3。如果医生的id字段大于3表示这个医生是合法的。那么我们就可以用用户变量来表示:
这里写图片描述

函数

这里所诉述的不包含基本的算术操作符+,-,*,/。我们研究一下mysql的一些重要的数学函数,在这之前,我要说明下,因为个人习惯问题,我在写sql命令的时候喜欢用小写,但是写函数喜欢用大写。其实在mysql中不区分命令的大小写,即使大小写混合也不会有问题,但是还是建议大家都采用大写。

1、X的绝对值
ABS(X)
这里写图片描述

2、返回不小于X的最小整数值
CEIL(X)
这里写图片描述
注意,CEIL其实就是返回一个大于X的整数,比如-3.5,那么大于它的最小整数就是-3。3.5那么大于它的最小整数就是4。

3、返回不大于X的最大整数值
FLOOR(X)
这里写图片描述
FLOOR和CEIL是相对的。

4、产生随机数
RAND(),返回一个浮点值,范围0-1之间

这里写图片描述
自己观察上面的例子,你会发现RAND(N)中带参数的随机数,它的结果都是一致的,它主要是用来产生重复的序列。

5、数值符号
SIGN(X)
传入一个数值X。SIGN函数会告诉你X是正值,负值或者是0。总共只有3种情况,输入不规范的数值会报错:
这里写图片描述

6、控制数据位数
TRUNCATE(X,D)。X是一个待处理的数值,D表示保留小数点左右位数情况。比如说:
X=32.112,D=4 ====> 结果32.1120

X=32.112,D=1 ====> 结果32.1

X= 32.112, D=0 ====> 结果32

X=32.112, D=-1 =====>结果30

X =32.112,D=-2 ======>结果0

这里写图片描述

7、返回最近似的正数

ROUND(X)
这里写图片描述
在参数只有X本身的时候就如上述情况,但是这个函数可以支持两个参数。ROUND(X,D),这个情况和我们前面说的情况类似,就不一一赘述了,请看博主的测试结果:
这里写图片描述

8、返回字符串的长度
CHAR_LENGTH(str) 与 LENGTH(str)
这里写图片描述
从上面可以看出两者的差别,对于中文字符,CHAR_LENGTH是当做一个字符记录的,而LENGTH是当做三个字符记录的。

9、链接两个字符串
CONCAT(str1,str2…)
这里写图片描述

10、获取字符串从左/右开始的第几个字符

LEFT(str,length) 和RIGHT(str,length)
这里写图片描述

11、字符串截取

SUBSTRING(str, pos,length)
这里写图片描述

12、字符串大小写转换
LOWER(str)和UPPER(str)
这里写图片描述

其实函数还有很多,包括时间和日期的函数,甚至还有用户自定义函数,这里不再继续深究了,不然篇幅太长了。

尾记

Mysql的这些命令和这些函数都是非常重要和常用的,即使我们不做DBA,但是作为一个服务端开发者,了解这些是必须的,不然你将来怎么做CTO,怎么迎娶白富美呢?
希望对大家有所帮助。


推荐阅读
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
author-avatar
国芝翰娥264
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有