优点:加快查询的速度
缺点: 减慢写的速度 ; 占用物理存储空间
2.索引类型?(不同的索引有不同的功能和约束方式)
普通索引 index *
唯一索引 unique
主键 primary key *
外键foreign key *
全文索引 fulltext
查看索引 desc 表名;show index from 表名
3.普通索引index的使用
使用说明
一个表中可以有多个INDEX字段
对应的字段值允许有重复
把经常做查询条件的字段设置为INDEX字段
INDEX字段的KEY标志是MUL
4.在已有表里创建index
create index 索引 on 表名(字段名);
删除
drop index 索引名 on 表名;
唯一索引 unique
值可以为NULL 但不允许重复一个表里可以有多个
标志UNI
在已有表里创建
create unique index 索引名 on 表名(字段名);
5.主键的使用规则?
一个表中只能有一个PRIMARY字段对应的字段值不允许重复且不允许有null值。
主键字段的KEY标志是PRI
通常把能够唯一定位到一条记录的字段设置为主键字段(记录编号字段)
通常与 AUTO_INCREMENT 连用 自动增长
如果有多个字段都作为PRIMARY KEY,称为复合主键,必须一起创建;建表时创建主键。
在已有表里创建主键
alter table 表名 add primary key(字段名);删除主键
alter table 表名drop primary key;
创建复合主键(字段的值不允许同时重复)
create table t19(
cip char(15),
port smallint(2),
stuatus enum("allow","deny"),
primary key(cip,port)
);
6.外键:让当前表中字段的值,在另一个表中指定字段值的范围内选择。
使用规则:表的存储引擎必须是innodb;字段类型必须匹配;被参考字段要是索引的一种(通常是primary key)
添加外键
alter table bjb add foreign key(bjb_id) references cwb(cwb_id)
删除外键
alter table 表名 drop foreign key 外键名;
alter table bjb drop foreign key bjb_ibfk_1;
on delete cascade on update cascade;
7.查看、修改表默认使用的存储引擎?
show create table 表名;create table 表名(字段名列表)engine=存储引擎名;
alter table 表名 engine=存储引擎名;
8.常用存储引擎的特点?
myisam特点
不支持外键、事务、事务回滚
表级锁
独享表空间
t1.frm 表结构 desc t1
t1.MYD 数据 select * from t1
t1.MYI 索引信息
innodb特点?
支持外键、事务、事务回滚
行级锁
共享表空间
t2.frm 表结构 desc t2
t2.ibd 数据+索引信息
事务 一次sql操作从开始到结束的过程被事务
事务回滚: 一次sql操作中,任意一步失败,恢复之前的所有操作。
事务日志文件
ib_logfile0
---->sql命令
ib_logfile1
ibdata1 ---->数据信息
insert into t1 values("bob",29);
锁:解决并发访问冲突文件
根据访问的类型分为
读锁 select * from t2 where id<=10
写锁 insert update delete
表级锁: 给整张表加锁 myisam
行级锁: 给当前被操作的记录加锁 innodb
建表是如何决定表使用哪种存储引擎?
执行查操作多的表使用myisam存储引擎
执行写操作多的表使用inondb存储引擎