马哥linux分享之捕捉mysql中不可忽视的知识点

作者: 小小295813080 2014-08-25 17:50:07
http://www.magedu.com/

一、mysql命令的分类
mysql命令可分为客户端命令和服务器端命令两类:
1)客户端命令
\c:提前终止结束语句
\g:无论语句结束符是什么,直接将此语句送至服务器端执行;
\G:无论语句结束符是什么,直接将此句送到服务器端执行,而且结果以竖排方式显示;
\! COMMAND:执行shell命令
\W:语句执行结束后显示警告信息;
\#:对新建的对象,支持补全功能;
\r:重新连接到服务器上来
补充:mysql客户端命令里提到的还有 mysqldump(备份工具), mysqlimport(导入工具),mysqlcheck
2)服务器端命令:
mysqld
mysql_multi: 支持多实例的
mysql_safe: 支持安全线程的
mysqlbinlog: 查看mysql的二进制工具
mysqlhotcopy:mysql的备份工具
服务器语句有语句结束符,默认为分号
\d: 定义语句结束符(delimiter定义语句结束符)
//:语句结束符
eg:show database // 若想换回来使用\d
所有服务器语句只有执行客户端才能进行,而客户端不需要语句结束符;
服务器端命令如何获取帮助?
help COMMAND :获取帮助信息
help command index:获取索引帮助信息 (要想获得进一步的帮助信息,可以把执行help command index后显示的URL后的链接复制下来贴到浏览器内还能获取到官方文档)
二、mysqladmin命令的使用:
1)简介:mysqladmin用来执行管理命令的专用命令,也是一个客户端命令,通过客户端连接到服务器端去管理命令,mysqladmin很独特,它是一个具有许多子命令的命令
2)用法: mysqladmin [option] command [arg] [command [arg]]...
mysqladmin -uroot -p password 'NEW_PASS' 为用户设定密码的
3)常用命令:
processlist 进程列表,可以列出服务器上正在执行所有进程列表
status 查看mysql的状态
--sleep N: 显示频率
--count N:显示多个状态
eg:mysqladmin status --sleep 2 mysql两秒钟显示一次
eg:mysqladmin status --sleep 2 --count 2 mysql两秒钟显示1次显示2次
extended-status :显示状态变量
varitables: 显示服务器变量
flush-privileges: 让mysqld重读授权表,等同于reload;
flush-status:重置大多数的服务器的状态变量
flush-tables;关闭打开的所有的表
flush-threads: 重置线程池的,或线程缓存
flush-logs: 二进制和中继日志滚动
flush-hosts: 刷新主机,清除主机的内部信息
kill :杀死一个线程的
refresh: 相当于同时执行flush-hosts和flush-logs同时执行
shutdown: 关闭mysql服务器进程,可停止mysql服务器
version: 服务器版本及当前状态信息
start-slave:启动复制,启动从服务器复制线程(复制的线程包括两个SQL thread和IO thread)
stop-slave:关闭复制,停止复制线程;
三、存储引擎
1)存储引擎的概念:存储引擎从某种意义上讲叫表类型,每一个表都可以自由的独立的选择一种存储引擎,存储引擎不是数据库之间的概念而是表之间的的概念,同一个数据库中的多张表完全可以使用不同的存储引擎,也就意味着底层的存储机制是各不相同的。
2)存储引擎主要包括MyISAM和InnoDB
MyISAM存储引擎,也被称为表类型)无事务,表锁;每个表三个文件分别如下:
.form:表结构定义文件
.MYD:表数据定义文件
.MYI:表索引定义文件
InnoDB:事务,行锁;所有表共享一个表空间文件(建议:每表一个独立的表空间文件;)
.form: 表结构
.ibd: 表空间(里面存储了表数据和表索引)
3)show engines:可以显示当前服务器所支持的所有引擎,
show table status [like ...] 显示一张表的状态信息
eg:show table status like 'use'; 显示use表的状态信息
eg:show table status like 'use'\G 查看use表的属性信息,并竖排显示
四、mysql的数据类型(MySqL data types )相关的知识点
1、mysql的数据类型:
1)数值型
精确数值
int
decimal 十进制
近似数值
float
double
real 实数
2)字符型
定长:char(#)、binary
变长:varchar(#)、varbinary
text,blob(大字符,text不区分大小写,blob区分大小写)
enum,set (内置类型)
3)日期时间型
data,time,datatime,timestamp
2、数据类型的意义:
1)存入的值类型
2)占据的存储空间
3)定长和变长
4)如何比较及排序
5)是否能够创建索引
2、数值类型:
int 整型
tinyint (微整型) 有符号时是0-255,无符号时是-128-127
smallint (小整型)
mediumint(中整型)
int (整型)
bigint (大整型)
decimal:定点数值
float:单精度浮点值 4bytes
double:双精度浮点值 8bytes
bit:按位存储
3、字符串数据类型:
char 字符型最多只能存储255个字符 定长
varchar 最大只能存储65535个字符 变长(不区分字符大小写)
binary 定长
varbinary 变长 (区分字符大小写)
tinyblob 微型blob 255字节(二进制的大对象,它们是字节字符串区分字符大小写)
blob 标准blob 64kb
mediumblob 中级blob 16Mb
longblob 长blob 4Gb
tinytext 微型text(不区分字符大小写)最多只能存储255个字符
text 标准text 最多只能存储65535个字符
mediumtext 中级text 最多只能存储16777215个字符
longtext 长text 最多只能存储4294967235个字符
enum 枚举型 最多只能存储65535
set 集合 1-64
4、日期时间型:
data 3 bytes
time 3 bytes
datatime 8 bytes
timestamp 4 bytes
year 1 bytes
5、字符串类型的修饰手段:
not null 不允许为空
null 可以为空
default 指定默认值
binary 不区分字符大小
show characher sets; 显示当前字符型数据库字符集
show collation; 显示当前字符型数据库所支持的排序规则
show global varables like '%char%';
select database(); 表示执行一个函数(一个内置的函数)
select last_insert_id();
auto_increment 自动增长(整型 非空 无符号)
eg: create table test(id int unsigned auto_increment not null primary key,Name char(20))
unsigned 无符号
cerate table test(id int unsigned
补充:
1、mysql还有一个特点就是支持名称补全
名称补全:打开数据库时必须将每一个数据库的名称和每一个表的名称每一个字段的名称都要载入内存当中来,这可能会导致我们在连接到mysql上时有大量的延迟,因为它必需要遍历每一个数据库的每一个表的定义,这是非常慢的。
--html :可以让数据库显示为html格式
2、键和索引
1)键也被称为是约束,可用作索引,属于特殊索引(有特殊限定,比如数值不相同):它们存储下来都是B+Tree的结构。
2)索引是关系数据库的内部实现技术,属于内模式的范畴 ,create index语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引
3)索引有两种类型:
b+tree:具有动态平衡的优点
hash:具有查找速度快的特点
几乎所有的字段都支持b+tree索引,但并非所有的字段都支持hash索引。
4)创建索引的原则:
(1)对较大的表才建立索引(约5000条记录以上),并检索的数据少于总行数的2%到4%
(2)一个表可建立任意多个索引,但不能太多,会增加系统维护的开销,索引建立后由系统维护。
(3)经常出现在where子句或联接条件中的列上作为索引关键字
(4)索引关键字可以是一个列,也可以是多个列组合成的复合索引。如果是复合索引,则查询条件中含有主关键字时,系统使用索引,加快查询速度。如果查询条件中只含有次关键字,则系统不使用索引。

相关资讯