关于Mysql整理的需要记忆和熟练掌握的内容

1.查询数据表的信息(比如有多少行数据):
show table status like 'tab_User' -- 数据表中的数量
 
2. 使用 explain查看sql运行效率时

1)通过 'row' 来查看扫描的行数
2)通过 'key' 来查看使用的索引
  1. 1. /* 查看操作 */ ------------------------------------------------------------------------------------------------------- 1. /* 查看操作 */
  1. SHOW PROCESSLIST -- 显示哪些线程正在运行
  2. SHOW VARIABLES -- 查看变量
  3.  
  4. 2. /* 数据库操作 */ ------------------------------------------------------------------------------------------------------ 2. /* 数据库操作 */
  1. -- 查看当前数据库
  2. select database();
  3. -- 显示当前时间、用户名、数据库版本
  4. select now(), user(), version();
  1. -- 复制表结构
  2. CREATE TABLE 表名 LIKE 要复制的表名
  3. -- 复制表结构和数据
  4. CREATE TABLE 表名 [AS] SELECT * FROM 要复制的表名
  1. 3. /* 字符集编码 */ --------------------------------------------------------------------------------------------------------- 3. /* 字符集编码 */
  2.  
  3. 字符编码
  4. -- MySQL、数据库、表、字段均可设置编码
  5. -- 数据编码与客户端编码不需一致
  6. SHOW VARIABLES LIKE 'character_set_%' -- 查看所有字符集编码项
  7. character_set_client 客户端向服务器发送数据时使用的编码
  8. character_set_results 服务器端将结果返回给客户端所使用的编码
  9. character_set_connection 连接层编码
  10. SET 变量名 = 变量值
  11. set character_set_client = gbk;
  12. set character_set_results = gbk;
  13. set character_set_connection = gbk;
  14. SET NAMES GBK; -- 相当于完成以上三个设置
  15.  
  16. 4./* 数据类型(列类型) */ ---------------------------------------------------------------------------------------------------4. /* 数据类型(列类型) */
  1. 1) 数值类型
  1.   int 4字节
  2. bigint 8字节
  1. int(M) M表示总位数
  2. - 默认存在符号位,unsigned 属性修改
  3. - 显示宽度,如果某个数不够定义字段时设置的位数,则前面以0补填,zerofill 属性修改
  4. 例:int(5) 插入一个数'123',补填后为'00123'
  5. - 在满足要求的情况下,越小越好。
  6. - 1表示bool值真,0表示bool值假。MySQL没有布尔类型,通过整型01表示。常用tinyint(1)表示布尔型。
  1. 2) 字符串类型
  2. -- a. char, varchar ----------
  3. char 定长字符串,速度快,但浪费空间
  4. varchar 变长字符串,速度慢,但节省空间
  5. M表示能存储的最大长度,此长度是字符数,非字节数。
  6. 不同的编码,所占用的空间不同。
  7. char,最多255个字符,与编码无关。
  8. varchar,最多65535字符,与编码有关。
  9. 一条有效记录最大不能超过65535个字节。
  10. utf8 最大为21844个字符,gbk 最大为32766个字符,latin1 最大为65532个字符
  11. varchar 是变长的,需要利用存储空间保存 varchar 的长度,如果数据小于255个字节,则采用一个字节来保存长度,反之需要两个字节来保存。
  12. varchar 的最大有效长度由最大行大小和使用的字符集确定。
  13. 最大有效长度是65532字节,因为在varchar存字符串时,第一个字节是空的,不存在任何数据,然后还需两个字节来存放字符串的长度,所以有效长度是64432-1-2=65532字节。
  14. 例:若一个表定义为 CREATE TABLE tb(c1 int, c2 char(30), c3 varchar(N)) charset=utf8; N的最大值是多少? 答:(65535-1-2-4-30*3)/3
  1. 5./* 建表规范 */ ------------------------------------------------------------------------------------------------------------------ 5./* 建表规范 */
  2. -- Normal Format, NF
  3. - 每个表保存一个实体信息
  4. - 每个具有一个ID字段作为主键
  5. - ID主键 + 原子表
  6. -- 1NF, 第一范式
  7. 字段不能再分,就满足第一范式。
  8. -- 2NF, 第二范式
  9. 满足第一范式的前提下,不能出现部分依赖。
  10. 消除符合主键就可以避免部分依赖。增加单列关键字。
  11. -- 3NF, 第三范式
  12. 满足第二范式的前提下,不能出现传递依赖。
  13. 某个字段依赖于主键,而有其他字段依赖于该字段。这就是传递依赖。
  14. 将一个实体信息的数据放在一个表内实现。
  15.  
  1. 6./* select 查询语句*/ -------------------------------------------------------------------------------------------------------- 6./* select 查询语句*/
  1. 1 having 子句,条件子句
  2. where 功能、用法相同,执行时机不同。
  3. where 在开始时执行检测数据,对原数据进行过滤。
  4. having 对筛选出的结果再次进行过滤。
  5. having 字段必须是查询出来的,where 字段必须是数据表存在的。
  6. where 不可以使用字段的别名,having 可以。因为执行WHERE代码时,可能尚未确定列值。
  7. where 不可以使用合计函数。一般需用合计函数才会用 having
  8. SQL标准要求HAVING必须引用GROUP BY子句中的列或用于合计函数中的列。
  1. 7./* 备份与还原 */ ------------------------------------------------------------------------------------------------------------- 7./* 备份与还原 */
  2. 备份,将数据的结构与表内数据保存起来。
  3. 利用 mysqldump 指令完成。
  4.  
  5. -- 导出
  6. 1 导出一张表
  7.   mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql)
  8. 2)导出多张表
  9.   mysqldump -u用户名 -p密码 库名 1 2 3 > 文件名(D:/a.sql)
  10. 3)导出所有表
  11.   mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql)
  12. 4)导出一个库
  13.   mysqldump -u用户名 -p密码 -B 库名 > 文件名(D:/a.sql)
  14.  
  15. 可以-w携带备份条件
  16.  
  17. -- 导入
  18. 1)在登录mysql的情况下:
  19.   source 备份文件
  20. 2)在不登录的情况下
  21.   mysql -u用户名 -p密码 库名 < 备份文
  22.  
  1. 8./* 锁表 */  ------------------------------------------------------------------------------------------------------------------ 8./* 锁表 */
  2. 表锁定只用于防止其它客户端进行不正当地读取和写入
  3. MyISAM 支持表锁,InnoDB 支持行锁
  4. -- 锁定
  5. LOCK TABLES tbl_name [AS alias]
  6. -- 解锁
  7. UNLOCK TABLES
  1. 9./* 用户和权限管理 */ -------------------------------------------------------------------------------------------------------- 9./* 用户和权限管理 */
  1. 用户信息表:mysql.user
  2. -- 刷新权限
  3. FLUSH PRIVILEGES
  4. -- 增加用户
  5. CREATE USER 用户名 IDENTIFIED BY [PASSWORD] 密码(字符串)
  6. - 必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。
  7. - 只能创建用户,不能赋予权限。
  8. - 用户名,注意引号:如 'user_name'@'192.168.1.1'
  9. - 密码也需引号,纯数字密码也要加引号
  10. - 要在纯文本中指定密码,需忽略PASSWORD关键词。要把密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD
  11. -- 重命名用户
  12. RENAME USER old_user TO new_user
  13. -- 设置密码
  14. SET PASSWORD = PASSWORD('密码') -- 为当前用户设置密码
  15. SET PASSWORD FOR 用户名 = PASSWORD('密码') -- 为指定用户设置密码
  16. -- 删除用户
  17. DROP USER 用户名
  18. -- 分配权限/添加用户
  19. GRANT 权限列表 ON 表名 TO 用户名 [IDENTIFIED BY [PASSWORD] 'password']
  20. - all privileges 表示所有权限
  21. - *.* 表示所有库的所有表
  22. - 库名.表名 表示某库下面的某表
  23. -- 查看权限
  24. SHOW GRANTS FOR 用户名
  25. -- 查看当前用户权限
  26. SHOW GRANTS; SHOW GRANTS FOR CURRENT_USER; SHOW GRANTS FOR CURRENT_USER();
  27. -- 撤消权限
  28. REVOKE 权限列表 ON 表名 FROM 用户名
  29. REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户名 -- 撤销所有权限
  30. -- 权限层级
  31. -- 要使用GRANTREVOKE,您必须拥有GRANT OPTION权限,并且您必须用于您正在授予或撤销的权限。
  32. 全局层级:全局权限适用于一个给定服务器中的所有数据库,mysql.user
  33. GRANT ALL ON *.*和 REVOKE ALL ON *.*只授予和撤销全局权限。
  34. 数据库层级:数据库权限适用于一个给定数据库中的所有目标,mysql.db, mysql.host
  35. GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。
  36. 表层级:表权限适用于一个给定表中的所有列,mysql.talbes_priv
  37. GRANT ALL ON db_name.tbl_nameREVOKE ALL ON db_name.tbl_name只授予和撤销表权限。
  38. 列层级:列权限适用于一个给定表中的单一列,mysql.columns_priv
  39. 当使用REVOKE时,您必须指定与被授权列相同的列。
  1.  
  1.  

【精粹系列】Mysql精粹的更多相关文章

  1. MYSQL系列-Mysql存储引擎选择

    MYSQL系列-Mysql存储引擎选择 //查看当前数据库支持的存储引擎 show engines \G; 创建表的时候可以通过engine=MyISAM指定存储引擎 MyISAM: .MYISAM不 ...

  2. mybatis&plus系列------Mysql的JSON字段的读取和转换

    mybatis&plus系列------Mysql的JSON字段的读取和转换 一. 背景 在平常的开发中,我们可能会有这样的需求: 业务数据在存储的时候,并不是以mysql中的varchar丶 ...

  3. 【精粹系列】PHP精粹

    本文地址 分享提纲: 1. 概述 2. 精粹内容 2.1 语言结构 2.2 大小写问题 2.3 变量函数 2.4 常量相关函数   2.5 字符串的使用 2.6 函数 2.7 数据库操作 2.8 自动 ...

  4. MySQL精粹

    关于Mysql整理的需要记忆和熟练掌握的内容 1.查询数据表的信息(比如有多少行数据): show table status like 'tab_User' -- 数据表中的数量   2. 使用 ex ...

  5. 谢孟军:The State of Go | ECUG Con 精粹系列

    本月 17 日,Go 1.8 版本火热发布.相较于以往的版本,Go 1.8 具体有哪些新的特性呢?想必这是不少 Gopher 们热切关注和讨论的问题.作为著名的Golang 布道者,Gopher Ch ...

  6. (5.8)mysql高可用系列——MySQL中的GTID复制(实践篇)

    一.基于GTID的异步复制(一主一从)无数据/少数据搭建 二.基于GTID的无损半同步复制(一主一从)(mysql5.7)基于大数据量的初始化 正文: [0]概念 [0.5]GTID 复制(mysql ...

  7. 快速入门系列--MySQL

    一直说要好好复习一下Mysql都木有时间,终于赶上最近新购买了阿里云,决定使用CentOS去试试.NET Core等相关的开发,于是决定好好的回顾下这部分知识,由于Mysql的数据库引擎是插件式的,对 ...

  8. 剑指架构师系列-MySQL调优

    介绍MySQL的调优手段,主要包括慢日志查询分析与Explain查询分析SQL执行计划 1.MySQL优化 1.慢日志查询分析 首先需要对慢日志进行一些设置,如下: SHOW VARIABLES LI ...

  9. 剑指架构师系列-MySQL常用SQL语句

    (1)分清HAVING与WHERE的区别: HAVING 子句使你能够指定过滤条件,从而控制查询结果中哪些组可以出现在最终结果里面.WHERE 子句对被选择的列施加条件,而 HAVING 子句则对 G ...

随机推荐

  1. HTTPS那些事(二)SSL证书(转载)

    原创地址:http://www.guokr.com/post/116169/   从第一部分HTTP工作原理中,我们可以了解到HTTPS核心的一个部分是数据传输之前的握手,握手过程中确定了数据加密的密 ...

  2. SqlServer英文单词全字匹配

    环境:Vs2013+Sql Server2012 问题:现在数据库记录如下: Sentence列保存的是英文的句子,我现在想找出所有包含“I”(单词)的句子,如果我用 Sentence like '% ...

  3. iOS-App上架流程

    前言:作为一名IOS开发者,把开发出来的App上传到App Store是必须的.下面就来详细介绍下具体流程. 1.打开苹果开发者中心:https://developer.apple.com 打开后点击 ...

  4. Script component 用法

    在SSIS中,可以使用C#编写脚本,这是十分激动人心的事,能够使用C#代码,使得Script Component无所不能. 第一部分:组件简介Script Component 有三种类型:Source ...

  5. 彻底理解nth-child和nth-of-type的区别。

    最近又有些天没写博客了,主要写一篇下来,太浪费时间了,其实这不是根本,根本是最近比较忙,忙什么呢?最近发现一个问题觉得学习速度太慢了,时间倒是花的很多,但大部分时间都花在无意义的事情上,所有打算改变政 ...

  6. 计算程序总行数的Python代码

    最近需要统计一下项目中代码的总行数,写了一个Python小程序,不得不说Python是多么的简洁,如果用Java写至少是现在代码的2倍. import os path="/Users/ron ...

  7. Android自用-----WindowManager$BadTokenException: Unable to add window -- token null is not for an application

    转自http://www.cnblogs.com/oakpip/archive/2011/04/06/2007310.html 错误产生: private Context mcontext; @Ove ...

  8. 我被比特币撞了一下腰——记OKCoin试用体验

    本博客还有大量的.NET开源技术文章,您可能感兴趣: 1.开源Math.NET基础数学类库使用系列文章:链接 2.开源C#彩票数据资料库系列文章:链接 3.开源的.NET平台ORM组件文章:链接 4. ...

  9. 掌握 Cinder 的设计思想 - 每天5分钟玩转 OpenStack(46)

    上一节介绍了 Cinder 的架构,这节讨论 Cinder 个组件如何协同工作及其设计思想. 从 volume 创建流程看 cinder-* 子服务如何协同工作 对于 Cinder 学习来说,Volu ...

  10. 一款开源免费跨浏览器的视频播放器--videojs使用介绍

    最近项目中的视频功能,需要做到浏览器全兼容,所以之前用html5实现的视频功能就需要进行改造了.在网上翻了个遍,试来试去,在所有的视频播放器中,就数它最实际了.首先我们来看看它的优点: 1.它是开源免 ...