热门标签 | 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,怎么迎娶白富美呢?
希望对大家有所帮助。


推荐阅读
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 深入解析MySQL中的七种JOIN查询
    本文详细介绍了MySQL中常用的七种JOIN查询方法,包括内连接、左外连接、右外连接、全外连接以及排除连接等,并通过实例进行说明。 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 本文档介绍了如何在Visual Studio 2010环境下,利用C#语言连接SQL Server 2008数据库,并实现基本的数据操作,如增删改查等功能。通过构建一个面向对象的数据库工具类,简化了数据库操作流程。 ... [详细]
  • MySQL 基础操作与优化
    本文详细介绍了 MySQL 的基础连接、数据库及表的操作,涵盖创建、修改、删除等常用命令,并深入解析了数据类型、列属性、索引、外键和存储引擎等内容。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
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社区 版权所有