15.MySQL(三)
索引类型
先创建表
mysql> CREATE TABLE test(
-> id INT,
-> username VARCHAR(16),
-> city VARCHAR(16),
-> age INT
-> );
1.普通索引
是最基本的索引,它没有任何的限制。有以下几种创建方式
(1)直接创建索引:
CREATE INDEX index_name ON table(column(length))
实例:
CREATE INDEX test_username ON test (username(10)); -->单列索引
indexName为索引名,mytable表名,username和city为列名,10为前缀长度,即索引在该列从最左字符开始存储的信息长度,单位字节
如果是CHAR,VARCHAR类型,前缀长度可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 前缀长度,下同。
(2)修改表结构的方式添加索引
ALTER TABLE table_name ADD INDEX index_name ON (column(length))
ALTER TABLE test ADD INDEX test_username(username(10));
此处 indexName 索引名可不写,系统自动赋名 username ,username_2 ,username_3,...
(3)创建表的时候同时创建索引
mysql> CREATE TABLE test(
-> id INT,
-> username VARCHAR(16),
-> city VARCHAR(16),
-> age INT,
-> INDEX test_username (username(10))
-> );
2.唯一索引
与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
(1)创建唯一索引
CREATE UNIQUE INDEX indexName ON table(column(length))
实例:
CREATE UNIQUE INDEX test_city ON test(city(10));
(2)修改表结构
ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))
(3)创建表的时候直接指定
mysql> CREATE TABLE test(
-> id INT,
-> username VARCHAR(16),
-> city VARCHAR(16),
-> age INT,
-> UNIQUE test_username (username(10))
-> );
3.主键索引
是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引:
主键索引无需命名,一个表只能有一个主键。主键索引同时可是唯一索引或者全文索引,但唯一索引或全文索引不能共存在同一索引
(1)修改表结构创建
ALTER TABLE test ADD PRIMARY KEY (id);
(2)创建表的时候直接指定
mysql> CREATE TABLE test(
-> id INT,
-> username VARCHAR(16),
-> city VARCHAR(16),
-> age INT,
-> PRIMARY KEY(id)
-> );
4.组合索引
指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合
ALTER TABLE test ADD INDEX test_username_city (username,city);
5.全文索引
主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。fulltext索引配合match against操作使用,而不是一般的where语句加like。它可以在create table,alter table ,create index使用,不过目前只有char、varchar,text 列上可以创建全文索引。值得一提的是,在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多。
(1)直接创建
CREATE FULLTEXT INDEX full_username ON test (username);
(2)修改表结构添加全文索引
ALTER TABLE test ADD FULLTEXT INDEX full_city (city);
(3)创建表的时候直接指定
mysql> CREATE TABLE test(
-> id INT,
-> username VARCHAR(16),
-> city VARCHAR(16),
-> age INT,
-> FULLTEXT indexName (username(10))
-> );
6.查看索引
第一种:show create table test;
第二种:SHOW INDEX FROM test \G;

7.删除索引
DROP INDEX index_name ON table;
ALTER TABLE test DROP PRIMARY KEY; -->删除主键
实例:
DROP INDEX test_city ON test;
DROP INDEX full_username ON test;
15.MySQL(三)的更多相关文章
- MySQL(三)
MYSQL(三) 上一章给大家说的是数据库的视图,存储过程等等操作,这章主要讲索引,以及索引注意事项,如果想看前面的文章,url如下: MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引 ...
- mysql(三) 数据表的基本操作操作
mysql(三) 数据表的基本操作操作 创建表,曾删改查,主键,外键,基本数据类型. 1. 创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGIN ...
- MySQL三种存储引擎总结
MySQL三种存储引擎 MyISAM.InnoDB.MEMORY 1.MyISAM MyISAM,3.23.34a前的默认存储引擎. 优缺点 优点 在于占用空间小,处理速度快. 缺点 不支持事务的完整 ...
- mysql三种带事务批量插入
原文:mysql三种带事务批量插入 c#之mysql三种带事务批量插入 前言 对于像我这样的业务程序员开发一些表单内容是家常便饭的事情,说道表单 我们都避免不了多行内容的提交,多行内容保存,自然要用到 ...
- 确保数据零丢失!阿里云数据库RDS for MySQL 三节点企业版正式商用
2019年10月23号,阿里云数据库RDS for MySQL 三节点企业版正式商用,RDS for MySQL三节点企业版基于Paxos协议实现数据库复制,每个事务日志确保至少同步两个节点,实现任意 ...
- Install Apache 2.2.15, MySQL 5.5.34 & PHP 5.5.4 on RHEL/CentOS 6.4/5.9 & Fedora 19-12 [转]
Step 1: Installing Remi Repository ## Install Remi Repository on Fedora , , , , ## rpm -Uvh http://d ...
- MySQL(三) 数据库表的查询操作【重要】
序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VARCHAR.BLOB,等), 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对 ...
- 【转】Mysql三种备份详解
一.备份的目的 做灾难恢复:对损坏的数据进行恢复和还原需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 二.备份需要考虑的问题 可以容忍丢失多长时间的数据:恢复数据要在多长时间内 ...
- mysql三-6:完整性约束
一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KE ...
随机推荐
- mysql1 - 环境与体验
一.准备工作 1.mac 软件包管理工具:homebrew 2.brew 如何使用?命令行 输入: brew 3.mac 下如何查看 mysql 目录? find /usr/local/ -iname ...
- JAVA浮点数计算精度损失底层原理与解决方案
浮点数会有精度损失这个在上大学的时候就已经被告知,但是至今完全没有想明白其中的原由,老师讲的时候也是一笔带过的,自己也没有好好琢磨.终于在工作的时候碰到了,于是google了一番. 问题: 对两个do ...
- 关于Mysql5.7高版本group by新特性报错
一个项目的开发到测试上线运营,团队对项目的管理不成熟会影响项目的开发效率.由于项目是我刚接手,独自在Centos搭建PHP环境,所以就考虑使用高版本,选择了Mysql5.7,本地开发环境还是Windo ...
- 使用CrashHandler来获取应用的crash信息
源码地址https://github.com/king1039/android-art-res/tree/master/Chapter_13/CrashTest/src/com/ryg/crashte ...
- hdu1698 Just a Hook 线段树
共有Q个更新,每次更新给更新的区间一个标记,表示该区间是在哪一次被更新,最后统计答案是以最近被更新的值为答案. AC代码: #include<cstdio> const int maxn= ...
- HDU - 3567 IDA* + 曼哈顿距离 + 康托 [kuangbin带你飞]专题二
这题难度颇大啊,TLE一天了,测试数据组数太多了.双向广度优先搜索不能得到字典序最小的,一直WA. 思路:利用IDA*算法,当前状态到达目标状态的可能最小步数就是曼哈顿距离,用于搜索中的剪枝.下次搜索 ...
- Ansible自动化运维笔记3(playbook)
1.基本语法 playbook文件格式为yaml语法.示例如下: 1.1 nginx.yaml --- - hosts: all tasks: - name: Install Nginx Packag ...
- html头部规范书写
建立标准化的声明(DOCTYPE)和head 以前的网页,甚至大型的门户网站也连个声明也没有,就仅仅是<html>,现在要做的就是给你的网页加上声明,规范head区域,让搜索引擎和喜欢你的 ...
- dojo API中英文缩写的意思
dojo API中英文缩写的意思 1.A-Array(数组) 2.B-Boolean(布尔类型) 3.C-Constructor(构造器) 4.D-Date(日期) 5.{}-DomNode(节点) ...
- Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.h2.Driver
1.错误描述 WARN:2015-05-01 13:26:10[localhost-startStop-1] - HHH000402: Using Hibernate built-in connect ...