MySQL 建表时的四种key
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相关推荐
- mysql建表时主键_mysql建表时设置主键的方法
mysql建表时设置主键的方法 发布时间:2020-10-10 15:17:28 来源:亿速云 阅读:119 作者:小新 mysql建表时设置主键的方法?这个问题可能是我们日常学习或工作经常见到的.希 ...
- mysql建表时错误1075_navicat出现错误1075怎么办
MYSQL中AUTO_INCREMENT会在新记录插入表中时生成一个唯一的数字.希望在每次插入新记录时,自动地创建主键字段的值,可以在表中创建一个 auto-increment 字段. mysql创建 ...
- mysql 建表时建立索引_mysql 分享建表和索引的几点规范
一. MySQL建表,字段需设置为非空,需设置字段默认值. 二. MySQL建表,字段需NULL时,需设置字段默认值,默认值不为NULL. 三. MySQL建表,如果字段等价于外键,应在该字段加索引. ...
- Python3 使用 pymysql 连接 MySQL 建表时出现 Warning3719 UTF8 警告
在学习 Python3 爬虫关系型数据库储存时,利用 pymysql 连接 MySQL 建表,测试用的代码如下,第一句 SQL 用于获取当前 MySQL 的版本信息,第二句 SQL 执行创建 spid ...
- mysql 建表时创建唯一索引
Mysql建表与索引使用规范整理 一,设计表规范: MySQL建表,字段需设置为非空,需设置字段默认值: MySQL建表,字段需NULL时,需设置字段默认值,默认值不为NULL: MySQL建表,如果 ...
- mysql建表时主键_mysql建表时怎么设置主键?
设置方法:在"CREATE TABLE"语句中,通过"PRIMARY KEY"关键字来指定主键,语法格式"字段名 数据类型 PRIMARY KEY [ ...
- 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 ...
- mysql建表时外检怎么创建_MySQL创建表时加入的约束以及外键约束的的意义
1,创建表时加入的约束 a) 非空约束,not null b) 唯一约束,unique c) 主键约束,primary key d) 外键约束,foreign key 1,非空约束,针对某个字段设置其 ...
- 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 ...
最新文章
- python文件操作(open()、write()、read()、readline()、readlines()、seek()、os)
- postgresql之数据库管理
- xpath技术解析xml以及案例模拟用户登录效果
- 倒排索引PForDelta压缩算法——基本假设和霍夫曼压缩同
- “sockaddr_in”:“struct”类型重定义
- 详解Java解析XML的四种方法(转载)
- 梳理了一下前端面试必考知识点
- 10月25日-10月29日一周宣讲会安排
- 2287 poj 田忌赛马,贪心
- 存储基础知识 - 网络存储主要技术
- Windows重装为Linux
- codeigniter配置
- 程序员写简历的注意事项
- GamePlay架构
- 人工智能期末复习(一)
- H5,Audio音乐播放器(移动版)
- mybatis-plus 分页类型转换工具类
- 土木工程结构力学————虚功原理
- jsp超市会员积分管理系统
- spss 构建决策树 树形图 正在处理不显示问题
热门文章
- 【数模比赛】2023美国大学生数学建模比赛(思路、代码......)
- matlabrgb和波长的换算_matlab RGB到HSI的彩色转换及实现
- NLP自然语言处理:神经网络语言模型(NNLM)
- 当创业出现ABCD时,你该怎么抉择?
- 录取清华/北大/中科院/北邮都有!双非北京信息科技大学计算机考研光荣榜
- QoS服务质量一QoS概述
- GridView触发SelectedIndexChanged事件
- 本科段《电子商务》课程复习资料(2)——简答题
- 了解Adobe Illustrator的网格系统
- BCGControlBar介绍