公司近期为新来同事做了一次培训,我也偷偷溜进去观摩了一下,内容虽然很基础,但是还是挺有用的。这里做了一下资料汇总:

2种存储引擎

InnoDB:支持事务处理、外键、行级锁,游戏业务库使用
MyISAM:不支持事务,写入速度快,游戏日志库使用

什么样的查询会用到索引

最左前缀原理(索引条件紧跟where)
1.全列匹配,按照索引中所有列进行精确匹配(这里精确匹配指”=”或”IN”匹配)
2.最左前缀匹配
3.查询条件用到了索引中列的精确匹配,但是中间某个条件未提供:用到索引(只用到最左)
4.使用like查询,%不能在第一位 ,如:
s_rolename like ‘南博%’:使用索引
s_rolename like ‘%南博’:不使用索引
所以如果列要模糊查询,可在前面添个字段,如'0南博万'
5.一次查询只会用到一个索引,查询时尽量遵循最左前缀原理
如果有多个索引匹配,则默认优先按照索引建立顺序启用

什么样的查询不会用到索引

1.查询条件中不包含索引列
2.索引列使用了函数或者表达式
3.使用了like,%在最前面

查询原则

1.只取出自己需要的列
select n_roleid,s_rolename from player_roles where n_roleid=1;
这里n_roleid是传进去的,可以不放到查询结果中
 
2.关联查询时永远用小结果集驱动大结果集
SELECT
  pr.s_rolename,
  t.*
FROM (SELECT
        n_roleid,
        n_lv
      FROM player_property pp
      WHERE pp.n_lv >= 30) t
  INNER JOIN player_roles pr
WHERE t.n_roleid = pr.n_roleid

存储过程

过程内的变量定义:
DECLARE  p_count1 INTEGER(11) DEFAULT 0;
SET @p_count2=0;
DECLARE:局部变量,作用范围是声明该变量的BEGIN...END块
SET:会话内全局变量,作用范围是当前会话,可以在SQL、PROC、FUNC之间传递,使用不当可能会出BUG:
比如2个过程都使用这个全局变量,则可能会出现变量被串用,因此在使用前建议初始化,SET @p_count2=0;
 
锁(SELECT … FOR UPDATE)
行级锁
  明确指定主键且有数据,无数据时没有锁
  select n_money,n_token into … from acc_balance where n_roleid=1 for update
表级锁
  没有指定主键或者主键不明确
  select * from acc_balance where n_roleid<>1 for update;

数据库操作

登录数据库
mysql --default-character-set=utf8 -uroot -p'123' -h192.168.0.14 -P3300 king_db
 
--default-character-set:设定client的字符编码
-u:登录用户
-p:密码
-h:指定HOST
-P:指定端口
 
导入数据库脚本
mysql --default-character-set=utf8 -uroot -p'123' -h192.168.0.14 -P3300 king_db<目录/脚本
mysql>source 目录/脚本
 
导出数据库脚本(mysqldump)

常用参数名

描述

--no-create-db,-n

没有CREATE DATABASE...

--no-data,-d

只导结构,不导数据

--database,-B

有CREATE TABLE…

--no-create-info,-t

没有CREATE TABLE…

--tables

指定需要导出的表,覆盖--database或-B选

--ignore-table

指定不需要导出的表

每次只能指定一个表,多个表需要重复多次指定

每个表必须同时指定数据库和表名db.tablename

 
示例
-- 导出全库结构
    mysqldump -uroot -p123 -h192.168.0.26 -P3301 -B --opt -R -d playboy_cn_cn_test > struct.sql
-- 导入结构
    mysql --default-character-set=utf8 -uroot -p123 -h127.0.0.1 -P3306 < struct.sql
-- 导出数据
    mysqldump -uroot -p123 -h192.168.0.26 -P3301 --opt -t playboy_cn_cn_test > data.sql
-- 导入数据
    mysql --default-character-set=utf8 -uroot -p123 -h127.0.0.1 -P3306 playboy_cn_cn_test < data.sql
 
最后附上本次培训的PPT以及一些Mysql执行脚本,可简化部分日常工作:http://files.cnblogs.com/cm4j/mysql.zip
 
原创文章,请注明引用来源:CM4J
 

Mysql的一些常用方法的更多相关文章

  1. Mysql基础教程之mysql 设置参数常用方法

    1)设置mysql的全局方法,设置完立刻重启mysqlvim /etc/my.cnf[mysqld]interactive_timeout=1800wait_timeout=1800 全局永久生效现在 ...

  2. mysql提权常用方法。 hack某某

    一般是root权限,知道mysql root权限,root账号密码 启动项提权:原理:利用高权限的root写入一个vbs脚本到启动项,再通过一些方法如ddos,社工管理员之类的方法来让服务器重启,运行 ...

  3. python操作mysql数据库的常用方法使用详解

    python操作mysql数据库 1.环境准备: Linux 安装mysql: apt-get install mysql-server 安装python-mysql模块:apt-get instal ...

  4. 3种PHP连接MYSQL数据库的常用方法

    对于PHP入门用户来说,我们只要掌握基本的数据库写入.读取.编辑.删除等基本的操作就算入门,也可以写出简单的程序出来,比如留言本.新闻文章系统等等.在整个过程中,MySQL数据库的连接也是比较重要的, ...

  5. mysql截取函数常用方法 即mysql 字符串 截取-- - 最后带上java字符串截取规则比较

    常用的mysql截取函数有:left(), right(), substring(), substring_index() 下面来一一说明一下: 1.左截取left(str, length) 说明:l ...

  6. mysql优化的常用方法

    mysql的优化,大体分为三部分:索引的优化,sql语句的优化,表的优化 1.索引的优化 只要列中含有NULL值,就最好不要在此列设置索引,复合索引如果有NULL值,此列在使用时也不会使用索引 尽量使 ...

  7. php apache 和mysql查看版本常用方法收集

    php: 1.命令行查询,下图是因为添加php进系统环境变量了 2.预定义常量PHP_VERSION查询 3.phpversion()函数查询 4.phpinfo()查询 apache: mysql: ...

  8. shell 实现mysql写入操作

    mysql -uroot study -proot << EOF > insert into top_n_movie(movie,sumprice)values('hello kit ...

  9. MYSQL 优化常用方法

    1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...

随机推荐

  1. js中event.target

    event.srcElement从字面上可以看出来有以下关键字:事件,源     他的意思就是:当前事件的源, 我们可以调用他的各种属性 就像:document.getElementById(&quo ...

  2. MySql中常用的hint

    对于经常使用Oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在MySQL里,也有类似的hint功能.下面介绍一些常用的. 强制索引 FORCE ...

  3. 为什么C#中ref和out 关键字 ?

    需求假设:现需要通过一个叫Swap的方法交换a,b两个变量的值.交换前a=1,b=2,断言:交换后a=2,b=1. 现编码如下: class Program   {       static void ...

  4. 介绍四款windows下的神器

    四款神器:Q-dir, Cmder, Everything, launchy Q-dir Q-dir: windows自带资源管理器explorer的加强版.(windows自带的资料管理器explo ...

  5. kali-dmitry 域名信息收集

    DMirty:用来收集以下信息: 1. 端口扫描 2. whois主机IP和域名信息 3. 从Netcraft.com获取主机信息 4. 子域名 5. 域名中包含的邮件地址 1.使用方法: Deepm ...

  6. js获取ModelAndView值的问题

    Springmvc中使用ModelAndView传值 return new ModelAndView(url).addObject(CommonConstant.PAGE_KEY, page) .ad ...

  7. My Tornado Particle Effect

    These animations are more able to demostrate this plugin than the following static images. :) test 1 ...

  8. Git 版本库添加空目录方法

    直接在版本库工作目录下创建空目录后,使用git status查看,发现空目录没有被版本库识别. 正确的添加空目录的方法: 在空目录下创建.gitkeep文件:touch .gitkeep 然后重新执行 ...

  9. (转)WCF开发框架形成之旅---WCF的几种寄宿方式

    WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用.本文分别对这几种方式进行详 ...

  10. tomcat 9.0配置管理员用户名和密码

    登录后,可以管理查看发布网站的信息,岗安装好的tomcat是没有管理密码的,可以在配置文件中修改. 在conf/tomcat-users.xml的文件中修改配置,默认的角色用户是被注销掉的.我去掉注释 ...