一、索引的概念 索引:排序的列表,对数据进行快速的查询; 针对不同的产品需求,或者不同的数据库结构,会创建不同的索引; 1:普通索引(默认索引) 2:唯一索引(可以多个) 3:主键索引(只能一个) 4:组合索引(最左查询) 5:全文索引 oracle:B树索引 将表一份为二进行查询; 70 1--35 36--70 1--17 18--35 先把实验环境创建出来: 先创建库;再创建表; 一:创建普通索引; create index aaa on users(user_name(20)); 普通索引创建命令 索引名 users表 哪个列作为索引;索引的大小;尽量和列的大小;保持一致; 如何查看索引; show create table users\g 使用另外一种创建索引的命令:慎用;此命令是用来修改表的结构的,同时还可以添加索引; alter table users add index bbb (user_name(20)); 另外一种查看索引的方法: show index from users\G 而且普通索引的类型就是oracle中的B树索引; 第三种创建索引的方法; 在创建表的时候创建索引; create table t1 ( id int(10) , name char(20) , sex char(2), index ccc (id) ); 查看该索引; 二:创建唯一索引 指定创建索引类型(unique)(唯一索引,它的值,要在表中是唯一性的;) create unique index ddd on t1(id); 第二种创建唯一索引的方法: 创建表的时候创建索引; create table t2 ( id int(10) , name char(20) , sex char(2), unique eee (id) ); 第三种创建唯一索引的方法: alter命令添加唯一索引; 表的约束: 实体完整性约束(主键)(主键是唯一的,且不能为空。) 域完整性约束(数据类型。) 引用完整性约束(外键一定对应另外一个表的主键。) 用户自定义的完整性(大小约束性。) 三:创建主键索引 主键是创建表的时候声明出来的; 查看主键: show create table t3\G 四:创建组合索引(特点是一个索引对应多个列;且列与列可以有间隔) create table t4 (id int(10),name char(20),age int(5),index ggg(id,name,age)); 组合索引如何使用? 提供的搜索语句要和索引列对应起来;如果顺序有错误;将不会使用到索引; 五:创建全文索引 全文索引只针对字符串,而数字不能作为全文索引; create fulltext index hhh on t4 (name); 创建索引的原则; (1)主键或外键必须有索引 (2)300行以下,没有必要创建索引 (3)经常用于跨表查询,需要有索引 (4)唯一性比较差的列或表不适合建立索引 (5)更新太频繁的列不适合建立索引 (6)经常用where指定的条件进行查询的,适合创建索引 (7)建立索引的列尽量是小字段 索引的维护: 删除,再创建;重建索引; 如何删除索引: 使用drop命令来删除索引;然后指定索引的名称及所在的表; drop index ggg on t4; 事物:一系列sql语句的集合,这些语句全都指定,要么都不执行; 语句1 语句2 语句3 原子性: 一致性: 隔离性: 持久性:(提交) 内存(数据缓冲区)(可以回滚) 服务器宕机的话,没有来得及写入硬盘的话,数据会丢失; 提交意味着写入硬盘; 硬盘(永久存储)(不可以回滚的) 例:银行转账: 账户1 2000 -1000 =1000 账户2 +1000 如果转账不成功会撤销前面所有的步骤;执行事物之前与执行事物之后要保证一致性。 创建实验环境: 创建一个表; 往表里填写数据,并且关闭自动提交的功能; 然后再提交第二条数据;且随后进行回滚;发现数据没有被及时写入到硬盘中; 位于缓冲区的可以回滚的,写入到硬盘中的数据不可以回滚; 如何手动提交:commit 如何将多个语句写入到事物中; 先使用begin;作为开头;然后中间写语句;最后以提交命令commit做结尾;此时;这些语句就会被及时写入到硬盘中; 创建普通索引的三种方法 创建唯一索引的三种方法 创建主键索引的两种方法 创建组合索引只有一种方法 创建全文索引有三种方法 小结 索引的概念、 索引的作用、 索引的分类、 索引的创建、 索引的查看、 索引的删除