MySQL中对于索引的基本增删查改操作总结

创建索引

MySQL创建索引的语法如下:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
  [USING index_type]
  ON table_name (index_col_name,...)

其中对应的语法变量信息如下:

[UNIQUE|FULLTEXT|SPATIAL]
中括号中的这三个关键字表示创建的索引类型,它们分别表示唯一索引、全文索引、空间索引三种不同的索引类型。如果我们不指定任何关键字,则默认为普通索引。
index_name
index_name表示索引的名称,由用户自行定义,以便于以后对该索引进行修改等管理操作。
index_type
index_type表示索引的具体实现方式,在MySQL中,有两种不同形式的索引——BTREE索引和HASH索引。在存储引擎为MyISAM和InnoDB的表中只能使用BTREE,其默认值就是BTREE;在存储引擎为MEMORY或者HEAP的表中可以使用HASH和BTREE两种类型的索引,其默认值为HASH。
index_col_name
index_col_name表示需要创建索引的字段名称,我们还可以针对多个字段创建复合索引,只需要在多个字段名称之间以英文逗号隔开即可。
此外,对于CHAR或VARCHAR类型的字段,我们还可以只使用字段内容前面的一部分来创建索引,只需要在对应的字段名称后面加上形如(length)的指令即可,表示只需要使用字段内容前面的length个字符来创建索引。在这里,我们以User表的username字段(类型为VARCHAR(50))为例,使用username字段的6个字符前缀来创建索引。

CREATE INDEX idx_user_username ON user (username(6));

由于多数字段的前6个字符通常不同,所以此索引不会比使用字段的全部内容创建的索引速度慢很多。另外,使用字段的一部分创建索引可以使索引文件大大减小,从而节省了大量的磁盘空间,有可能提高INSERT操作的速度。

在MySQL中,前缀长度最大值为255字节。对于存储引擎为MyISAM或InnoDB的数据表,前缀最长为1000字节。

必须注意的是,在MySQL中,对于TEXT和BLOB这种大数据类型的字段,必须给出前缀长度(length)才能成功创建索引。

备注1:上述创建索引的语法还具有以下变体:

ALTER TABLE table_name
ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name (index_col_name,...) [USING index_type]

备注2:在MySQL中,只有当数据表的存储引擎为MyISAM, InnoDB或BDB类型时,你才能向具有NULL值的列或者数据类型为TEXT或BLOB的列添加索引。

删除索引

在MySQL中删除索引的方法非常简单,其完整语法如下:

--删除指定表中指定名称的索引
ALTER TABLE table_name
DROP INDEX index_name;

在这里,我们编写SQL语句将上面创建索引的例子中的索引idx_user_username删除掉,代码详情如下:

--删除名称为idx_user_username的索引
ALTER TABLE user
DROP INDEX idx_user_username;

修改索引

在MySQL中并没有提供修改索引的直接指令,一般情况下,我们需要先删除掉原索引,再根据需要创建一个同名的索引,从而变相地实现修改索引操作。

--先删除
ALTER TABLE user
DROP INDEX idx_user_username;
--再以修改后的内容创建同名索引
CREATE INDEX idx_user_username ON user (username(8));

查看索引

在MySQL中,要查看某个数据库表中的索引也非常简单,只需要使用以下两个命令中的任意一种即可。

--如果查看索引前,没有使用user db_name等命令指定具体的数据库,则必须加上FROM db_name
SHOW INDEX FROM table_name [FROM db_name]
--如果查看索引前,没有使用user db_name等命令指定具体的数据库,则必须加上db_name.前缀
SHOW INDEX FROM [db_name.]table_name
(0)

相关推荐

  • Mysql的增删改查语句简单实现

    Mysql的增删改查语句简单实现 增加记录: insert into tablename(...) values(...) //如果增加的记录包括所有的列,则不需要写数据列表 insert into tablename values(...) 删除记录: delete from tablename where condition ; 修改记录: update tablename set xx=xx , xx=xx... where condition ; alter table tablenam

  • PHP连接MySQL进行增、删、改、查操作

    话不多说,请看代码: <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代号</td> <td>姓名</td> <td>性别</td> <td>民族</td> <td>生日</td> <

  • Node.js操作mysql数据库增删改查

    关于node.js操作mysql数据库的相关介绍请阅读全文吧.下文介绍的非常详细,具体内容如下所示:  安装mysql模块 npm install mysql 数据库准备 mysql server所在的机器IP地址是192.168.0.108,登录账户就用root@123456 在mysql中创建test数据库 在test数据库中创建一张users表 操作 连接数据库 var mysql=require('mysql'); var connection = mysql.createConnect

  • PHP+MYSQL实现用户的增删改查

    文件列表..文件内容.. dbconn.php userListt.php editUser.php editDo.php detailUser.php deleteUser.php addUser.php addDo.php <dbconn.php> <?php // 创建数据库连接 $con = mysql_connect("localhost",'root','') or die('error:'.mysql_error()); mysql_select_db(

  • 详解使用pymysql在python中对mysql的增删改查操作(综合)

    这一次将使用pymysql来进行一次对MySQL的增删改查的全部操作,相当于对前五次的总结: 先查阅数据库: 现在编写源码进行增删改查操作,源码为: #!/usr/bin/python #coding:gbk import pymysql from builtins import int #将MysqlHelper的几个函数写出来 def connDB(): #连接数据库 conn=pymysql.connect(host="localhost",user="root&quo

  • php+mysql实现简单的增删改查功能

    列表代码 <?php $con = mysql_connect("localhost:3306","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("test", $con); $result = mysql_query("SELECT * FROM user"); echo &

  • python Django连接MySQL数据库做增删改查

    1.下载安装MySQLdb类库http://www.djangoproject.com/r/python-mysql/2.修改settings.py 配置数据属性 复制代码 代码如下: DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.        'NAME': 'djang

  • PHP MySql增删改查的简单实例

    mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?php $con=@mysql_connect('localhost','root','root');//连接数据库 mysql_select_db('test',$con);//选择数据库 $userInfo=mysql_query("select * from user",$con);/

  • java jdbc连接mysql数据库实现增删改查操作

    jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的时候才能更好的去理解这些成熟的框架是如何去实现增删改查

  • MySQL中对于索引的基本增删查改操作总结

    创建索引 MySQL创建索引的语法如下: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON table_name (index_col_name,...) 其中对应的语法变量信息如下: [UNIQUE|FULLTEXT|SPATIAL] 中括号中的这三个关键字表示创建的索引类型,它们分别表示唯一索引.全文索引.空间索引三种不同的索引类型.如果我们不指定任何关键字,则默认为普通索引. index_name

  • MongoDB增删查改操作示例【基于JavaScript Shell】

    本文实例讲述了MongoDB增删查改操作.分享给大家供大家参考,具体如下: MongoDB自带了一个JavaScript Shell,所以在其中使用js语法是可以的. Insert操作: 单条插入 var single={"name":"mei","age":22} db.user.insert(single); 循环插入 var single={"name":"tinyphp","num&quo

  • ThinkPHP基本的增删查改操作实例教程

    本文实例讲述了ThinkPHP基本的增删查改操作,是ThinkPHP项目开发中最常用的基础操作,有着十分重要的应用价值.现将完整的实例代码与大家分享,希望能对大家有所帮助.具体如下: 一.表aoli_user字段设置: 表aoli_user主要有以下几个字段: id   username   password    createtime    createip 二.view模板部分 1.用户首页模板: aoli/Home/Tpl/default/User/index.html页面代码如下: <f

  • MongoDB入门教程之细说MongoDB数据库的增删查改操作

    看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongodb,突然 傻眼了,擦,竟然开启不了,仔细观察"划线区域"的信息,发现db文件夹下有一个类似的"lock file"阻止了mongodb的开启,接下来我们要做的就 是干掉它,之后,开启成功,关于mongodb的管理方式将在后续文章分享.  一: Insert操作 上一篇也说过,文档是采用"K-V"格式存储的,如果大家对JSO

  • Spring Boot中使用Spring-data-jpa实现数据库增删查改

    在实际开发过程中,对数据库的操作无非就"增删改查".就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑. 为了解决这些大量枯燥的数据操作语句,我们第一个想到的是使用ORM框架,比如:Hibernate.通过整合Hibernate之后,我们以操作Java实体的方式最终将数据改变映射到数据库表中. 为了解决抽象各个Java实体基本的"增删改查"操作,我们通常会以泛型的方式封装一个模板Dao来进行抽象简化,但是这

  • MongoDB中对文档的增删查改基本操作方法总结

    插入文档:insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法. 语法: insert() 命令的基本语法如下: >db.COLLECTION_NAME.insert(document) 例子:  >db.mycol.insert({    _id: ObjectId(7df78ad8902c),    title: 'MongoDB Overview',     description: 'MongoDB is

  • mybatis实现对数据的增删查改实例详解

    前期准备 新建java工程或java wweb工程,需要导入以下的包, 基本工作已经完成,接下来开始进入正题. 新建实体类 新建与数据库表对应的实体类 package com.edu.hpu.domain; /** * @author Administrator *user表所对应的实体类 */ public class User { //实体类的属性和表的字段名称一一对应 private int id; private String name; private int age; //对属性进行

  • C语言如何建立链表并实现增删查改详解

    前言 以下是本人完成的一个C语言建立链表并进行增删查改操作的程序,为方便学习,本人将整个程序分为头文件和主函数两部分: 1.头文件(函数部分) (1)初始化函数 #include <stdio.h> #include <stdlib.h> typedef struct { int *head; int length; int capacity; } Toslist; //Toslist类型 //初始化顺序表 Toslist initSeqlist() { Toslist list;

  • MySQL 数据库 增删查改、克隆、外键 等操作总结

    目录 SQL 字段数据类型 查看数据库信息语句 SQL 语句 创建.删除 数据库 数据表 向表中添加.删除 记录.查询记录 修改表名,添加.修改.删除 字段,添加唯一约束 查看.删除.添加 表中的索引 扩展功能,字段值自增等 数据表高级操作 克隆表,将数据表的数据记录生成到新的表中 删除记录后主键记录重头开始自增 创建临时表 创建外键约束,保证数据的完整性和一致性 MySQL 六种约束 数据库中有数据表,数据表中有一条一条的记录. 可以用Navicat 等远程连接工具链接数据库,不过数据库需要开

  • MySQL入门(五) MySQL中的索引详讲

    序言 之前写到MySQL对表的增删改查(查询最为重要)后,就感觉MySQL就差不多学完了,没有想继续学下去的心态了,原因可能是由于别人的影响,觉得对于MySQL来说,知道了一些复杂的查询,就够了,但是我认为,不管有没有用,现在学着不懂的东西,说明就是自己薄弱的地方,多学才能比别人更强 --WH 一.什么是索引?为什么要建立索引? 索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有

随机推荐