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

[经验分享] mysql中的键和索引

[复制链接]

尚未签到

发表于 2018-9-27 06:34:37 | 显示全部楼层 |阅读模式
一、主键 索引 关系
  1.主键:主键的唯一作用就是唯一标识表中的某一行数据。分为单一主键和联合主键:
  单一主键:只用一列就能唯一标识一行。
  联合主键:当使用一列已经不能唯一标示一行的时候,就要采用多列唯一标识一行,就是联合主键。联合主健多个字段不能同时相同
  2.索引:索引的作用就是提高数据的检索速度,分为单一索引和联合索引:
  单一索引:只是用某一列数据作为索引,默认是index索引,这一列可以包含重复数据;如果某一列不存在重复数据最好设置成unique形式的索引,比index的索引速度更快,在text数据上要使用fulltext索引。
  联合索引:为了更进一步提高检索速度,每次检索都需要用多列同时进行时,就可以把这多列设为联合索引,提高索引速度,根据多列是否唯一,也分为index索引和unique索引。
  联合索引的使用必须注意:不能垮字段使用,比如a b c联合索引 只有a|ab|abc 才能用上联合索引字段。
  3.主键一定是索引,但是索引不一定是主键。一个表只能有一个主键或联合主键,但是可以有多个索引。
  主键字段必须不能为空,但是索引字段可以为空。

二、外键和主健的关系
  1.外键就是让表中字段的值在参照表中的字段中选择的一种约束标示
  2.创建外键的条件
  被参照字段必须是主键
  参照字段和被参照字段必须是相同的数据类型
  表的储存引擎必须是innodb

三、语法格式
  1.创建主键的命令格式
  

1.1.在创建表时创建主健  
create table 表名(字段列表,primary key(需要设置成主健的字段名) auto_increment);  #auto_increment 是需要将主健字段设置成自动增长的关键字,如果主健不是整数类型或者不需要自动增长的时候不需要该关键字;当需要设置联合主键时,多个需要设置成主健的字段名之间用逗号隔开,而且不能使用自动增长`
  
或者
  

  
create table 表名(主健字段 字段类型 primary key auto_increment,字段列表);#此方法在创建联合主健时不可用
  
1.2.在已经创建好的表上创建主健(如果该表中已经存在数据,且数据违反了主键约束,则无法创建主健,需要解决数据冲突后再创建)
  
alter table 表名 add primary key(需要设置成主健的字段名) auto_increment;
  

  2.创建外键的命令格式
  

2.1.在创建表时创建外键(满足创建外键的条件下)  
create table 表名(字段列表,foreign key(需要创建外键约束的字段) references 被参照表的表名(被参照表的被参照字段) on update cascade on delete cascade)engine=innodb;
  
如果外键需要具有唯一标示的时候还可以在外键上加上主健约束
  
2.2.在已经存在的表中创建外键
  
alter table 表名 add foreign key(字段名) references 参考表名(参考字段名) on update casecade on delete cascade) engine=innodb;
  

  3.创建索引的命令格式
  

3.1.创建表的时候创建索引(索引可以有多个,在以下示例中添加的是两个)  
create table 表名(字段列表,index(已经存在字段名),index(已经存在的字段名));#如果是联合索引的多个已经存在字段名用,隔开,记住不能跨字段设置联合索引
  
默认的索引名和字段名相同
  
3.2.把已经存在的表中的字段设置为索引字段
  
create index 索引名称  on 表名(字段名)
  
索引名可以自己命名  一般使用字段名作为索引名
  

  4.创建唯一索引的命令格式和普通索引的格式相似只需要保证字段记录的唯一性就可以使用unique关键字



运维网声明 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-602477-1-1.html 上篇帖子: mysql master-slave读写分离 下篇帖子: Mysql DBA 高级运维学习之路-MySQL高可用工具drbd实战
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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