zwd 发表于 2018-10-7 06:03:57

Mysql(二)-索引、存储引擎

  ##########################################################
  Mysql索引:
  类似于书的目录
  类型:
  --》普通索引 index
  --》唯一索引 unique
  --》主键 primary key
  -->外键 foreign key
  优点:
  提高查询速度
  缺点:
  减缓写入的速度
  ########################################################################################
  一、普通索引:index
  查看索引:
  desc 库名.表名;
  show index from 库名.表名;
  默认使用的索引类型:
  BTREE(二叉树) hash B+Tree
  创建索引:
  --》建表时创建:
  creat table 表名(
  字段名 类型(宽度) 约束条件,
  字段名 类型(宽度) 约束条件,
  index(字段1),index(字段2)
  );
  create table t2 (
  name char(10) not null,
  index(name)
  );
  --》已有表添加索引:
  create index 索引名 on 表名(字段名);

  create index>  //注意:我们索引名与字段名可以不相同,但是为了方便辨认,我们一般将索引名与字段名设置相同。
  删除索引:
  drop index 索引名 on 表名;
  ##########################################################################################3
  二、主键:primary key
  使用规则:
  -->设置主键的字段的值,不能重复,且不能赋空值
  --》一个表只能有一个主键
  --》如果,多个字段都作为primary key,称为复合主键,必须一起创建。
  --》主键字段的key标志为pri
  --》通常与auto_increment(自动增长),一起连用。
  创建主键:
  --》建表时创建:
  create table 表名(
  字段名1 类型(宽度) 约束条件,
  字段名2 类型(宽度) 约束条件,
  primary key(字段名1,字段名2)
  );
  create table t4(
  id int auto_increment,            //设置自动增长(不赋值时,会根据上条记录自动加1)
  name char(10),
  primary key(id,name)            //设置复合主键
  );
  --》已有表创建:
  alter table 表名 primary key(字段名);
  alter table t1 primary key(id);
  删除主键:
  alter table 表名 drop primary key;
  ##########################################################################################
  三、唯一索引:unique
  使用规则:
  --》字段值可以为null,但不能重复
  --》当将字段修改为null,限制与主键相同,
  --》表中可以有多个unique字段
  创建唯一索引:
  --》建表时创建:
  create table 表名(
  字段名1 类型(宽度) 约束条件,
  字段名2 类型(宽度) 约束条件,
  unique(字段名1),
  unique(字段名2)
  );
  create table t5(
  id int,
  name char(10),
  unique(id),
  unique(name)
  );
  --》已有表创建:
  create unique index 索引名 on 表名(字段名);
  删除唯一索引:
  drop index 索引名 on 表名;
  #############################################################################################
  四、外键:foreign key
  外键:
  让当前表字段的值在另一个表中字段值的范围内选择。
  使用规则:
  --》表的存储引擎必须是innodb
  --》字段类型要一致
  --》被参照字段必须要是索引类型的一种
  创建外键:
  命令:foreignkey(字段名)references表名(字段名)
  onupdate cascade   ondelete cascade
  create table jfb(
  id int auto_increment,
  name char(10),
  payfloat(7,2),
  primary key(id),
  );
  create table xsb(
  num int,
  name char(10),
  class char(10),
  foreign key(num) references key(id) on update cascade on delete cascade
  );
  //创建jfb表,创建xsb表。xsb的num需要参考jfb中的id字段。即将num设为外键,将jfb中的id设为参考键。并设置自动更新。
  insert into jfb values(1,"bob",20000),(2,"lucy",19000);
  insert into xsb values(3,"jim","1709");    //无法插入,因为num的值,不在jfb的id值范围内。
  insert into xsb values(1,"jim","1709";    //插入成功

  update jfb set>  select * from xsb;                //更新jfb中的id字段数据,查看xsb中的记录,也同时更新
  delete from jfb where name=“bob”;
  selece * from xsb;                //删除jfb表中记录,xsb中的记录也随之删除。
  查看外键:
  show create table 表名;                //可以查看外键信息,包含外键名
  删除外键:
  alter table 表名 drop foreign key 外键名;
  ##############################################################################################
  mysql存储引擎:
  一、介绍:
  mysql数据库服务软件自带的程序,不同的存储引擎有不同的功能和数据存储方式,是表的处理器。
  mysql服务体系结构:
  连接池
  sql接口
  分析器
  优化器
  查询缓存
  存储引擎
  文件系统
  管理工具
  ########################################################################################
  二、基本设置、
  查看数据库服务使用的存储引擎:
  show engines;
  查看表使用的存储引擎:
  show create table 表名;
  设置数据库服务使用的存储引擎:
  vim /etc/my.cnf
  
  default-storage-engine=引擎类型
  设置表的存储引擎:
  createtable表名(。。。。);                //使用默认引擎
  createtable表名(。。。。)engine=innodb;      //设置存储引擎为innodb
  修改表使用的存储引擎:
  alter table 表名 engine=存储引擎类型;
  ################################################################################3
  三、常用引擎的特点:
  myisam特点:
  表.MYI   索引信息
  表.MYD数据
  表.frm   表结构
  支持表级锁 (锁一张表)
  不支持事务事务回滚
  innodb特点:
  表.frm   表结构
  表.ibd   索引信息+数据
  支持行级锁 (只给当前被访问的行加锁)
  支持事务事务回滚
  锁的作用:解决并发访问冲突问题。
  锁类型 :读锁    和   写锁
  锁粒度 : 行级锁    表级锁
  事务: 一次数据访问从开始到结束的过程 称为事务
  事务回滚:一次数据访问 任意一步执行失败,恢复所有操作。
  事务的特性:一致性原子性隔离性
  事务日志文件:记录对innodb存储引擎的表执行过的操作。
  工作如何如何决定表使用的存储引擎:
  接收写操作多的表适合使用innodb存储引擎。
  接收读操作多的表适合使用myisam存储引擎

页: [1]
查看完整版本: Mysql(二)-索引、存储引擎