普通索引创建

创建普通索引,即不添加 UNIQUE、FULLTEXT 等任何参数。

【例】创建表名为 score 的数据表,并在该表的 id 字段上建立索引,SQL 语句如下:

  1. CREATE table score(
  2. id int(11) AUTO_INCREMENT primary key not null,
  3. name varchar(50) not null,
  4. math int(5) not null,
  5. English int (5) not null,
  6. Chinese int (5) not null,
  7. index(id)
  8. );

此时在id字段上建立的普通索引名字为id,在id字段建立的,索引方法为BTREE,索引类型为normal

创建唯一索引

创建唯一索引时,使用 UNIQUE 参数进行约束。

【例】创建表名为 address 的数据表,并在该表的 id 字段上建立唯一索引,SQL 语句如下:

  1. CREATE table address(
  2. id int(11) auto_increment primary key not null,
  3. name varchar(50),
  4. address varchar(200),
  5. UNIQUE INDEX address(id ASC)
  6. );

此时在id字段上建立的唯一索引,索引名字为address,索引方法BTREE为,索引类型为Unique

创建前缀索引(某字段前*个字节)

创建单列索引,即在数据表的单个字段上创建索引。创建该类型索引不需要引入约束参数,用户在建立时只需要指定单列字段名,即可创建单列索引。

【例】创建名称为  telephone  的数据表,并指定在  tel  字段上建立名称为  tel_num  的单列索引,SQL  语句如下:

  1. create table telephone(
  2. id int(11) primary key auto_increment not null,
  3. name varchar(50) not null,
  4. tel varchar(50) not null,
  5. index tel_num(tel(20))
  6. );

此时在tel字段上建立的普通索引,索引名字为tel_num,索引方法为BTREE,索引类型为normal,索引取的是tel字段前20为字节建立索引

前缀索引无法使用覆盖索引

创建全文索引

全文索引只能作用在 CHAR、VARCHAR、TEXT、类型的字段上。创建全文索引需要使用 FULLTEXT 参数进行约束。

【例】创建表名为 cards 的数据表,并在该表的 name 字段上建立全文索引,SQL 语句如下:

  1. create table cards(
  2. id int(11) auto_increment primary key not null,
  3. name varchar(50),
  4. number bigint(11),
  5. info varchar(50),
  6. FULLTEXT KEY cards_number(name)
  7. );

此时在name字段上建立的全文索引,索引名字为cards_number,索引方法为空(没有),索引类型为FULL TEXT

创建多列索引

创建多列索引即指定表的多个字段即可实现。

【例】创建名称为 information 的数据表,并指定 name 和 sex 为 多列索引,SQL 语句如下:

  1. create table information(
  2. inf_id int(11) auto_increment primary key not null,
  3. name varchar(50) not null,
  4. sex varchar(5) not null,
  5. birthday varchar(50) not null,
  6. index info(name,sex)
  7. );

此时在name,sex字段上建立的普通联合索引,索引名字为info,索引方法为BTREE,索引类型为normal

创建空间索引(在MyISAM上)

创建空间索引时,需要设置 SPATIAL 参数。同样,必须说明的是,只有 MyISAM 类型表支持该类型索引。而且,索引字段必须有非空约束。

【例】创建一个名称为 list 的数据表,并创建一个名为 listinfo 的空间索引,SQL语句如下:

  1. create table list(
  2. id int(11) primary key auto_increment not null,
  3. goods geometry not null,
  4. SPATIAL INDEX listinfo(goods)
  5. )engine=MyISAM;

goods  字段上已经建立名称为  listinfo 的空间索引,其中  goods  字段必须不能为空,且数据类型是  GEOMETRY,该类型是空间数据类型。空间类型不能用其他类型代替,否则在生成空间素引时会产生错误且不能正常创建该类型索引。

空间类型除了上述示例中提到的 GEOMETRY 类型外,还包括如  POINT、LINESTRING、POLYGON  等类型,这些空间教据类型在平常的操作中很少被用到。

参考

原文链接:https://blog.csdn.net/qq_41573234/article/details/80250279

mysql在建表语句中添加索引的更多相关文章

  1. mysql 中添加索引的三种方法

    原文:http://www.andyqian.com/2016/04/06/database/mysqleindex/ 在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以 ...

  2. 三种常用的MySQL建表语句(转)

    MySQL建表语句是最基础的SQL语句之一,下面就为您介绍最常用的三种MySQL建表语句,如果您对MySQL建表语句方面感兴趣的话,不妨一看. 1.最简单的: CREATE TABLE t1(    ...

  3. MySQL建表语句生成Golang代码

    1. 背景 对于后台开发新的需求时,一般会先进行各种表的设计,写各个表的建表语句 然后根据建立的表,写对应的model代码.基础的增删改查代码(基础的增删改查服务可以划入DAO(Data Access ...

  4. mysql中添加索引

    创建普通索引 alter table xxxxxx add index index_name(xxxxxxx) 表名↑                                        列 ...

  5. MySQL建表语句+添加注释

    1.建表+注释 CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT COMMENT '学号', name ) COMMENT '姓名', a ...

  6. MySQL查看 InnoDB表中每个索引的高度

    我们都知道MySQL里,索引通常用B+树来实现的.B+树的叶子结点才具体保存数据(聚簇索引保存的是行数据:普通索引是主键,如有需要得回表),非叶子结点都是用来索引叶子结点的.假设索引高度为h,那么每次 ...

  7. mysql建表语句和数据类型

    1.创建表的完整语法 create table 表名( 字段名称 数据类型[(长度) 约束条件], 字段名称 数据类型[(长度) 约束条件] )   必须的:字段名 数据类型 表名 可选的:长度 约束 ...

  8. MySql数据库在表中添加新字段,设置主键,设置外键,字段移动位置,以及修改数据库后如何进行部署和维护的总结

    1,为当前已有的表添加新的字段 alter table student add studentName varchar(20) not null; 2,为当前已有的表中的字段设置为主键自增 alter ...

  9. MySQL建表语句的一些特殊字段

    这里的字段会不断更新 unsigned 这个字段一般在建表的时候写在Id上,用来表示不分正负号 tinyint 这个字段如果设置为UNSIGNED类型,只能存储从0到255的整数,不能用来储存负数. ...

随机推荐

  1. python类型-序列-元组

    元组是一种不可变类型,元组可用作一个字典的key. 1.创建一个元组并进行赋值 atuple = (123, 'abc', ('inner', 'tuple'), 7-9j) 2.访问元组中的值 元组 ...

  2. JAVA中值传递,引用传递

    刚在写一个用例,需要在方法中改变传递的参数的值,可是java中只有传值调用,没有传址调用.所以在java方法中改变参数的值是行不通的.但是可以改变引用变量的属性值. 可以仔细理解一下下面几句话: 1. ...

  3. CSS中的定位体系

    一.概述     1.什么是定位体系     视觉格式化模型规定,定位体系共有三种             a.常规流(normal flow)             b.浮动(float)     ...

  4. 理解Javascript的柯里化

    前言 本文1454字,阅读大约需要4分钟. 总括: 本文以初学者的角度来阐述Javascript中柯里化的概念以及如何在工作中进行使用. 原文地址:理解Javascript的柯里化 知乎专栏: 前端进 ...

  5. Python3基础之初识Python

    Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序, 作为ABC语 ...

  6. nginx之历史回溯

    前言 nginx是一个web应用及反向代理工具,由一名俄罗斯程序员(Igor)发明的:NGINX是一个免费的,开源的高性能HTTP服务器和反向代理,以及IMAP / POP3代理服务器. NGINX以 ...

  7. 面试官:能解释一下javascript中bind、apply和call这三个函数的用法吗

    一.前言    不知道大家还记不记得前几篇的文章:<面试官:能解释一下javascript中的this吗> 那今天这篇文章虽然是介绍javascript中bind.apply和call函数 ...

  8. ros之参数的使用与编程方法

    参数模型 ROS Master (Parameter Server) /robot_name: "my_robot"        ----{Node A   Node B} /r ...

  9. esp跟ebp跟踪记录

    发现文字描述还是太没有快感.上几幅图,来说明这个调试过程更好.此文对于深刻理解ebp,esp是具有长远意义的 可以看到,初始情况下,ebp此时值为0012FEDC,也就是栈帧的地址,而栈顶地址esp值 ...

  10. C++ traits技法的一点理解

    为了更好的理解traits技法.我们一步一步的深入.先从实际写代码的过程中我们遇到诸如下面伪码说起. template< typename T,typename B> void (T a, ...