mysql 索引有哪几种?主键索引、唯一索引

news2025/1/11 9:51:01

面试题:mysql索引有哪几种?

答:
索引有两类,一是单列索引,二是组合索引。
单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

按照特性区分:

1、普通索引;

这是最基本的索引,它没有任何限制。

2、主键索引

被指定为主键的列,也自动被创建为索引,这个“索引”称作主键索引。不能插入NULL值,并且每条数值唯一。

3、唯一索引

唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许插入null 值或者多个null 值。如果是组合索引,则列值的组合必须唯一。

自己去验证(主键索引)

1 分别创建表 tableone、 tabletwo。

表tableone,不设置主键。
表tabletwo, 设置一个主键。

CREATE TABLE tableone(
	oid int,
	oname VARCHAR(10),
	oage int,
  	osex VARCHAR(10)
);

CREATE TABLE tabletwo(
	tid int PRIMARY KEY,
	tname VARCHAR(10),
	tage int,
  	tsex VARCHAR(10)
);

2 查询两张表的索引信息

猜测:
字段oid, 我没有设置为主键id, 故查询的结果是: 应该是一条索引信息都没有。


SHOW INDEX FROM tableone;
SHOW INDEX FROM tabletwo;
  • sql执行结果:结果1: 为null(空)。
    图11
  • 结果2:有一条索引信息(Key_name:PRIMARY), 这条索引就是在建表时,自动创建的主键索引。
    图22

3 猜测正确

  • 结果:猜测正确。

4 下结论:

通过两张表的创建,得出结论。在创建表tabletwo 的时候, 把tid设置成主键id的同时,也自动把tid创建成了索引,这个索引叫作主键索引
被设置成主键索引的列,不能插入NULL值,并且每条数值唯一。


唯一索引(自己去验证)

语法

CREATE UNIQUE INDEX student_index_score ON student(score);

1 建表 tablethree


CREATE TABLE tablethree(
	tid int PRIMARY KEY,
	tname VARCHAR(10),
	tage int,
  tsex VARCHAR(10)
);

2 查询表tablethree 中索引信息


SHOW INDEX FROM tablethree;

结果: 空

2 把tsex列 设置成唯一索引列。

SQL:


CREATE UNIQUE INDEX tablethree_index_tsex ON tablethree(tsex);

3 再查询表tablethree 中索引信息

结果: 有
图片03

4 测试:


-- 在tsex索引列上,插入null值
INSERT INTO tablethree(tid,tname,tage) VALUE(2,'高启强',40);
INSERT INTO tablethree(tid,tname,tage) VALUE(3,'老墨啊',42);

图03
插入两条数据,tsex列上值为null,插入成功。
证明了:在唯一索引上可以插入null值,甚至多条。


-- 在tsex索引上,插入重复值‘女’
INSERT INTO tablethree(tid,tname,tsex) VALUE(5,'安欣','女')

[Err] 1062 - Duplicate entry ‘女’ for key ‘tablethree_index_tsex’
被设置成了唯一索引的列,不允许插入重复的值,否则会报错提示。

小结:

1.唯一索引 允许索引列上有null数据或者null 数据。
2.唯一索引 每条数据值唯一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/558575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL查询语言(3) 聚集查询和窗口函数的概念

查询结果排序 排序 规则如下: 1.语句: SELECT A1,A2.... FROM 表名 WHERE 选择条件 order by 属性1(ASC升序),属性3(DESC降序); 如果没有说明默认是升序排列: 2.对于空值的处理 如果是升序排列 NULL放在最后一行,如果是降序则放在第一行 上图为 按升序排列查询…

MyBatis动态SQL,基本语法加实战,一篇搞懂

问题: 有的时候我们需要实现批量删除:delete from t_car where id in(1,2,3,4,5,6,…这⾥的值是动态的,根据⽤户选择的 id不同,值是不同的); 多条件查询:有时我们需要根据多个不同地条件来进行查询,比如:se…

数据集成平台之kettle优缺点分析

数据集成平台前言 数据在业务中发挥着重要的作用,但并非所有数据都具有相同的价值和影响力。事实上,大部分数据业务的核心价值主要来自其中的少部分关键数据。这些关键数据可能包含着重要的业务指标、关键客户信息、市场趋势数据等,它们直接…

【机器学习】之Anaconda中使用的命令

操作之前,点击上图入口,进入Prompt。 //示例是在base环境下,cls清屏 (base) C:\Users\bubusa>cls1、base环境下的操作 //(1)列出所有虚拟环境 (base) C:\Users\bubusa>conda env list # conda environments: #…

Radeon Vii 系统分析 001记——工具

0. 简介 为了对 vega 7nm 有更感性的编程使用体验,故对 vega 7nm做各种测试; 工具: CLRadeonExtender ubuntu ROCm 资料: (1) 一张安装了 Radeon Vii vega 7nm 的台式机,win10 或 ubunt…

Mit6.006-lecture08-BinaryHeaps

一、优先队列接口 记录一些项目,快速地访问/移除最重要的 例:有限带宽的路由器,必须优先某些信息 例:操作系统内核中的进程调度 例:离散事件模拟(下一件事何时发生) 例:图算法&am…

js程序运行时在本机与外部app交互

js程序运行时在本机与外部app交互 目录 js程序运行时在本机与外部app交互 一、序言 1.1、问题 1.2、简要回答 二、原理 2.1、插件/web扩展/应用配置/权限 2.2、获取权限-原生应用交换信息的权限nativeMessaging 2.2.1、runtime(运行时的API) 2.3、连接本地应用程序的…

《微服务实战》 第十四章 RabbitMQ应用

前言 一般MQ用于系统解耦、削峰使用,常见于微服务、业务活动等场景。 1、RabbitMQ概念概念 RabbitMQ整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息。 1.1、生产者和消费者 Producer:生产者,就是投递消息的一方。消息一般可以包含2个部分:消息体和标签…

Vue3+i18n多语言动态国际化设置步骤

1、技术介绍 i18n:Vue.js 的国际化插件。它可以轻松地将一些本地化功能集成到你的 Vue.js 应用程序中 i18n的官网地址安装 | Vue I18n (kazupon.github.io) 2、插件安装 npm install vue-i18n9 --save需要注意的是vue3最好使用9.x以上的版本! 3、创建i…

夏日挂脖风扇方案开发设计

夏日挂脖风扇是一种便携式的风扇设备,通过挂在用户的脖子上,为用户提供清凉的风力降温。在夏季高温天气中,挂脖风扇成为了人们追逐的热门产品之一。为了满足市场需求,夏日挂脖风扇的方案开发设计需要考虑多个方面,包括…

Class 09 - Data Frame和查看数据

Class 09 - Data Frame和查看数据 DataFrametibbleshead()str()colnames()mutate()创建 Dataframe DataFrame 在我们开始做数据清洗或者检查数据是否存在偏差之前,我们需要先将我们的数据转换成合适的格式方便我们做后续的处理。 这就要说到DataFrame了。因为他很…

CSDN programmer_ada what the hell

CSDN programmer_ada 1、今天博客收到了1条评论,莫名其妙。2、查看这个账户 原来是CSDN官方机器人3、貌似领了红包 就会自动关注发红包的账户 1、今天博客收到了1条评论,莫名其妙。 一定要坚持创作更多高质量博客哦, 小小红包, 以资鼓励, 更多创作活动请…

【ClickHouse】什么是ClickHouse?CK入门

文章目录 一、ClickHouse入门1、列式存储2、DBMS的功能3、多样化引擎4、高吞吐写入能力5、数据分区与线程级并行6、性能对比7、官网 二、ClickHouse安装1、准备工作2、单机安装 三、ClickHouse的数据类型1、整型2、浮点型3、布尔型4、Decimal型6、枚举类型7、时间类型8、数组 一…

好程序员:女生学Java好学吗?女生学Java有什么优势?

小源经常会听到女生咨询适不适合学习Java开发的问题,提出这种问题归根结底还是缺乏性别自信,默认女性比男性弱。实际上这个问题并不存在,男女平等才是正确的思维,当然,也为了解开女生们的心结,这里好程序员…

开发微信公众号本地调试+-+cpolar内网穿透

文章目录 前言1. 配置本地服务器2. 内网穿透2.1 下载安装cpolar内网穿透2.2 创建隧道 3. 测试公网访问4. 固定域名4.1 保留一个二级子域名4.2 配置二级子域名 5. 使用固定二级子域名进行微信开发 转载自cpolar内网穿透的文章:微信公众号开发:对接本地开发…

股票?看我用python采集数据制作成交量图表

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 开发环境 & 第三方模块: 解释器版本: python 3.8 代码编辑器: pycharm 2021.2 requests: pip install requests 爬虫 pyecharts: pip install pyecharts 数据分析 pandas: pip install pandas 数据分析 基本流…

C++常用的支持中文的GUI库Qt 6之一:下载、安装与简单使用

C常用的支持中文的GUI库Qt 6之一:下载、安装与简单使用 因为Qt发展变化较快,网上许多介绍Qt的下载、安装与使用已过时,初学者常因行不通而受挫,故此发布本文,以Qt 6.2.4开源版在Windows 10安装与使用为例介绍。 C好用…

Kubernetes 之7大CNI 网络插件用法和对比

Kubernetes 它需要网络插件来提供集群内部和集群外部的网络通信。以下是一些常用的 k8s 网络插件: Flannel:Flannel 是最常用的 k8s 网络插件之一,它使用了虚拟网络技术来实现容器之间的通信,支持多种网络后端,如 VXLA…

SpringSecurity权限管理基本概念和整体架构介绍

文章目录 一、权限管理1、认证2、授权3、对权限控制,现有的解决方案 二、SpringSecurity简介1、官方定义2、历史 三、整体架构1、认证AuthenticationManagerAuthenticationSecurityContextHolder 2、授权AccessDecisionManagerAccessDecisionVoterConfigAttribute 一…

SQL注入:sqli第一关详细讲解

一、实验环境: Apache2.4.39 FTP0.9.60 MySQL5.7.26 PHP 5.3.29(注意PHP的版本不应过高,否则会导致sqli安装失败) sqli 二、实验步骤 第一步:在id1后加入一个闭合符号,如果报错,再在后面加上 -- qwe将后面注释掉…