MYSQL index 索引

1.索引的优点与缺点?
优点:加快查询的速度
缺点: 减慢写的速度  ; 占用物理存储空间
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存储引擎

猜你喜欢

转载自blog.csdn.net/weixin_42425141/article/details/80677426