- 一、语法相关
1、mysql中表连接有哪几种方式,分别用什么关键字?
答:mysql表连接分为内连接(inner join。。。on),左连接(left join 。。。on),右连接(right join。。。on);注意:mysql不支持全连接,orcale支持
2、几种不同的表连接有什么区别
答:内连接要连接的两张表都包含的数据才会出现在查询结果中,左连接左边的表所有数据都会出现在查询结果中,右边的表则根据左表匹配,没有数据的以null表示,右连接与左连接相反。
3、创建索引的语法?
答:创建索引的方法有多种,这里拿其中一种举例:
create index 索引名 on 表名 (字段) ;
4、创建视图的语法?
答:Create view —创建一个视图
View_xxx —视图的名字为View_xxx
AS —视图的内容为一下查询语句查询到的结果
Select * from xxx where xxx
5、创建触发器的语法?
DELIMITER $ – 表示外层以$结束
create TRIGGER t1
before 什么时候触发(before/after)
insert on ord – 哪张表执行什么操作时触发
for each row – 行级触发器(mysql只支持行级触发器)
begin – 触发操作的内容
DECLARE rnum int; – 定义变量
select num into rnum from goods where gid=new.gid;
if new.much>rnum then
set new.much=rnum;
end if;
update goods set num=num-new.much where gid=new.gid;
end $ - 二、事务相关
1、mysql事务默认什么时候开启什么时候提交
答:mysql默认是没执行一个sql语句开启和提交一次事务
2、事务的特性
答:隔离性,一致性,原子性,持久性
3、事务的隔离级别
答:读未提交,读已提交(oracle默认的隔离级别),可重复读(mysql默认的隔离级别),串行化。
- 三、索引相关
1、为什么要添加索引
答:合理的添加索引可以提高查询速度,我们可以通俗的将索引理解为字典中的目录。
2、索引的分类
答:索引可分为主键索引,普通索引,唯一索引,复合索引等。
3、加入为a、b两个字段建立一个复合索引,哪些查询可使用索引?
答:查询ab字段,查询a字段均可使用索引,但单独查询b字段不可使用索引
4、mysql索引使用何种存储结构(过段时间单独写一篇关于mysql索引存储的文章,欢迎到家指正)
答:mysql索引使用B+树进行存储。
- 四、优化相关
1、如何避免Mysql慢查询
答:关于避免慢查询主要是指从sql语句出发,这方面大家可以去查询一下mysql官方发布的30条军规,这里简单的说一下,例如合理使用索引,尽量避免在等号左边做运算、使用不能与等会是查询不走索引的操作
2、Mysql优化主要从哪些方面下手
答:关于优化,任何的优化几乎都是从硬优化和软优化两方面入手;硬优化方面我们主要是提高硬件的配置,分库分表,读写分离等方案,软优化方面主要从sql语句入手,比如用join代替子查询,合理使用索引等