mysql之索引 应用于事物 内连接、左(外)连接、右(外)连接
什么是索引
索引就像是一本书的目录一样,能够快速找到所需要的内容
索引的作用
加快查询速率,降低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之索引 应用于事物 内连接、左(外)连接、右(外)连接的更多相关文章
- 我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知
面试官: 我看你的简历上写着精通MySQL,问你个简单的问题,MySQL联合索引有什么特性? 心想,这还不简单,这不是问到我手心里了吗? 听我给你背一遍八股文! 我: MySQL联合索引遵循最左前缀匹 ...
- mysql 内连接 左连接 右连接 外连接
mysql> desc student;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | ...
- MySQL 进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接
#进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接 /* 含义: 当查询的字段来自于多个表时, 就会用到连接查询 一: sql 92标准 :等值连接 ,(#内连接) 1 ...
- 细说MySQL连接查询:内连、左连和右连
转: 细说MySQL连接查询:内连.左连和右连 简介: MySQL 的连接查询,通常都是将来自两个或多个表的行结合起来,基于这些表之间的共同字段,进行数据的拼接.首先,要确定一个主表作为结果集,然后将 ...
- 第七章 mysql 事务索引以及触发器,视图等等,很重要又难一点点的部分
[索引] 帮助快速查询 MyISAM ,InnoDB支持btree索引 Memory 支持 btree和hash索引 存储引擎支持 每个表至少16个索引 总索引长度至少256字节 创建索引的优 ...
- 【夯实Mysql基础】MySQL性能优化的21个最佳实践 和 mysql使用索引
本文地址 分享提纲: 1.为查询缓存优化你的查询 2. EXPLAIN 你的 SELECT 查询 3. 当只要一行数据时使用 LIMIT 1 4. 为搜索字段建索引 5. 在Join表的时候使用相当类 ...
- python/MySQL(索引、执行计划、BDA、分页)
---恢复内容开始--- python/MySQL(索引.执行计划.BDA.分页) MySQL索引: 所谓索引的就是具有(约束和加速查找的一种方式) 创建索引的缺点是对数据进行(修改.更新.删除) ...
- mysql数据库索引类型和原理
索引初识: 最普通的情况,是为出现在where子句的字段建一个索引.为方便讲述,我们先建立一个如下的表. CREATE TABLE mytable ( id serial primary key, c ...
- Mysql创建索引
1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有 ...
随机推荐
- hadoop-2.7.3安装kafka_2.11-2.1.0
软件下载: http://mirrors.shu.edu.cn/apache/kafka/2.1.0/kafka_2.11-2.1.0.tgz 把下载好的包kafka_2.11-2.1.0.tgz 上 ...
- 第四章· MySQL客户端工具及SQL讲解
一.客户端命令介绍 1.mysql 1.用于数据库的连接管理 1) 连接(略) 2) 管理: #MySQL接口自带的命令 \h 或 help 或? 查看帮助 \G 格式化查看数据(key:value) ...
- bootstrap和JS实现下拉菜单
// bootstrap下拉菜单 <div class="btn-group"> <button id="button_text" type= ...
- Java 使用jsp和servlet实现验证码功能
验证码主要是为了防止我们的网站被有些人和黑客恶意攻击,比如我们网站的注册页面,如果我们在用户注册的时候不加上一个验证码框的话,别人就可以写一个脚本对你的网站进行恶意的注册,比如每分钟对你的网站进行n次 ...
- keep running
一个人的心态,会支撑你一路的发展:一个人的眼界,会决定选择的方向:一个人的格局,会意味着你成就多大的规模:一个人的毅力,会支持你能够走多远:一个人的用心,会注定你做出多好的成效!你变好了,一切就变好 ...
- 用Python调用Shell命令
Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令. 用Python调用Shell命令有如下几种方式: 第一种 ...
- docker使用 Flannel(etcd+flannel)网络
一.Flannel网络简介 Flannel是一种基于overlay网络的跨主机容器网络解决方案,也就是将TCP数据包封装在另一种网络包里面进行路由转发和通信,Flannel是CoreOS开发,专门用于 ...
- JavaStript基础 —— JavaStript语法
JavaStript 简介 JavaScript诞生于 1995年.当然,它的主要目的是处理以前由服务器端语言负责的一些输入验证操作. 如今,JavaStript的用途早就不再局限于简单的数据验证,而 ...
- Python之concurrent.futures模块的使用
concurrent.futures的作用: 管理并发任务池.concurrent.futures模块提供了使用工作线程或进程池运行任务的接口.线程和进程池API都是一样,所以应用只做最小 ...
- MySQL的btree索引和hash索引区别
在使用MySQL索引的时候, 选择b-tree还是hash hash索引仅仅能满足"=","IN"和"<=>"查询,不能使用范 ...