网站增长期怎么做,外国男男做暧暧视频网站,网站开发实用技术第2版,用vs2010做免费网站模板下载地址mysql的key和index多少有点令人迷惑#xff0c;这实际上考察对数据库体系结构的了解的。1 key 是数据库的物理结构#xff0c;它包含两层意义#xff0c;一是约束(偏重于约束和规范数据库的结构完整性)#xff0c;二是索引(辅助查询用的)。包括primary key, unique key, fo…mysql的key和index多少有点令人迷惑这实际上考察对数据库体系结构的了解的。1 key 是数据库的物理结构它包含两层意义一是约束(偏重于约束和规范数据库的结构完整性)二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等。primary key 有两个作用一是约束作用(constraint)用来规范一个存储主键和唯一性但同时也在此key上建立了一个indexunique key 也有两个作用一是约束作用(constraint)规范数据的唯一性但同时也在这个key上建立了一个indexforeign 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时则会有两种意义或起两种作用。实践结果新建一张User表包含字段id, name。(1)第一种情况mysql create table user(id int, name varchar(50), age int, primary key(id));Query OK, 0 rows affected (0.01 sec)mysql show create table user;-------------------------------------------------------------------------------------| Table | Create Table|-------------------------------------------------------------------------------------| user | CREATE TABLE user (id int(11) NOT NULL default 0,name varchar(50) default NULL,age int(11) default NULL,PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSETgbk |mysql show indexmysql show keys(2)第二种情况mysql show create table user;-------------------------------------------------------------------| Table | Create Table|-------------------------------------------------------------------| user | CREATE TABLE user (id int(11) default NULL,name varchar(50) default NULL,age int(11) default NULL,KEY id (id)) ENGINEInnoDB DEFAULT CHARSETgbk |(3)第三种情况mysql show create table user;------------------------------------------------------------------| Table | Create Table|------------------------------------------------------------------| user | CREATE TABLE user (id int(11) default NULL,name varchar(50) default NULL,age int(11) default NULL,KEY id (id)) ENGINEInnoDB DEFAULT CHARSETgbk |三、总结(1)当建表时建立primary key的键同时默认建立对应的index(2)当建表时指定某列为key时那么同时为该键建立indexkey和index对应的键允许null(3)当建表时指定某列为index时那么同时为该键建立keyindex和key对应的键允许null。从建表语句中可以看出key ‘id’ (id)等价于(2)中的情况。根据(1)(2)(3)说明在以上的使用情况中index和key没有什么区别。