日期:2014-05-16  浏览次数:20472 次

MySQL 数据库使用技巧
MySQL 数据库使用技巧

1. MySQL使用了ISAM/MyISAM/InnoDB/HEAP/Berkley DB(BDB)等几种引擎(表类型),通常缺省引擎是MyISAM。
   ISAM/MyISAM强调快速读取操作,每个表是一个文件,因此表大小受限于操作系统单个文件的最大大小。
   InnoDB存储引擎支持事务、行锁、外键,表和索引存放于表空间,表空间是一个或多个文件或裸空间(raw disk)。
   BDB   存储引擎支持事务、页锁、外键
   HEAP允许只驻留在内存里的临时表格,速度最快但不安全,用完之后必须删除,通常用来做临时表。
   目前只有InnoDB和BDB引擎支持事务处理和外键
   从版本3.23.43b开始,InnoDB引擎支持外键约束, 从版本4.0.2-alpha开始支持事务, 截止到版本4.1.12a仍然不支持视图。
   多种引擎可以协同工作,但事务中的非事务型表(ISAM/MyISAM/HEAP)无法回滚。

2. MySQL导出数据库, 输出重定向
   mysqldump -u <user> -p [--opt][-q | --quick] <db_name> [tables] > <file_path>
          [-q | --quick] --不缓冲查询,直接导出至stdout
          [--opt]   --优化导出(同--quick --add-drop-table --add-locks --extended-insert --lock-tables)
          [tables]  --多个表以空格分隔 <tb1_name> <tb2_name> ...
   还可以同时导出多个数据库
   mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
   mysqldump [OPTIONS] --all-databases [OPTIONS]

3. MySQL导入数据库备份,输入重定向
   mysql -u <user> -p  <db_name>  <  <file_path>

4. 登录命令行处理器, -p 参数表示使用密码
   mysql [-h <host_name>] -u <user> -p  [<db_name>]

5. 查看所有引擎、支持情况及缺省引擎
   show engines;

6. 修改缺省引擎
   修改MySQL配置文件my.ini(Windows平台)或/etc/my.cnf(Unix平台)相应键值
   可能是以下两种格式之一
   default-storage-engine=MyISAM
   default-table-type=MyISAM

7. 查看所有支持的字符集
   show character set;

8. 修改缺省字符集,通常缺省字符集为latin1(ISO-8859-1)
   修改MySQL配置文件my.ini(Windows平台)或/etc/my.cnf(Unix平台)相应键值
   default-character-set=utf8
   还可以在启动服务时指定参数--language
   mysqld --language=latin1 ...

9. 查看当前主机所有数据库
   show databases;
   mysqlshow -u <user> -p --status    --OS command window

10. 查看数据库运行状态
    show status;

11. 改变当前数据库,MySQL数据库不须disconnect <db_name>
    use <db_name>

12. 创建表时指定表类型(数据库引擎)
    注意:如果指定了不受支持的表类型,MySQL将自动改用缺省引擎(对此MySQL已经考虑进行修改)。
    create table <tb_name> (...) type={BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM}

13. 修改数据表的表类型
    alter table <tb_name> type = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM}

14. 从 MySQL3.23开始,在创建一个表时,可以使用关键词 TEMPORARY。
    它的名字被限止在当前连接中,当连接关闭时,临时表会自动地被删除。
    这就意味着,两个不同的连接可以使用同一个临时表名而不会与另一个冲突,
    也不会与同名现有的表相冲突(现有表将被隐藏,直到临时表被删除)。
    从 MySQL 4.0.2 开始,为了能创建临时表,必须有 CREATE TEMPORARY TABLES 权限。
    create temporary table (...)

15. 缺省的,MySQL搜索是大小写不敏感的,如果需要一个列总是被当作大小写敏感的方式,必须声明它为BINARY
    create table <tb_name> (c varchar(10) [not null default ''] binary, ...)

16. 查看当前数据库所有表
    show tables;

17. 查看表的结构
    [describe | desc] <tb_name>;

18. 查看索引
    show index from <tb_name>;

19. 查看数据表数据引擎、字符集等详细信息
    show table status [from <db_name>];      --指定数据库所有表
    show table status [from <db_name>] like '<tb_name>'  --表名支持通配符,不区分大小写
    show create table <tb_name>;       --仅显示建表语句、数据库引擎、字符集

20. 显示当前时间
    sele