Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 112 additions & 0 deletions docs/database/一条sql语句在mysql中如何执行的.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@


![](https://user-gold-cdn.xitu.io/2019/3/21/1699dea772f58967?w=800&h=531&f=jpeg&s=58821)
## ����

�����ʼ��ѧϰmysql���֪ʶ���Լ�����ѧ����֪ʶ�㣬�����Լ�����������������������ƪ���»������һ��sql�����mysql�е�ִ�����̣�����sql�IJ�ѯ��mysql�ڲ�����ô��ת��sql���ĸ�������ô��ɵġ�

## һ��mysql�ܹ�����

������mysql��һ����Ҫ�ܹ�ͼ��


![](https://user-gold-cdn.xitu.io/2019/3/23/169a8bc60a083849?w=950&h=1062&f=jpeg&s=38189)

mysql��Ҫ��ΪServer��ʹ洢�����

**Server��**����Ҫ��������������ѯ���桢���������Ż�����ִ�����ȣ����п�洢����Ĺ��ܶ�����һ��ʵ�֣�����洢���̡�����������ͼ�������ȣ�����һ��ͨ�õ���־ģ�� binglog��־ģ�顣

**�洢����**�� ��Ҫ�������ݵĴ洢�Ͷ�ȡ�����ÿ����滻�IJ��ʽ�ܹ���֧��InnoDB��MyISAM��Memory�ȶ���洢���棬����InnoDB���������е���־ģ��redolog ģ�顣

InnoDB 5.5.5�汾��ΪĬ�����档

**������**

��Ҫ�����û���¼���ݿ⣬�����û���������֤������У���˻����룬Ȩ�޵Ȳ���������û��˻�������ͨ�����������ᵽȨ�ޱ��в�ѯ���û�������Ȩ�ޣ�֮��������������Ȩ���߼��ж϶��ǻ�������ʱ��ȡ����Ȩ�����ݣ�Ҳ����˵������ֻҪ������Ӳ��Ͽ�����ʱ����Ա�޸��˸��û���Ȩ�ޣ����û�Ҳ�Dz���Ӱ��ġ�

**��ѯ����**

���ӽ�����ִ�в�ѯ����ʱ�򣬻��Ȳ�ѯ���棬Mysql����У�����sql�Ƿ�ִ�й�����Key-Value����ʽ�������ڴ��У�Key�Dz�ѯԤ�ƣ�Value�ǽ�������������key�����У��ͻ�ֱ�ӷ��ظ��ͻ��ˣ����û�����У��ͻ�ִ�к����IJ�������ɺ�Ҳ��ѽ������������������һ�ε��á���Ȼ������ִ�л����ѯ��ʱ���ǻ�У���û���Ȩ�ޣ��Ƿ��иñ��IJ�ѯ������

Mysql ��ѯ������ʹ�û��棬��Ϊ���ھ������µ�������˵���������Чʱ��̫���ˣ�����������Ч�������ã����ڲ��������µ�������˵��ʹ�û��滹�ǿ��Եģ�Mysql 8.0 �汾��ɾ���˻���Ĺ��ܣ��ٷ�Ҳ����Ϊ�ù�����ʵ�ʵ�Ӧ�ó����Ƚ��٣����Ըɴ�ֱ��ɾ���ˡ�

**������**

mysql û�����л��棬��ô�ͻ�������������������Ҫ����������SQL�����������ģ�������Ҳ���Ϊ������

**��һ�����ʷ�����**��һ��SQL����ж���ַ�����ɣ�����Ҫ��ȡ�ؼ��֣�����select�������ѯ�ı�������ֶ����������ѯ�����ȵȡ�������Щ�����󣬾ͻ����ڶ�����

**�ڶ������﷨����**����Ҫ�����ж��������sql�Ƿ���ȷ���Ƿ����mysql���﷨��

�����2��֮��mysql��׼����ʼִ���ˣ��������ִ�У���ôִ������õĽ���أ����ʱ�����Ҫ�Ż����ϳ��ˡ�

**����**

�Ż��������þ�������Ϊ�����ŵ�ִ�з���ȥִ�У���Ȼ��ʱ��Ҳ�������ţ���������������ʱ������ѡ�������������ѯ��ʱ�����ѡ�����˳��ȡ�

**ִ����**

��ѡ����ִ�з�����mysql��׼����ʼִ���ˣ�����ִ��ǰ��У����û���û��Ȩ�ޣ����û��Ȩ�ޣ��ͻ᷵�ش�����Ϣ�������Ȩ�ޣ��ͻ�ȥ��������Ľӿڣ����ؽӿ�ִ�еĽ����

## ����������

### 2.1 ��ѯ���

˵��������ô�࣬��ô����һ��sql��������ִ�е��أ���ʵ���ǵ�sql���Է�Ϊ2�У�һ���Dz�ѯ��һ���Ǹ��£����ӣ����£�ɾ�����������ȷ����²�ѯ��䣬������£�

```
select * from tb_student A where A.age='18' and A.name='����';

```

��������˵�������Ƿ������������ִ�����̣�

* �ȼ�������Ƿ���Ȩ�ޣ����û��Ȩ�ޣ�ֱ�ӷ��ش�����Ϣ�������Ȩ�ޣ���mysql8.0�汾��ǰ�����Ȳ�ѯ���棬������sql���Ϊkey���ڴ��в�ѯ�Ƿ��н���������ֱ�ӻ��棬���û�У�ִ����һ����
* ͨ�����������дʷ���������ȡsql���Ĺؼ�Ԫ�أ�������ȡ�����������Dz�ѯselect����ȡ��Ҫ��ѯ�ı���Ϊtb_student,��Ҫ��ѯ���е��У���ѯ�������������id='1'��Ȼ���ж����sql����Ƿ����﷨���󣬱���ؼ����Ƿ���ȷ�ȵȣ�������û�����ִ����һ����
* �����������Ż�������ȷ��ִ�з����������sql��䣬����������ִ�з�����

a.�Ȳ�ѯѧ����������Ϊ����������ѧ����Ȼ���ж��Ƿ�������18��
b.���ҳ�ѧ��������18���ѧ����Ȼ���ٲ�ѯ����Ϊ����������ѧ����
��ô�Ż��������Լ����Ż��㷨����ѡ��ִ��Ч����õ�һ���������Ż�����Ϊ����ʱ��һ����ã�����ôȷ����ִ�мƻ����׼����ʼִ���ˡ�

* ����Ȩ��У�飬���û��Ȩ�޾ͻ᷵�ش�����Ϣ�������Ȩ�޾ͻ�������ݿ�����ӿڣ����������ִ�н����

### 2.2 �������

���Ͼ���һ����ѯsql��ִ�����̣���ô���������ǿ���һ������������ִ�е��أ�sql������£�

```
update tb_student A set A.age='19' where A.name='����';
```
�������������޸������䣬��ʵ�����ݿ�϶�����������������ֶεģ���ȻҪ�����������˴�ġ���ʵ�����Ҳ�����ϻ�������һ����ѯ�������ߣ�ֻ����ִ�и��µ�ʱ��϶�Ҫ��¼��־������ͻ�������־ģ���ˣ�mysql �Դ�����־ģ��ʽbinlog���鵵��־�������еĴ洢���涼����ʹ�ã����dz��õ�InnoDB���滹�Դ���һ����־ģ��redo log�����Ǿ���InnoDBģʽ����̽���������ִ�����̡��������£�

* �Ȳ�ѯ��������һ�����ݣ�����л��棬Ҳ�ǻ��õ����档
* Ȼ���õ���ѯ����䣬�� age ��Ϊ19��Ȼ���������API�ӿڣ�д����һ�����ݣ�InnoDB��������ݱ������ڴ��У�ͬʱ��¼redo log����ʱredo log����prepare״̬��Ȼ�����ִ������ִ������ˣ���ʱ�����ύ��
* ִ�����յ�֪ͨ���¼binlog��Ȼ���������ӿڣ��ύredo log Ϊ�ύ״̬��
* ������ɡ�

����϶���ͬѧ���ʣ�ΪʲôҪ��������־ģ�飬��һ����־ģ�鲻���������֮ǰmysql��ģʽ�ˣ�MyISAM������û��redo log�ģ���ô����֪�����Dz�֧������ģ����Բ�����˵ֻ��һ����־ģ�鲻���ԣ�ֻ��InnoDB�������ͨ��redo log��֧������ġ���ô���ֻ���ͬѧ�ʣ�����������־ģ�飬���Dz�Ҫ��ô�����в��У�Ϊʲôredo log Ҫ����prepareԤ�ύ״̬�����������÷�֤����˵����ΪʲôҪ��ô����

* **��дredo log ֱ���ύ��Ȼ��д binlog**������д��redo log �󣬻������ˣ�binlog��־û�б�д�룬��ô������������̨������ͨ��redo log�ָ����ݣ��������ʱ��bingog��û�м�¼�����ݣ��������л������ݵ�ʱ�򣬾ͻᶪʧ��һ�����ݣ�ͬʱ����ͬ��Ҳ�ᶪʧ��һ�����ݡ�
* **��дbinlog��Ȼ��дredo log**������д����binlog�������쳣�����ˣ�����û��redo log���������޷��ָ���һ����¼�ģ�����binlog���м�¼����ô������ͬ���ĵ������ͻ�������ݲ�һ�µ������

�������redo log ���׶��ύ�ķ�ʽ�Ͳ�һ���ˣ�д��binglog��Ȼ�����ύredo log�ͻ��ֹ�������������⣬�Ӷ���֤�����ݵ�һ���ԡ���ô�������ˣ���û��һ�����˵�����أ�����redo log ����Ԥ�ύ״̬��binglogҲ�Ѿ�д���ˣ����ʱ�������쳣��������ô���أ�
�����Ҫ������mysql�Ĵ��������ˣ�mysql�Ĵ����������£�

* �ж�redo log �Ƿ�����������ж��������ģ��������ύ��
* ���redo log ֻ��Ԥ�ύ������commit״̬�����ʱ��ͻ�ȥ�ж�binlog�Ƿ�����������������ύ redo log, �������ͻع�����

�����ͽ��������һ���Ե����⡣


## �����ܽ�

* Mysql ��Ҫ��ΪServer��������㣬Server����Ҫ��������������ѯ���桢���������Ż�����ִ������ͬʱ����һ����־ģ�飨binlog���������־ģ������ִ�����涼���Թ��á�
* ������Dz��ʽ�ģ�Ŀǰ��Ҫ������MyISAM,InnoDB,Memory�ȡ�
* sql��ִ�й��̷�Ϊ���࣬һ����ڲ�ѯ�ȹ������£�Ȩ��У��---����ѯ����---��������---���Ż���---��Ȩ��У��---��ִ����---������
* ���ڸ��µ����ִ���������£�������----��Ȩ��У��----��ִ����---������---redo log prepare---��binlog---��redo log commit


## �ġ��ο�

* ��һ�𹹽�Mysql֪ʶ���硷