《mysql技术内幕》读书笔记

第2章 使用sql管理数据

2.6 索引表

  1. 唯一索引
    单列不允许有重复值出现,多列(符合)索引,不允许出现重复的组合值。
  2. 常规(非唯一性)索引
    可以获得索引的好处,但会出现重复值的情况。
  3. fulltext索引
    可用于完成全文检索
  4. spatial索引
    只适用于包含空间值的myisam表
  5. hash索引
    memory表的默认索引类型,可以通过创建btree索引来改写它

可以在使用create table语句创建新表时,包含索引定义。
为已有表添加索引,则可以使用语句alter tablecreate indexalter table语句比create index语句更灵活多变,因为它可以用来创建mysql所支持的任何一种索引。例如:

alter table tbname add index indx_name (index_columns);
alter table tbname add unique ......
alter table tbname add primary key ...(列不允许为null)
alter table tbname add fulltext ...
alter table tbname add spatial ...(列不允许为null)
create index index_name on tbl_name (index_columns);
create unique ...;
create fulltext ...;
create spatial ...;

这种方式不能省略index_name。
memory 表的默认索引类型是hash,散列索引对于精确值的查询速度非常快,但用于范围比较,可以使用btree索引来代替它。实现方式是在索引定义里增加using btree子句。

create table addresslist
(
id int not null,
name char(100),
index (id) using btree
) engine=memory;

如果只想对字符串列的前缀建立索引,那么在索引定义里为该列命名的语法是col_name(n),n表示的是,索引应该包括列值的前n个字节(二进制串类型)或前n个字符(非二进制串类型)。

create table addresslist
(
name char(30) not null,
address binary(60) not null,
index (name(10)),
index (address(15))
);

可以使用drop indexalter table语句删除索引,如果要使用drop index语句,必须给出那个要被删除的索引的名字:

drop index index_name on tbl_name;

而删除primary key,必须使用待引号标识符的形式给指定名字primary。

drop index `primary` on tbl_name;

前面的语句等价于:

alter table tbl_name drop index index_name;
alter table tbl_name drop primary key;

第11章 mysql数据目录

查看数据目录所在路径

在后台输入命令:
mysqld --verbose --help | grep dir
在mysql连接器后台输入命令:
show variables like 'datadir';

mysql管理的每个数据库都以数据目录的子目录形式存在。

第14章 数据库维护、备份和复制

一、把数据库备份为一个文件或一组文件

  1. 创建转储文件:
mysqldump --databases sampdb > sampdb.sql
  1. 将转储文件复制到远程主机:
scp sampdb.sql server-ip:/tmp
  1. 登陆远程主机,将转储文件加载到他的mysql服务器里:
mysql < /tmp/sampdb.sql

二、通过网络把数据库从一个服务器直接转储到另一个服务器,无需任何中间文件。(这种方法很难实验成功)

mysqldump --databases sampdb | mysql -h server-ip

猜你喜欢

转载自blog.csdn.net/GorgeousChou/article/details/85496245