zoukankan      html  css  js  c++  java
  • mysql中 key 、primary key 、unique key 和 index 有什么不同

     1 mysql中 key 、primary key 、unique key 和 index 有什么不同
     2 
     3 
     4 key 是数据库的物理结构,它包含两层意义和作用,
     5 
     6 一是约束(偏重于约束和规范数据库的结构完整性),
     7 二是索引(辅助查询用的)。
     8 
     9 
    10 primary key 有两个作用,一是约束作用(constraint),用来规范一个存储主键和唯一性,但同时也在此key上建立了一个主键索引;
    11 PRIMARY KEY 约束:唯一标识数据库表中的每条记录;
    12 
    13 主键必须包含唯一的值;
    14 主键列不能包含 NULL 值;
    15 每个表都应该有一个主键,并且每个表只能有一个主键。(PRIMARY KEY 拥有自动定义的 UNIQUE 约束)
    16 
    17 unique key 也有两个作用,一是约束作用(constraint),规范数据的唯一性,但同时也在这个key上建立了一个唯一索引;
    18 
    19 UNIQUE 约束:唯一标识数据库表中的每条记录。
    20 
    21 UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
    22 (每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束)
    23 
    24 foreign key也有两个作用,一是约束作用(constraint),规范数据的引用完整性,但同时也在这个key上建立了一个index;
    25 
    26 可见,mysql的key是同时具有constraint和index的意义,这点和其他数据库表现的可能有区别。
    27 
    28 (至少在Oracle上建立外键,不会自动建立index),因此创建key也有如下几种方式:
    29 (1)在字段级以key方式建立, 如 create table t (id int not null primary key);
    30 (2)在表级以constraint方式建立,如create table t(id int, CONSTRAINT pk_t_id PRIMARY key (id));
    31 (3)在表级以key方式建立,如create table t(id int, primary key (id));
    32 
    33 其它key创建类似,但不管那种方式,既建立了constraint,又建立了index,只不过index使用的就是这个constraint或key。
    34 
    35 index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。
    36 索引要分类的话,分为前缀索引、全文本索引等;
    37 索引只是索引,它不会去约束索引的字段的行为(那是key要做的事情)
  • 相关阅读:
    Android的数据存储
    Servlet第一天
    JavaScript高级程序设计读书笔记(3)
    Interesting Papers on Face Recognition
    Researchers Study Ear Biometrics
    IIS 发生意外错误 0x8ffe2740
    Father of fractal geometry, Benoit Mandelbrot has passed away
    Computer vision scientist David Mumford wins National Medal of Science
    Pattern Recognition Review Papers
    盒模型bug的解决方法
  • 原文地址:https://www.cnblogs.com/cxx8181602/p/9155894.html
Copyright © 2011-2022 走看看