前言
对于一个后端开发者,对数据库的了解是必不可少的。工作的一年以来,对mysql的使用或多或少,但每个项目都必然会接触。或者是表结构设计,或者是数据增删改查,又或者是存储引擎,约束,索引优化等……
好不容易抽出时间来整理博客,就顺便理了一下我对mysql的理解。
一般,我将之分为两部分,分别是Mysql部分和Sql语法部分,本篇文章,就讲讲我对mysql部分的理解。
Mysql部分
- [ 认知 ]
1. 首先,mysql是一个开源的,关系型数据库管理系统。
2. Mysql现在属于Oracle,一般分为社区版和企业版。
3. 官方提供了多平台的程序版本,不用担心跨平台的问题。
4. 用户可以自己选择MSI打包安装和ZIP绿色安装。(msi仅支持windows)
- [ 目录结构 ]
安装目录下:
-bin 可执行文件
-data 数据文件
-docs 文档
-include 包含的头文件
-lib 库文件
-share 错误消息和字符文件
- [ 技巧 ]
1. Mysql有一个配置向导文件,一般在bin/mysqllinstanceconfig.exe(后缀由当前运行的平台决定)。
2. detailed 详细配置 standard 标准配置。
3. 可将Mysql配置为服务进程启动,这样当操作系统运行时,将自动运行Mysql。
4. mysql为客户端,mysqld为服务端。
5. windows下,可将bin目录配置为环境变量,则可以直接通过cmd运行,无需跳转目录。
6. default-character-set = utf8 默认编码为 utf8
7. 当发现没有my.cnf时,可从share文件夹中复制my-medium.cnf
- [ 规范 ]
1. 关键字,函数名,一般采用大写字母
2. 数据库名称,表名称,字段名称,一般采用小写字母
3. 语句之间,以;(封号)结尾
- [ 配置与优化 ]
配置可从my.cnf/my.ini中配置,也可以通过命令动态配置
以下有些命令,寻常开发中用不到,主要在性能调优上才会使用
default-character-set = utf8; -- client/mysqld编码
max_connections -- mysql最大并行连接数
back_log -- mysql允许暂存连接数
lower_case_table_names = 1 -- 设置表名称不区分大小写
wait_timeout -- 闲置连接存活时限
interactive_timeout -- 闲置交互式连接存活时限
key_buffer_size -- 索引缓冲区大小
query_cache_size -- 查询缓冲区大小
record_buffer_size -- 顺序扫描线程缓冲区大小
read_rnd_buffer_size -- 随机读缓冲区大小
sort_buffer_size -- 排序线程缓冲区大小
join_buffer_size -- 连接查询缓冲区大小
table_cache -- 表高速缓存的大小
max_heap_table_size -- 用户可创建内存表的大小
tmp_table_size -- 可通过设置该项,增加临时表的容量大小
……
// 更多配置,可以参考一些资料。
- [ 常用命令 ]
在黑框框里的指令~
mysql -uroot -plvpeigang - -prompt \h -- 修改mysql提示符
mysql -uroot -plvpeigang -- 登录mysql
exit -- 退出
mysqladmin -uusername -poldpassword pwd -- 修改密码
SELECT VERSION(); -- 当前版本
SELECT NOW(); -- 当前时间
SELECT USER(); -- 当前用户
grant select,insert,update,delete on 数据库.* to 用户名@登录主机 identified by \"\" // 增加一个用户
- [ 结语 ]
实际项目开发中,作为phper,却是很少用到对于Mysql的调优、配置等,一般而言,设计合理的表结构,字符编码,字段格式,索引,外键,关系这些,已经足够了。但是,同样作为一个开发者而言,对mysql的方方面面有一定了解,也是必要的。
网友评论