• +86 18940128339
  • 3056844889@qq.com

Mysql语句

Mysql语句

一.索引


1)单列索引
普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。

唯一索引:索引列中的值必须是唯一的,但是允许为空值。

主键索引:是一种特殊的唯一索引,不允许有空值。

2)组合索引
在表中的多个字段组合上创建的索引

组合索引的使用,需要遵循最左前缀原则(最左匹配原则,后面高级篇讲解)。

一般情况下,建议使用组合索引代替单列索引(主键索引除外,具体原因后面知识点讲解)。

3)全文索引
只有在MyISAM引擎上才能使用,而且只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引。

4)空间索引
不做介绍,一般使用不到。

二.高级查询

子查询(嵌套查询)

一个 select 语句中,嵌入另外一个 select 语句, 被嵌入的 select 语句称为子查询语句,外部select语句则称为主查询。 主查询和子查询的关系 子查询是嵌入到主查询中 子查询是辅助主查询的,要么充当条件,要么充当数据源 子查询是可以独立存在的语句,是一条完整的 select 语句

语法:语法:嵌套查询也就是在查询语句中包含有子查询语句,所以叫嵌套查询,没有单独的语法,嵌套子查询通常位于查询语句的条件之后;
 
-- 先查询学生平均年龄,再查询大于平均年龄的学生
select * from student where age > (select avg(age) from student);
连接查询

MySQL查询连接主要分为三类:内连接、外连接和交叉连接。

内连接

INNER JOIN

-- 内连接
语法:select 字段 from 表1 inner join 表2 on 表1.字段 = 表2.字段;
	根据两个表中共有的字段进行匹配,然后将符合条件的合集进行拼接
	on后面是连接条件,也就是共有字段
 
select * from student inner join engScore on student.name = engScore.name;
-- 将 student 表与 engScore 表通过相同的 name 拼接起来,简单的来说就是两个 excel 合并
外连接

OUTER JOIN

对于外联结 outer关键字可以省略

外连接分为左连接和右连接,这种连接是指在连接两张或多张表时,包含了所有的记录。

左(外)连接

-- 左连接
语法:select 字段 from 表1 left join 表2 on 连接条件;
 
select * from student left join engScore on student.name = engScore.name;
-- 与内连接形式相同,但左表为主表,指定字段都会显示,右表为从表,无内容会显示 null

右(外)连接

-- 右连接
语法:select 字段 from 表1 right join 表2 on 连接条件;
 
select * from student right join engScore on student.name = engScore.name;
-- 与内连接形式相同,但右表为主表,指定字段都会显示,左表为从表,无内容会显示 null

三.主从复制

1 )在 slave 服务器上执行 start slave 命令,主从复制开始进行

2)此时,slave 服务器的 I/O 线程 会通过在 Master 上已经授权的用户请求连接 Master 服务器 ,并请求从指定 binlog 日志文件的指定位置(日志文件名和位置就是在配置主从复制服务时执行 change master 命令指定的)之后开始发送 binlog 日志内容
3) Master 服务器接收到来自 slave 服务器的 I/O 线程的请求之后,其上负责复制的 binlog dump 线程会根据请求的信息,分批读取指定 binlog 日志文件所指定位置之后的 binlog 日志信息,然后返回给 Slave 端的 I/O 线程。 返回的信息中除了 binlog 日志内容之外,还包括在 Master 服务器端记录的新的 binlog 文件名称, 以及在新的 binlog 中的下一个指定的更新位置

4)当 slave 服务器的 I/O 线程获取到 Master 服务器上 I/O 线程发送的日志内容及 日志文件和位置点之后 ,会将 binlog 日志内容依次写入到 Slave 端自身的 Relay Log (即中继日志)文件( MySQL-relay-bin.xxxxxx )的最末端,并将新的 binlog 文件名和位置记录到 master info 文件中,以便下次读取 Master 端新 binlog 日志时,能够告诉 Master 服务器需要从新 binlog 日志的指定文件及位置开始请求新的 binlog 日志内容

5 ) Slave 服务器端的 SQL 线程会实时地检测本地 Relay Log 中 I/O 线程新增加的日志内容,然后及时地把 Relay Log 文件中的内容解析成 SQL 语句, 并在自身 slave 服务器上按解析 SQL 语句的位置顺序执行,并将当前应用中继日志的文件名及位置点记录在 relay- log.info

suixianbo

1.三年 IOS 开发经验基础扎实 精通Objective-C语言和SwiftUi框架 2.五年PHP开发 精通 Thinkphp Laravel框架 熟悉 YII2 等常用框架 3.熟悉常用语言 java js css html等 4.熟练使用 git svn docker 等开发软件 5.有良好的编码习惯 熟悉面向对象编程 熟练使用 MVC和 MVP 等常用架构 熟练掌握缓存redis使用,精通mysql优化,了解swoole 6.精通 linux,centos,Ubuntu 等服务器常用指令 服务器搭建 运维

留下您的信息