数据库
首页 > 数据库> > |NO.Z.00060|——————————|BigDataEnd|——|Java&MySQL索引/存储过程/触发器.V01|-------------------------|MySQL.v01|索

|NO.Z.00060|——————————|BigDataEnd|——|Java&MySQL索引/存储过程/触发器.V01|-------------------------|MySQL.v01|索

作者:互联网



[BigDataJava:Java&MySQL索引/存储过程/触发器.V01]                                         [BigDataJava.MySQL基础][|第二阶段|模块一|——|章节四|mysql基础|mysql索引/存储过程/触发器|索引的介绍|]








一、索引的介绍
### --- 什么是索引

——>        在数据库表中,对字段建立索引可以大大提高查询速度。通过善用这些索引,
——>        可以令MySQL的查询和运行更加高效。
——>        如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,
——>        那么没有设计和使用索引的MySQL就是一个人力三轮车。
——>        拿汉语字典的目录页(索引)打比方,
——>        我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字
——>        MySql将一个表的索引都保存在同一个索引文件中, 如果对中数据进行增删改操作,
——>        MySql都会自动的更新索引
二、常见索引分类
索引名称说明
主键索引 (primarykey)主键是一种唯一性索引,每个表只能有一个主键,
用于标识数据表中的每一条记录
唯一索引 (unique) 唯一索引指的是 索引列的所有值都只能出现一次, 必须唯一.
普通索引 (index) 最常见的索引,作用就是 加快对数据的访问速度

三、主键索引
### --- 主键索引 (PRIMARY KEY)

——>        特点: 主键是一种唯一性索引,每个表只能有一个主键,用于标识数据表中的某一条记录。
——>        一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。
### --- 创建db4数据库

CREATE DATABASE db4 CHARACTER SET utf8;
### --- 创建 demo01表

CREATE TABLE demo01(
    did INT,
    dname VARCHAR(20),
    hobby VARCHAR(30)
);
### --- 语法格式
——>        创建表的时候直接添加主键索引 (最常用)

CREATE TABLE 表名(
    -- 添加主键 (主键是唯一性索引,不能为null,不能重复,)
    字段名 类型 PRIMARY KEY,
);
——>        修改表结构 添加主键索引

ALTER TABLE 表名 ADD PRIMARY KEY ( 列名 )
### --- 为demo1 表添加主键索引

ALTER TABLE demo01 ADD PRIMARY KEY (did);

四、唯一索引(UNIQUE)
### --- 唯一索引

——>        特点: 索引列的所有值都只能出现一次, 必须唯一.
——>        唯一索引可以保证数据记录的唯一性。事实上,在许多场合,
——>        人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。
### --- 语法格式

——>        创建表的时候直接添加主键索引
CREATE TABLE 表名(
    列名 类型(长度),
    -- 添加唯一索引
    UNIQUE [索引名称] (列名)
);
——>        使用create语句创建: 在已有的表上创建索引
create unique index 索引名 on 表名(列名(长度))
——>        修改表结构添加索引
ALTER TABLE 表名 ADD UNIQUE ( 列名 )
### --- 为 hobby字段添加唯一索引

create unique index ind_hobby on demo01(hobby)
### --- 向表中插入数据

INSERT INTO demo01 VALUES(1,'张三','DBJ');
——>        报错Duplicate entry 'DBJ' for key 'hobby'
——>        唯一索引保证了数据的唯一性,索引的效率也提升了
INSERT INTO demo01 VALUES(2,'李四','DBJ');
四、普通索引 (INDEX)
### --- 普通索引

——>        普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
——>        因此,应该只为那些最经常出现在查询条件(WHERE column=)
——>        或排序条件(ORDERBY column)中的数据列创建索引。
### --- 语法格式

——>        使用create index 语句创建: 在已有的表上创建索引
create index 索引名 on 表名(列名[长度])
——>        修改表结构添加索引
ALTER TABLE 表名 ADD INDEX 索引名 (列名)
### --- 给 dname字段添加索引

~~~     # 给dname字段添加索引
alter table demo01 add index dname_indx(dname);

五、删除索引
### --- 删除索引

——>        由于索引会占用一定的磁盘空间,因此,为了避免影响数据库的性能,
——>        应该及时删除不再使用的索引
### --- 语法格式

ALTER TABLE table_name DROP INDEX index_name;
### --- 删除 demo01 表中名为 dname_indx 的普通索引。

ALTER TABLE demo01 DROP INDEX dname_indx;
六、sql语句
### --- sql语句

~~~     # 创建db4数据库
CREATE DATABASE db4 CHARACTER SET utf8;
~~~     # 创建demo01表
CREATE TABLE demo01(
    did INT,
    dname VARCHAR(20),
    hobby VARCHAR(30)
);
~~~     # 为demo01表添加主键索引
ALTER TABLE demo01 ADD PRIMARY KEY (did);

~~~     # 为 hobby字段添加唯一索引
CREATE UNIQUE INDEX ind_hobby ON demo01(hobby)
~~~     # 向表中插入数据
INSERT INTO demo01 VALUES(1,'张三','DBJ');
~~~     # 报错Duplicate entry 'DBJ' for key 'hobby'
~~~     # 唯一索引保证了数据的唯一性,索引的效率也提升了
INSERT INTO demo01 VALUES(2,'李四','DBJ');
~~~     # 给demo字段添加索引
ALTER TABLE demo01 ADD INDEX dname_indx(dname);

~~~     # 删除 demo01 表中名为 dname_indx 的普通索引。
ALTER TABLE demo01 DROP INDEX dname_indx;
### --- 索引

/*
    索引概念
        我们可以通过对数据表中的字段创建索引 来提高查询速度
    
    常见的索引的分类
        主键索引 (primary key) 主键是一个唯一性的索引 每个表中只能有一个主键
        唯一索引 (unique) 索引列的所有数据只能出现一次,必须是唯一
        普通索引 (index) 最常见的索引 作用就是提高对数据的访问速度
        
    表对应的索引被保存在一个索引文件中, 如果对数据进行增删改操作,那么mysql就需要对索引进行更新
    
*/
/*
    主键索引的创建
        1.创建表的时候 直接添加主键
        2.创建表之后 添加索引 使用 DDL
*/

-- 为demo01表添加 主键索引
ALTER TABLE demo01 ADD PRIMARY KEY (did);
/*
    唯一索引的创建
        create unique index 索引名 on 表名(列名(长度))
*/

-- 为demo01表的 hobby字段添加唯一索引
CREATE UNIQUE INDEX ind_hobby ON demo01(hobby);

-- 添加唯一索引的列,列的所有值都只能出现一次
INSERT INTO demo01 VALUES(1,'tom','篮球');

-- Duplicate entry '篮球' for key 'ind_hobby'
-- 唯一索引保证了数据的唯一性, 同时也提升了查询效率
INSERT INTO demo01 VALUES(2,'jack','篮球');
/*
    普通索引的创建
        1.create index 索引名 on 表名(列名[长度])
        2.ALTER TABLE 表名 ADD INDEX 索引名 (列名)
*/
-- 为 demo01表中的 dname字段添加普通索引
ALTER TABLE demo01 ADD INDEX ind_dname(dname);
/*
    删除索引
        ALTER  TABLE 表名  DROP INDEX 索引名;
*/

-- 删除dname字段上的索引
ALTER TABLE demo01 DROP INDEX ind_dname;








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                   ——W.S.Landor



来自为知笔记(Wiz)

标签:Java,---,索引,demo01,MySQL,TABLE,主键,###
来源: https://www.cnblogs.com/yanqivip/p/16102138.html