第2章 使用sql管理数据
2.6 索引表
- 唯一索引
单列不允许有重复值出现,多列(符合)索引,不允许出现重复的组合值。 - 常规(非唯一性)索引
可以获得索引的好处,但会出现重复值的情况。 - fulltext索引
可用于完成全文检索 - spatial索引
只适用于包含空间值的myisam表 - hash索引
memory表的默认索引类型,可以通过创建btree索引来改写它
可以在使用create table语句创建新表时,包含索引定义。
为已有表添加索引,则可以使用语句alter table
或create index
。alter 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 index
或alter 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章 数据库维护、备份和复制
一、把数据库备份为一个文件或一组文件
- 创建转储文件:
mysqldump --databases sampdb > sampdb.sql
- 将转储文件复制到远程主机:
scp sampdb.sql server-ip:/tmp
- 登陆远程主机,将转储文件加载到他的mysql服务器里:
mysql < /tmp/sampdb.sql
二、通过网络把数据库从一个服务器直接转储到另一个服务器,无需任何中间文件。(这种方法很难实验成功)
mysqldump --databases sampdb | mysql -h server-ip