视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Mysql的一些常用方法_MySQL
2020-11-09 18:39:30 责编:小采
文档


bitsCN.com

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

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 prWHERE 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 bitsCN.com

下载本文
显示全文
专题