设为首页 收藏本站
查看: 793|回复: 0

[经验分享] Mysql(二)-索引、存储引擎

[复制链接]

尚未签到

发表于 2018-10-7 06:03:57 | 显示全部楼层 |阅读模式
  ##########################################################
  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
  --》字段类型要一致
  --》被参照字段必须要是索引类型的一种
  创建外键:
  命令:foreign  key(字段名)  references  表名(字段名)
  on  update cascade     on  delete cascade
  create table jfb(
  id int auto_increment,
  name char(10),
  pay  float(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
  [mysql]
  default-storage-engine=引擎类型
  设置表的存储引擎:
  create  table  表名(。。。。);                //使用默认引擎
  create  table  表名(。。。。)engine=innodb;        //设置存储引擎为innodb
  修改表使用的存储引擎:
  alter table 表名 engine=存储引擎类型;
  ################################################################################3
  三、常用引擎的特点:
  myisam特点:
  表.MYI   索引信息
  表.MYD  数据
  表.frm   表结构
  支持表级锁 (锁一张表)
  不支持事务  事务回滚
  innodb特点:
  表.frm   表结构
  表.ibd   索引信息+数据
  支持行级锁 (只给当前被访问的行加锁)
  支持事务  事务回滚
  锁的作用:解决并发访问冲突问题。
  锁类型 :读锁    和   写锁
  锁粒度 : 行级锁    表级锁
  事务: 一次数据访问从开始到结束的过程 称为事务
  事务回滚:  一次数据访问 任意一步执行失败,恢复所有操作。
  事务的特性:  一致性  原子性  隔离性
  事务日志文件:记录对innodb存储引擎的表执行过的操作。
  工作如何如何决定表使用的存储引擎:
  接收写操作多的表适合使用innodb存储引擎。
  接收读操作多的表适合使用myisam存储引擎


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-614043-1-1.html 上篇帖子: MySQL数据库(二) 下篇帖子: mysql二进制免编译安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表