mysql 使用指南._Mysql 使用指南

帮助的使用

按照层次看帮助

如果不知道帮助提供什么,可以一层一层往下看:1

2MySQL> ? content

# 在列出的分类中继续使用 ? (内容) 查看对应的帮助

快速查阅帮助

需要快速查阅某项语法时,用关键字进行快速查询. 也是使用 ?

### 表类型(存储引擎)的选择

mysql的存储引擎包括:MyISAM、 InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、

ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引

擎都是非事务安全表.

Myisam mysql默认存储引擎,当create创建新表时,未指定新表存储引擎时,默认使用Myisam.

每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是 .frm(存储表定义)、.MYD (MYData,存储数据)、.MYI (MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。是在web,数据仓储和其他应用环境下最常用的存储引擎之一

InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比 Myisam的存储引擎,InnoDB 写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。用于事务处理应用程序,具有众多特性,包括ACID 事务支持

字符集

概述

字符集是一套符号和编码的规则,不论在Oracle 还是MySQL,都存在字符集的选择问题,后期字符集的更换是比较高的操作,页存在风险,所以在应用开始阶段,就按照需求选择合适的字符集,避免后期不必要的调整.

MySQL支持的字符集

可以用show character set命令查看所有MySQL支持的字符集,

MySQL的字符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念,字符集是用来定义MySQL存储字符串的方式,校对规则是定义了比较字符串的方式,字符集和校对规则是一对多的关系.每个字符集至少一个校对规则,可以用show COLLATION LIKE 'utf8%';命令查看相关字符集的校对规则.

字符集的设置

mysql 的字符集和校对规则有 4 个级别的默认设置:服务器级、数据库级、表级和字段级。分别在不同的地方设置,作用也不相同。

索引的设计与使用

概述

索引可以理解为就是数据库的目录,目的是为了让数据库更快的找回返回的数据.

对相关列使用索引是提高SELECT操作性能的最佳途径.存储引擎支持每个表至少16个索引,总索引长度至少256字节,大多数存储引擎有更高的限制.

设计引擎的原则

1: 最适合索引的列是出现在where子句中的列,或连接子句中指定的列,而不是出现在select关键字后的选择列表中的列.

2: 使用唯一索引,考虑某列中值的分布,对于唯一值的列,效果最好,多个重复值的列,效果最差.(例如,年龄的就很容易区分,但是性别的就没什么用)

3: 使用短索引,如果有一个char(200)列, 如果在前10个或20个字符内,多数值是唯一的,就不要对整个列进行索引.对前10个字符索引能够节省大量索引空间,也可能查询更快

4: 最左前缀:顾名思义,就是最左优先,比如我们创建了lname_fname_age多列索引,相当于创建了(lname)单列索引,(lname,fname)组合索引以及(lname,fname,age)组合索引。这样一个多列索引可以起几个索引的作用,因为可以利用索引中最左边的列集来匹配行.

5: 不要过度索引 索引并不是越多越好,每个额外的索引都要占用额外的磁盘空间,并降低写操作的性能.

6: 考虑在列上进行的比较类型,索引可用于< <= = > >= between 运算,在模式具有一个直接量前缀时,索引也用于 LIKE 运算。如果只将某个列用于其他类型的运算时(如 STRCMP( )),对其进行索引没有价值。

btree索引和hash索引

hsah索引把数据的索引以hash形式组织起来,因此当查找某一条记录的时候,速度非常快。当时因为是hash结构,每个键只对应一个值,而且是散列的方式分布。所以他并不支持范围查找和排序等功能。

B+tree是mysql使用最频繁的一个索引数据结构,是Inodb和Myisam存储引擎模式的索引类型。相对Hash索引,B+树在查找单条记录的速度比不上Hash索引,但是因为更适合排序等操作,所以他更受用户的欢迎。毕竟不可能只对数据库进行单条记录的操作.

锁机制和事务控制1

2

3

4# 加锁

LOCK TABLES

# 解锁

UNLOCK TABLES

InnoDB提供行级锁,支持共享锁和排他锁两种锁定模式,以及四种不同的隔离级别.

事务控制

在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作。

事务控制语句:start transaction 或 begin ; 显式的开启一个事务

commit ,提交事务,

rollback 回滚会结束用户的事务,并撤销正在进行的所有未提交的修改.

chain 定义事务提交后的操作,会立即启动一个新的事务

release 定义事务回滚之后的操作,release 会断开和客户端的连接.

set autocommit =0 禁止自动提交事务 =1 开启自动提交事务

在事务中可以通过定义savepoint,指定回滚事务的一个部分,但是不能指定提交事务的一个部分。对于复杂的应用,可以定义多个不同的savepoint,满足不同的条件时,回滚不同的 savepoint。需要注意的是, 如果定义了 相同名字的 savepoint ,则后面定义的savepoint会覆盖之前的定义。对于不再需要使用的savepoint,可以通过release savepoint命令删除savepoint,删除后的savepoint,不能再执行rollback to savepoint命令。

常用SQL技巧

检索包含最大/最小值的行(使用max min 函数 找不到返回NULL)1Select Student_name ,MIN(test_score),MAX(test_score) from Student group by student_name;

提取随机行1

2# 随机顺序检索数据行

select * from name order by rand();

order by rand() 和limit 结合可以从一组列中选择随机样本1SELECT * from table1,table2 where a=b and c

你可能感兴趣的:(mysql,使用指南.)