精华内容
下载资源
问答
  • 2022-05-11 12:39:56

    索引用来快速地寻找那些具有特定值的记录,所有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)+ 表中只有一个

     

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

    2020-12-15 16:43:01
    MySQL里,主键索引和辅助索引分别是什么意思,有什么区别? 上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别。 1、主键索引 主键索引,简称主键,原文是PRIMARY KEY,...
  • MySQL添加主键索引

    千次阅读 2021-01-19 08:08:02
    查看索引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命令。

    展开全文
  • 但如果用户的索引字段中没有完全包含主键字段,InnoDB会把剩下的主键字段加到索引末尾。  (二)例子  例子一: CREATE TABLE t (  a char(32) not null primary key,  b char(32) not null,  KEY ...
  • 主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据...
  • Mysql主键索引与非主键索引前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 Mysql使用B+树存储索引。 什么是B树: B树也叫B-树,是一棵多路平衡查找树,平衡的意思是左边和右边分布均匀。多路的...

    前言

    什么是B树:

    B树也叫B-树,是一棵多路平衡查找树,平衡的意思是左边和右边分布均匀。多路的意思是性对于二叉树而言,B树有多条路,及父节点有多个子节点。

    在这里插入图片描述

    优点:B树因为是多路,多以层数少,可以更快的找到信息。Mysql中的数据一般是放在磁盘中的,B树可以减少对磁盘的I/O操作。

    什么是B+树:
    B+树是B树的变形。

    B+树与B树的区别:
    B树的每个节点都存储了key和value,B+树只有所有的数据存储在叶子节点上,其余节点不存储数据,这样的话节点就可以存储更多的key,可以使得树更矮,I/O次数更少。
    B+树的所有叶节点构成一个双向有序链表,可以按照排序的次序遍历所有记录,便于区间查找和搜索。B树种相邻的元素可能在内存中不相邻。

    在这里插入图片描述
    InnoDB和MyISAM是Mysql中常用的两种引擎,都是用B+树存储索引。
    下面根据这两种不同的引擎了解Mysql的主键索引和非主键索引。

    InnoDB引擎

    InnoDB表数据文件本身就是一个索引结构,树的叶节点data域保存了完整的数据结构,这种索引叫做聚集索引

    主键索引:

    对于下面这一张表

    idtitleauthor
    5西游记吴承恩
    8三国演义罗贯中
    10水浒传施耐庵
    12红楼梦曹雪芹

    其中id是主键

    在这里插入图片描述
    叶子节点记录的是整行的值

    非主键索引

    在之前的表上加上一列k,作为非主键索引

    idtitleauthorK
    5西游记吴承恩10
    8三国演义罗贯中11
    10水浒传施耐庵15
    12红楼梦曹雪芹20

    在这里插入图片描述
    非主键索引的叶子节点保存了主键的值,非主键索引也叫做二级索引。
    在用非主键索引查询时,先会查询出主键的值,在在主键索引的表中查询,这个过程也叫做回表

    MySIAM引擎

    MySIAM引擎B+树的叶节点的data域存放的是数据记录的地址,这种索引方式也叫非聚集的。

    主键索引

    对于InnoDB主键索引的那个表:
    在这里插入图片描述

    非主键索引

    对于InnoDB中非主键索引的那张表:
    在这里插入图片描述

    在MySIAM中,主键索引和非主键索引在结构上没有任何区别,只是主键索引要求key是唯一的,非主键索引的key可以重复。

    InnoDB和MyISAM的区别

    • InnoDB支持事务,MySIAM不支持事务
    • InnoDB支持主键,MySIAM不支持主键
    • InnoDB是聚集索引,使用B+树作为索引结构,数据文件和索引绑在一起,必须有主键;MyISAM是非聚集索引,使用B+树作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针
    • InnoDB不保存表的具体行数,MyISAM用一个变量保存了整个表的行数
    • InnoDB支持表锁,行锁,MyISAM只支持表锁
    • InnoDB必须有唯一索引(主键),如果没有指定的话InnoDB会自己生成一个隐藏列Row_id充当默认主键,MyISAM没有
    展开全文
  • 1.添加PRIMARY KEY(主键索引mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引) mysql>ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 3.添加INDEX(普通索引) ...
  • MySQL主键索引设置和添加

    千次阅读 2018-03-25 10:04:42
    PRI primary key 表示主键,唯一 写法: id bigint(20) unsigned primary key not null ,uni UNIQUE 表示唯一 写法 id bigint(20) unsigned UNIQUE default NULL mul 添加索引 写法: alter table test add index ...
    PRI   primary key  表示主键,唯一    写法: id bigint(20) unsigned primary key not null  ,
    uni UNIQUE 表示唯一 写法 id bigint(20) unsigned UNIQUE default NULL
    mul 添加了索引 写法: alter table test add index suoyin (col_name1);
    如果有同时存在,
    显示顺序 PRI>UNI>MUL
    
    

    添加索引:

            假设有数据库表playlist163,将其中的over字段里key 设为MUL

           mysql>alter table playlist163 add index(over);


    展开全文
  • 区别: 1、主键,Oracle不可以实现自增,mysql可以实现自增。 oracle新建序列,SEQ_USER_Id.nextval 2、索引mysql索引从0开始,Oracle从1开始。 3、分页, mysql: select * from user order by desc limit n ,m. ...
  • 主键索引 主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录。一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。 在MySQL中,InnoDB数据表的主键...
  • 主键索引(PRIMARY):它 是一种特殊的唯一索引,不允许有空值。 全文索引(FULLTEXT ):可用于 MyISAM 表,mysql5.6之后也可用于innodb表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时和...
  • SQL创建索引主键

    千次阅读 2021-01-19 15:07:32
    -- MySQL中四种方式给字段添加索引1)# 添加主键# ALTER TABLE tbl_name ADD PRIMARY KEY (col_list);# -- // 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。#添加唯一索引-- UNIQUE 后面不用跟...
  • 1、概念 1)、查看索引 show index from 数据库表名 2)、alter table 数据库表...1)、PRIMARY KEY(主键索引) ALTER TABLE table_name ADD PRIMARY KEY ( column ) 2)、UNIQUE(唯一索引) ALTER TABLE table...
  • MySQL重新建立主键索引和非主键索引的方法 重新建立主键索引方法 这是错误的写法 alter table T drop primary key; alter table T add primary key(id); mysql官方文档写了三种措施: 整个数据库迁移,先dump出来...
  • 以下回答全部是基于MySQL的InnoDB引擎例如对于下面这一张表如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下如果我们要进行模糊查找,查找name 以“张"开头的所有人的ID,即 sql 语句为...
  • 关于MySql数据库主键索引的区别

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

    千次阅读 2020-05-05 01:18:05
    什么是索引 MySql官方索引的定义:索引(Index)是帮助MySql高效获取数据的...1.主键索引索引着数据,然而普通索引索引着主键ID值(这是在innodb中,但是如果是myisam中,主键索引和普通索引是没有区别的都是直接索...
  • 之前松哥在前面的文章中介绍 MySQL 的索引时,有小伙伴表示被概念搞晕了,主键索引、非主键索引、聚簇索引、非聚簇索引、二级索引、辅助索引等等,今天咱们就来捋一捋这些概念。 1. 按照功能划分 按照功能来划分,...
  • //主键alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);//增加一个新列alter table t2 add d timestamp;alter table infos add ex ...
  • 主要给大家介绍了关于当Mysql行锁遇到复合主键与多列索引的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • 如上图User表,id为主键,name为普通字段。 如果将id和name设置为索引,id是主键索引,name为普通索引,也叫做辅助索引。...使用主键索引查询的时候,要先得到主键索引值,再根据索引值去匹配数据。 MYISAM ...
  • 聚簇索引和主键索引 聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。 聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页。 ...
  • 如何删除mysql 主键索引

    千次阅读 2019-06-06 09:31:24
    如果一个主键是自增长的,不能直接删除该列的主键索引, 应当先取消自增长,再删除主键特性 alter table 表名 drop primary key; 【如果这个主键是自增的,先取消自增长.】 具体方法如下: alter table articles ...
  • 聚簇索引和主键索引聚簇索引并不是一种单独的索引类型,而是一种数据存储方式,具体细节依赖于其实现方式。MySQL数据库中innodb存储引擎,B+树索引可以分为:聚簇索引(也称聚集索引,clustered index)辅助索引(有时...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 192,692
精华内容 77,076
关键字:

mysql添加主键索引

mysql 订阅