精华内容
下载资源
问答
  • mysql主键和索引
    2022-04-05 11:28:12

    一、区别

    主键和唯一索引都要求值唯一,但是它们还是有区别的:

    1. 主键是一种约束,唯一索引是一种索引
    2. 一张表只能有一个主键,但可以创建多个唯一索引
    3. 主键创建后一定包含一个唯一索引,唯一索引并一定是主键
    4. 主键不能为null,唯一索引可以为null
    5. 主键可以做为外键,唯一索引不行

    二、创建示例

    mysql> CREATE TABLE tb_emp4
        -> (
        -> id INT(11),
        -> name VARCHAR(25),
        -> deptId INT(11),
        -> salary FLOAT,
        -> PRIMARY KEY(id)
        -> );
    CREATE TABLE IF NOT EXISTS contacts (
        id INT AUTO_INCREMENT PRIMARY KEY,
        first_name VARCHAR(50) NOT NULL,
        last_name VARCHAR(50) NOT NULL,
        phone VARCHAR(15) NOT NULL,
        email VARCHAR(100) NOT NULL,
        UNIQUE KEY unique_email (email)
    ); 

    更多相关内容
  • MySQL 主键和索引

    2021-08-30 09:48:11
    主键:关系数据可依赖于主键主键在物理层面上主要有两个用途: 唯一的标识一行 因为主键可以唯一标识一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。...索引:对于MySQL的高效运行是很重

    主键:关系数据可依赖于主键,主键在物理层面上主要有两个用途:

    1. 唯一的标识一行
      因为主键可以唯一标识一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。

    2. 作为一个可以被外键引用的对象
      一个表的主键通常可以作为另一个表的外键,主键通过与外键构成参照完成性约束,防止出现数据不一致。
      主键分为单列主键和复合主键:

    主键分为两种:

    1. 单一主键:只用一列来唯一标识一行
    2. 复合主键(联合主键): 当使用一列不能唯一表示一行的时候,就要采用多列唯一标识一行

    索引:对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度

    1. 索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)

    2. 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录

    3. 上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行(INSERT、UPDATE和DELETE)。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件

    4. 建立索引会占用磁盘空间的索引文件

    索引分为两种:

    1. 单列索引:只有某一列作为索引,默认为index索引,这一列可以包含重复数据。如果某列不存在重复数据,最好设置成唯一索引unique形式,它比index的索引速度更快。
    2. 复合索引:每次检索都需要使用多列进行时,可以把多列设为复合索引。根据多列是否唯一,也分为index索引和unique索引。
      【注意】对于复合索引:Mysql是从左到右使用索引中的字段,一个查询可以只是用索引的一部分,但必须是左侧部分。如索引是indexName(a,b,c),则可以支持a|a,b|a,b,c3种组合进行查找。

    总结:

    主键相当于一本书的页码,索引相当于书的目录

    主键和索引的关系:

    1. 主键是一定是唯一性索引,但唯一性索引不一定是主键

    2. 数据库管理系统对于主键自动生成唯一索引,所以主键是一个特殊的索引

    3. 唯一索引标识索引值唯一,一个表可以有多个唯一索引,但主键只能有一个

    4. 主键列不能为空,但唯一索引列可以为空

    5. 一张表只能有一个主键,但可以有多个索引

    索引的类型

    在MySQL中,通常我们所指的索引类型,有以下几种:

    常规索引,也叫普通索引(index或key),它可以常规地提高查询效率。一张数据表中可以有多个常规索引。常规索引是使用最普遍的索引类型,如果没有明确指明索引的类型,我们所说的索引都是指常规索引。

    主键索引(Primary Key),也简称主键。它可以提高查询效率,并提供唯一性约束。一张表中只能有一个主键。被标志为自动增长的字段一定是主键,但主键不一定是自动增长。一般把主键定义在无意义的字段上(如:编号),主键的数据类型最好是数值。

    唯一索引(Unique Key),可以提高查询效率,并提供唯一性约束。一张表中可以有多个唯一索引。

    全文索引(Full Text),可以提高全文搜索的查询效率,一般使用Sphinx替代。但Sphinx不支持中文检索,Coreseek是支持中文的全文检索引擎,也称作具有中文分词功能的Sphinx。实际项目中,我们用到的是Coreseek。

    外键索引(Foreign Key),简称外键,它可以提高查询效率,外键会自动和对应的其他表的主键关联。外键的主要作用是保证记录的一致性和完整性。

    展开全文
  • 下面是主键和索引的一些区别与联系。 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一...
  • MySQL索引之主键索引

    2020-12-15 16:43:01
    MySQL里,主键索引和辅助索引分别是什么意思,有什么区别? 上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别。 1、主键索引 主键索引,简称主键,原文是PRIMARY KEY,...
  • 区别: 1、主键,Oracle不可以实现自增,mysql可以实现自增。 oracle新建序列,SEQ_USER_Id.nextval 2、索引mysql索引从0开始,Oracle从1开始。 3、分页, mysql: select * from user order by desc limit n ,m. ...
  • 下面本篇文章就来给大家介绍一下主键索引和普通索引之间的区别 ,希望对你们有所帮助。 普通索引 普通索引是最基本的索引类型,而且它没有唯一性之类的限制。普通索引可以通过以下几种方式创建: 创建索引,...

    索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。MySQL提供多种索引类型供选择:普通索引 、唯一性索引、主键索引 、全文索引等等。下面本篇文章就来给大家介绍一下主键索引和普通索引之间的区别 ,希望对你们有所帮助。

    普通索引

    普通索引是最基本的索引类型,而且它没有唯一性之类的限制。普通索引可以通过以下几种方式创建:

    创建索引,例如

    CREATE INDEX <索引的名字> ON tablename (列的列表);

    修改表,例如

    ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);

    创建表的时候指定索引,例如

    CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );


    主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”。主键索引

    主键一般在创建表的时候指定,例如

    CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) );

    区别但是,我们也可以通过修改表的方式加入主键,例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每个表只能有一个主键。

    1、普通索引是最基本的索引类型,没有任何限制,值可以为空,仅加速查询。普通索引是可以重复的,一个表中可以有多个普通索引。

    2、主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;索引列的所有值都只能出现一次,即必须唯一。简单来说:主键索引是加速查询 + 列值唯一(不可以有null)+ 表中只有一个

     

    展开全文
  • (一)原理  只要用户定义的索引字段中包含了主键中的字段,那么这个字段不会再被InnoDB自动加到索引中。但如果用户的索引字段中没有完全...  idx1idx2两个索引内部大小完全一样,没有区别  例子二: CREA
  • MySQL添加主键索引

    千次阅读 2021-01-18 19:42:03
    查看索引SHOW INDEX FROM ...添加索引alter table 数据库add index 索引名称(数据库字段名称)主键索引ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )比如:ALTER TABLE order_info ADD PRIMARY KEY (o...

    查看索引

    SHOW INDEX FROM  数据库表名

    比如:SHOW INDEX FROM order_info;

    添加索引

    alter table 数据库add index 索引名称(数据库字段名称)

    主键索引

    ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

    比如: ALTER TABLE order_info ADD PRIMARY KEY (order_id);

    UNIQUE(唯一索引)

    ALTER TABLE `table_name` ADD UNIQUE (`column`)

    INDEX(普通索引)

    mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

    FULLTEXT(全文索引)

    ALTER TABLE `table_name` ADD FULLTEXT ( `column` )

    删除索引

    ALTER TABLE table_name DROP INDEX index_name

    DROP INDEX index_name ON talbe_name

    多列索引

    ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

    1.普通索引。

    这是最基本的索引,它没有任何限制。它有以下几种创建方式:

    (1)创建索引:CREATE INDEX indexName ON tableName(tableColumns(length));如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB 和 TEXT 类型,必须指定length,下同。

    (2)修改表结构:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length))

    (3)创建表的时候直接指定:CREATE TABLE tableName ( [...], INDEX [indexName] (tableColumns(length)) ;

    2.唯一索引。

    它与前面的"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

    (1)创建索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))

    (2)修改表结构:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length))

    (3)创建表的时候直接指定:CREATE TABLE tableName ( [...], UNIQUE [indexName] (tableColumns(length));

    3.主键索引

    它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:CREATE TABLE testIndex(i_testID INT NOT NULL AUTO_INCREMENT,vc_Name VARCHAR(16) NOT NULL,PRIMARY KEY(i_testID)); 当然也可以用ALTER命令。

    展开全文
  • Mysql主键和索引

    千次阅读 2018-11-19 11:28:51
    关系数据可依赖于主键主键在物理层面上主要有两个用途: 唯一的标识一行 因为主键可以唯一标识一行记录,所以可以确保...主键分为单列主键和复合主键: 单一主键:只用一列来唯一标识一行create table user( ...
  • Mysql主键索引与非主键索引前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 Mysql使用B+树存储索引。 什么是B树: B树也叫B-树,是一棵多路平衡查找树,平衡的意思是左边右边分布均匀。多路的...
  • MYSQL索引主键的区别

    千次阅读 2019-06-05 18:25:37
    MYSQL索引主键的区别 索引索引好比是一本书的目录,可以快速的通过页码找到你需要的那一页。惟一地标识一行。 主键:做为数据库表唯一行标识,作为一个可以被外键有效引用的对象。 索引是一种特殊的文件...
  • 1.主键是一种约束,唯一索引是一种索引,两者在本质上是不同的;2.一张表只能有一个主键,但可以创建多个唯一索引;3.主键创建后一定包含一个唯一索引,唯一索引并一定是主键;4.主键不能为null,唯一索引可以为null...
  • 如果将idname设置为索引,id是主键索引,name为普通索引,也叫做辅助索引。他们之间有什么区别呢? InnoDB 在InnoDB存储引擎的B+树的数据结构下,主键索引下跟着的是数据信息,而辅助索引下跟着的是主键的id。 ...
  • 索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合相应的指向表中物理标识这些值的数据页的逻辑指针清单。 索引的作用相当于图书的目录,可以根据...
  • 主键是一种约束,唯一索引是...主键和唯一索引都可以有多列。 主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。 在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。 ...
  • mysql 主键和默认 设为索引的规则

    千次阅读 2021-01-19 04:13:09
    一、mysql 表中如果是单主键的话,那这个主键也会被 系统默认建为 索引二、mysql 表中如果是复合主键的话,那系统会遵循左对齐原则,即如复合主键 a b字段c字段..., 默认建的主键索引是abc即主键全有,把所有...
  • 1、主键和唯一索引的区别   1.1 主键一定时唯一性索引,唯一性索引并不一定是主键   1.2 一个表中可以有多个唯一性索引,但只能有一个主键   1.3 主键不允许有空值,而唯一索引允许有空值   1.4 主键可以被...
  • 聚簇索引和主键索引聚簇索引并不是一种单独的索引类型,而是一种数据存储方式,具体细节依赖于其实现方式。MySQL数据库中innodb存储引擎,B+树索引可以分为:聚簇索引(也称聚集索引,clustered index)辅助索引(有时...
  • mysql 主键和唯一索引的区别

    千次阅读 2019-10-23 21:02:02
    主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。...主键和唯一索引都可以有多列。 主键更适合那些不容易更改的唯一标识...
  • MySQL索引之主键索引在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别?上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别。1、主键索引主键索引,简称主键,...
  • 聚簇索引和主键索引 聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。 聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页。 ...
  • 主键索引(PRIMARY):它 是一种特殊的唯一索引,不允许有空值。 全文索引(FULLTEXT ):可用于 MyISAM 表,mysql5.6之后也可用于innodb表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时...
  • 之前松哥在前面的文章中介绍 MySQL 的索引时,有小伙伴表示被概念搞晕了,主键索引、非主键索引、聚簇索引、非聚簇索引、二级索引、辅助索引等等,今天咱们就来捋一捋这些概念。 1. 按照功能划分 按照功能来划分,...
  • 关于MySql数据库主键索引的区别

    千次阅读 2021-01-18 21:17:38
    索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的...
  • mysql中,主键与普通索引

    千次阅读 2021-01-18 19:25:16
    索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 198,031
精华内容 79,212
关键字:

mysql主键和索引

mysql 订阅