什么是索引

索引就像是一本书的目录一样,能够快速找到所需要的内容

索引的作用

加快查询速率,降低IO成本加快表与表之间的连接,减少分组和排序时间

索引类型

普通索引:没有唯一性的基本索引

唯一索引:有唯一性,但可以为空

主键索引:有唯一性且不能够为空

全文索引:

单列索引与多列索引

创建索引的依据

表的主键,外键必须有索引

数量超过300行的必须有索引

经常与其他表连接大表,在连接字段应该有索引

唯一性差,频繁更新的不适合建索引

将常出现在where字段的应该建索引

索引应该建在选择性高的小字段上

创建查看删除索引

1.普通

create index  索引名字 on 表名(把谁设为索引);
create index  sy on wk(年龄);

2.查看索引

show index from 库名.表名\G;  查看并以竖列形式显示出来
show keys from 库名.表名\G;

3.唯一索引

create unique index 索引名字 on 表名(把谁设为唯一索引);

 create unique index wysy on wk(姓名);

4.主键索引

1.在create建表时创建

2.若忘记在建表时创建

alter table 表名 add primary key(把谁建为主键索引);

5.删除索引

非主键

drop index 索引名字 on 表名;
alter tables 表名 drop index 索引名字;

主键索引

alter table 表名 drop primary key;

事物处理控制命令

begin   开始一个事务

commit     提交一个事务

rollback  回滚一个事物

set 命令进行控制

set autocommit=;        #禁止自动提交
set autocommit=;        #开启自动提交

MySQL 内连接、左(外)连接、右(外)连接

内连接
就是找两个表之间的交集

关键字:inner join on

select * from 表名1 自定义的表1的别名 inner join 表名2 自定义的表2的别名 on 表一的别名.a_id = 表2的别名.b_id;
select * from a_table a inner join b_table b on a.a_id = b.b_id;
查看表内所有 表a_table 定义别名a 两个表之间的交集 表b_table 定义别名b 通过格式上的b_id作对比找出b_id的并集

左(外)连接

以左边表为基准,找右边表里和左边一样的列出来

关键字:left join on 或 left outer join on  #两种写法都行,没区别,前者是后者的简写

 select * from a_table a left join b_table b on a.a_id = b.b_id;   

右(外)连接

跟左连接差不多,以右边表为基准,右边的都列出来,找左边表里和右边一样的列出来

关键字:right join on 或 right outer join on

 select * from a_table a right join b_table b on a.a_id = b.b_id;

mysql之索引 应用于事物 内连接、左(外)连接、右(外)连接的更多相关文章

  1. 我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知

    面试官: 我看你的简历上写着精通MySQL,问你个简单的问题,MySQL联合索引有什么特性? 心想,这还不简单,这不是问到我手心里了吗? 听我给你背一遍八股文! 我: MySQL联合索引遵循最左前缀匹 ...

  2. mysql 内连接 左连接 右连接 外连接

    mysql> desc student;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | ...

  3. MySQL 进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接

    #进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接 /* 含义: 当查询的字段来自于多个表时, 就会用到连接查询 一: sql 92标准 :等值连接 ,(#内连接) 1 ...

  4. 细说MySQL连接查询:内连、左连和右连

    转: 细说MySQL连接查询:内连.左连和右连 简介: MySQL 的连接查询,通常都是将来自两个或多个表的行结合起来,基于这些表之间的共同字段,进行数据的拼接.首先,要确定一个主表作为结果集,然后将 ...

  5. 第七章 mysql 事务索引以及触发器,视图等等,很重要又难一点点的部分

    [索引] 帮助快速查询 MyISAM ,InnoDB支持btree索引 Memory 支持 btree和hash索引 存储引擎支持 每个表至少16个索引   总索引长度至少256字节   创建索引的优 ...

  6. 【夯实Mysql基础】MySQL性能优化的21个最佳实践 和 mysql使用索引

    本文地址 分享提纲: 1.为查询缓存优化你的查询 2. EXPLAIN 你的 SELECT 查询 3. 当只要一行数据时使用 LIMIT 1 4. 为搜索字段建索引 5. 在Join表的时候使用相当类 ...

  7. python/MySQL(索引、执行计划、BDA、分页)

    ---恢复内容开始--- python/MySQL(索引.执行计划.BDA.分页) MySQL索引: 所谓索引的就是具有(约束和加速查找的一种方式)   创建索引的缺点是对数据进行(修改.更新.删除) ...

  8. mysql数据库索引类型和原理

    索引初识: 最普通的情况,是为出现在where子句的字段建一个索引.为方便讲述,我们先建立一个如下的表. CREATE TABLE mytable ( id serial primary key, c ...

  9. Mysql创建索引

    1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有 ...

随机推荐

  1. SQL*Loader 的使用sqlldr和sqluldr2方法详解

    oracle数据导出工具sqluldr2可以将数据以csv.txt等格式导出,适用于大批量数据的导出,导出速度非常快.导出后可以使用oracle loader工具将数据导入.简介:Sqluldr2:专 ...

  2. hadoop-hive的内表和外表

    --创建内表create table if not exists employee(id int comment 'empoyeeid',dateincompany string comment 'd ...

  3. python:常用模块 知识整理

    time模块 time.time() # 时间戳:1487130156.419527 time.strftime("%Y-%m-%d %X") #格式化的时间字符串:'2017-0 ...

  4. Delphi ClearCommError函数

  5. bootstap 表格自动换行 截取超长数据

    <table class="table" style="TABLE-LAYOUT:fixed;WORD-WRAP:break_word">

  6. html页面嵌入php代码不显示内容

    新建一个html文件,内容如下: <html> <head> <title>Example</title> </head> <body ...

  7. 关于Http协议,一片就够了

    转载:http://www.jianshu.com/p/80e25cb1d81a HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从 ...

  8. php类知识---最疯狂的魔术方法serialize,_sleep,__wakeup,unserialize,__autoload,__clone

    serialize-----把实例化的对象写入文件 __sleep 调用serialize时触发 <?php class mycoach { public function __construc ...

  9. Java-WebServiceUtil工具类

    /** * Program : WebServiceUtil.java * Author : leigq * Create : 2010-11-12 上午09:02:05 * * Copyright ...

  10. Python之日期操作及转换详解

    # 导入datetime模块,用以操作时间 import datetime # 导入time模块 import time # 获取当前时间 格式: 年-月-日 时:分:秒 . 毫秒 nowTime = ...