mysql的key和index多少有点令人迷惑,这实际上考察对数据库体系结构的了解的。
1 key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等。
  primary key 有两个作用,一是约束作用(constraint),用来规范一个存储主键和唯一性,但同时也在此key上建立了一个index;
unique key 也有两个作用,一是约束作用(constraint),规范数据的唯一性,但同时也在这个key上建立了一个index;
  foreign key也有两个作用,一是约束作用(constraint),规范数据的引用完整性,但同时也在这个key上建立了一个index;
  可见,mysql的key是同时具有constraint和index的意义,这点和其他数据库表现的可能有区别。(至少在oracle上建立外键,不会自动建立index),因此创建key也有如下几种方式:
  (1)在字段级以key方式建立, 如 create table t (id int not null primary key);
  (2)在表级以constraint方式建立,如create table t(id int, CONSTRAINT pk_t_id PRIMARY key (id));
  (3)在表级以key方式建立,如create table t(id int, primary key (id));

其它key创建类似,但不管那种方式,既建立了constraint,又建立了index,只不过index使用的就是这个constraint或key。

2 index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。索引要分类的话,分为前缀索引、全文本索引等;
  因此,索引只是索引,它不会去约束索引的字段的行为(那是key要做的事情)。
  如,create table t(id int, index inx_tx_id  (id));

3 最后的释疑:
  (1)我们说索引分类,分为主键索引、唯一索引、普通索引(这才是纯粹的index)等,也是基于是不是把index看作了key。
  比如 create table t(id int, unique index inx_tx_id  (id));  --index当作了key使用

(2)最重要的也就是,不管如何描述,理解index是纯粹的index,还是被当作key,当作key时则会有两种意义或起两种作用。

MySQL 建表时的四种key相关推荐

  1. mysql建表时主键_mysql建表时设置主键的方法

    mysql建表时设置主键的方法 发布时间:2020-10-10 15:17:28 来源:亿速云 阅读:119 作者:小新 mysql建表时设置主键的方法?这个问题可能是我们日常学习或工作经常见到的.希 ...

  2. mysql建表时错误1075_navicat出现错误1075怎么办

    MYSQL中AUTO_INCREMENT会在新记录插入表中时生成一个唯一的数字.希望在每次插入新记录时,自动地创建主键字段的值,可以在表中创建一个 auto-increment 字段. mysql创建 ...

  3. mysql 建表时建立索引_mysql 分享建表和索引的几点规范

    一. MySQL建表,字段需设置为非空,需设置字段默认值. 二. MySQL建表,字段需NULL时,需设置字段默认值,默认值不为NULL. 三. MySQL建表,如果字段等价于外键,应在该字段加索引. ...

  4. Python3 使用 pymysql 连接 MySQL 建表时出现 Warning3719 UTF8 警告

    在学习 Python3 爬虫关系型数据库储存时,利用 pymysql 连接 MySQL 建表,测试用的代码如下,第一句 SQL 用于获取当前 MySQL 的版本信息,第二句 SQL 执行创建 spid ...

  5. mysql 建表时创建唯一索引

    Mysql建表与索引使用规范整理 一,设计表规范: MySQL建表,字段需设置为非空,需设置字段默认值: MySQL建表,字段需NULL时,需设置字段默认值,默认值不为NULL: MySQL建表,如果 ...

  6. mysql建表时主键_mysql建表时怎么设置主键?

    设置方法:在"CREATE TABLE"语句中,通过"PRIMARY KEY"关键字来指定主键,语法格式"字段名 数据类型 PRIMARY KEY [ ...

  7. MySQL建表时Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP

    问题描述:在利用MySQL语句建立表结构时出现了Error Code : 1293 Incorrect table definition; there can be only one TIMESTAM ...

  8. mysql建表时外检怎么创建_MySQL创建表时加入的约束以及外键约束的的意义

    1,创建表时加入的约束 a) 非空约束,not null b) 唯一约束,unique c) 主键约束,primary key d) 外键约束,foreign key 1,非空约束,针对某个字段设置其 ...

  9. mysql建表时插入中文_Mysql新建表,插入中文时报错“Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column”问题...

    有时候我们在往数据库中输入信息时,如果输入的内容是中文,会报错"Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column&q ...

最新文章

  1. python文件操作(open()、write()、read()、readline()、readlines()、seek()、os)
  2. postgresql之数据库管理
  3. xpath技术解析xml以及案例模拟用户登录效果
  4. 倒排索引PForDelta压缩算法——基本假设和霍夫曼压缩同
  5. “sockaddr_in”:“struct”类型重定义
  6. 详解Java解析XML的四种方法(转载)
  7. 梳理了一下前端面试必考知识点
  8. 10月25日-10月29日一周宣讲会安排
  9. 2287 poj 田忌赛马,贪心
  10. 存储基础知识 - 网络存储主要技术
  11. Windows重装为Linux
  12. codeigniter配置
  13. 程序员写简历的注意事项
  14. GamePlay架构
  15. 人工智能期末复习(一)
  16. H5,Audio音乐播放器(移动版)
  17. mybatis-plus 分页类型转换工具类
  18. 土木工程结构力学————虚功原理
  19. jsp超市会员积分管理系统
  20. spss 构建决策树 树形图 正在处理不显示问题

热门文章

  1. 【数模比赛】2023美国大学生数学建模比赛(思路、代码......)
  2. matlabrgb和波长的换算_matlab RGB到HSI的彩色转换及实现
  3. NLP自然语言处理:神经网络语言模型(NNLM)
  4. 当创业出现ABCD时,你该怎么抉择?
  5. 录取清华/北大/中科院/北邮都有!双非北京信息科技大学计算机考研光荣榜
  6. QoS服务质量一QoS概述
  7. GridView触发SelectedIndexChanged事件
  8. 本科段《电子商务》课程复习资料(2)——简答题
  9. 了解Adobe Illustrator的网格系统
  10. BCGControlBar介绍