diff --git a/docs/database/一条sql语句在mysql中如何执行的.md b/docs/database/一条sql语句在mysql中如何执行的.md index 79ba726f..0b8048ad 100644 --- a/docs/database/一条sql语句在mysql中如何执行的.md +++ b/docs/database/一条sql语句在mysql中如何执行的.md @@ -1,112 +1,133 @@ -![](https://user-gold-cdn.xitu.io/2019/3/21/1699dea772f58967?w=800&h=531&f=jpeg&s=58821) -## -ʼѧϰmysql֪ʶԼѧ֪ʶ㣬Լƪ»һsqlmysqlеִ̣sqlIJѯmysqlڲôתsqlĸôɵġ -## һmysqlܹ +ƪ»һ sql MySQL еִ̣ sql IJѯ MySQL ڲôתsql ĸôɵġ -mysqlһҪܹͼ +ڷ֮ǰһȴ㿴 MySQL Ļܹ֪ MySQL ЩѾЩʲô԰ͽЩ⡣ +## һ MySQL ܹ + +### 1.1 MySQL ܹ + +ͼ MySQL һҪܹͼͼԺĿû SQL MySQL ڲִеġ + +ȼ򵥽һͼ漰һЩĻðͼ 1.2 лϸܵЩá + +- **** ֤Ȩ(¼ MySQL ʱ) +- **ѯ:** ִвѯʱ򣬻Ȳѯ棨MySQL 8.0 汾ƳΪ̫ܲʵã +- **:** ûлĻSQL ͻᾭ˵˾Ҫȿ SQL Ҫټ SQL ﷨Ƿȷ +- **Ż** MySQL ΪŵķȥִС +- **ִ:** ִ䣬ȻӴ洢淵ݡ ![](https://user-gold-cdn.xitu.io/2019/3/23/169a8bc60a083849?w=950&h=1062&f=jpeg&s=38189) -mysqlҪΪServerʹ洢 +˵ MySQL ҪΪ Server ʹ洢㣺 -**Server**Ҫѯ桢Żִȣп洢Ĺܶһʵ֣洢̡ͼȣһͨõ־ģ binglog־ģ顣 +- **Server **Ҫѯ桢Żִȣп洢Ĺܶһʵ֣洢̡ͼȣһͨõ־ģ binglog ־ģ顣 +- **洢** ҪݵĴ洢Ͷȡÿ滻IJʽܹ֧ InnoDBMyISAMMemory ȶ洢棬 InnoDB е־ģ redolog ģ顣**õĴ洢 InnoDB MySQL 5.5.5 汾ʼͱĬϴ洢ˡ** -**洢** ҪݵĴ洢Ͷȡÿ滻IJʽܹ֧InnoDBMyISAMMemoryȶ洢棬InnoDBе־ģredolog ģ顣 +### 1.2 Server -InnoDB 5.5.5汾ΪĬ档 +#### 1) -**** +Ҫ֤ȨصĹأͺñһܸߵһ Ҫû¼ݿ⣬û֤У˻룬Ȩ޵Ȳû˻ͨᵽȨޱвѯûȨޣ֮Ȩ߼ж϶ǻʱȡȨݣҲ˵ֻҪӲϿʱԱ޸˸ûȨޣûҲDzӰġ -**ѯ** +#### 2) ѯ(MySQL 8.0 汾Ƴ) -ӽִвѯʱ򣬻Ȳѯ棬MysqlУsqlǷִйKey-ValueʽڴУKeyDzѯԤƣValueǽkeyУͻֱӷظͻˣûУͻִкIJɺҲѽһεáȻִлѯʱǻУûȨޣǷиñIJѯ +ѯҪִе SELECT ԼĽ -Mysql ѯʹû棬Ϊھµ˵Чʱ̫ˣЧãڲµ˵ʹû滹ǿԵģMysql 8.0 汾ɾ˻ĹܣٷҲΪùʵʵӦóȽ٣Ըɴֱɾˡ +ӽִвѯʱ򣬻Ȳѯ棬MySQL У sql Ƿִй Key-Value ʽڴУKey DzѯԤƣValue ǽ key УͻֱӷظͻˣûУͻִкIJɺҲѽһεáȻִлѯʱǻУûȨޣǷиñIJѯ -**** +MySQL ѯʹû棬ΪѯʧЧʵҵ񳡾пܻdzƵһµĻϵеIJѯ涼ᱻաڲµ˵ʹû滹ǿԵġ -mysql ûл棬ôͻҪSQLģҲΪ +ԣһڴǶDzƼȥʹòѯġ -**һʷ**һSQLжַɣҪȡؼ֣selectѯıֶѯȵȡЩ󣬾ͻڶ +MySQL 8.0 汾ɾ˻ĹܣٷҲΪùʵʵӦóȽ٣Ըɴֱɾˡ -**ڶ﷨**ҪжsqlǷȷǷmysql﷨ +#### 3) -2֮mysql׼ʼִˣִУôִõĽأʱҪŻϳˡ +MySQL ûл棬ôͻҪ SQL ģҲΪ -**Ż** +**һʷ**һ SQL жַɣҪȡؼ֣ selectѯıֶѯȵȡЩ󣬾ͻڶ -ŻþΪŵִзȥִУȻʱҲţʱѡѯʱѡ˳ȡ +**ڶ﷨**Ҫж sql ǷȷǷ MySQL ﷨ -**ִ** + 2 ֮MySQL ׼ʼִˣִУôִõĽأʱҪŻϳˡ -ѡִзmysql׼ʼִˣִǰУûûȨޣûȨޣͻ᷵شϢȨޣͻȥĽӿڣؽӿִеĽ +#### 4) Ż -## +ŻþΪŵִзȥִУʱҲţƪ漰ⲿ֪ʶ뽲⣩ʱѡѯʱѡ˳ȡ + +˵Ż֮˵ִоѾ + +#### 5) ִ + +ѡִзMySQL ׼ʼִˣִǰУûûȨޣûȨޣͻ᷵شϢȨޣͻȥĽӿڣؽӿִеĽ + +## ### 2.1 ѯ -˵ô࣬ôһsqlִеأʵǵsqlԷΪ2УһDzѯһǸ£ӣ£ɾȷ²ѯ䣬£ - -``` -select * from tb_student A where A.age='18' and A.name=''; +˵ô࣬ôһ sql ִеأʵǵ sql ԷΪ 2 УһDzѯһǸ£ӣ£ɾȷ²ѯ䣬£ +```sql +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ѧȻٲѯΪѧ +* ȼǷȨޣûȨޣֱӷشϢȨޣ MySQL8.0 汾ǰȲѯ棬 sql Ϊ key ڴвѯǷнֱӻ棬ûУִһ +* ͨдʷȡ sql ĹؼԪأȡDzѯ selectȡҪѯıΪ tb_student,ҪѯеУѯ id='1'Ȼж sql Ƿ﷨󣬱ؼǷȷȵȣûִһ +* Żȷִз sql 䣬ִз + + a.ȲѯѧΪѧȻжǷ 18 + b.ҳѧ 18 ѧȻٲѯΪѧ ôŻԼŻ㷨ѡִЧõһŻΪʱһãôȷִмƻ׼ʼִˡ * ȨУ飬ûȨ޾ͻ᷵شϢȨ޾ͻݿӿڣִн ### 2.2 -Ͼһѯsqḷִôǿһִеأsql£ +Ͼһѯ sql ִ̣ôǿһִеأsql £ ``` -update tb_student A set A.age='19' where A.name=''; +update tb_student A set A.age='19' where A.name=' '; ``` -޸䣬ʵݿ϶ֶεģȻҪ˴ġʵҲϻһѯߣִֻиµʱ϶Ҫ¼־ͻ־ģˣmysql Դ־ģʽbinlog鵵־еĴ洢涼ʹãdzõInnoDB滹Դһ־ģredo logǾInnoDBģʽִ̡̽£ +޸䣬ʵݿ϶ֶεģȻҪ˴ġʵҲϻһѯߣִֻиµʱ϶Ҫ¼־ͻ־ģˣMySQL Դ־ģʽ **binlog鵵־** еĴ洢涼ʹãdzõ InnoDB 滹Դһ־ģ **redo log־**Ǿ InnoDB ģʽִ̡̽£ * Ȳѯһݣл棬Ҳǻõ档 -* Ȼõѯ䣬 age Ϊ19ȻAPIӿڣдһݣInnoDBݱڴУͬʱ¼redo logʱredo logprepare״̬Ȼִִˣʱύ -* ִյ֪ͨ¼binlogȻӿڣύredo log Ϊύ״̬ +* Ȼõѯ䣬 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м¼ôͬĵͻݲһµ +Ϊʼ MySQL û InnoDB ( InnoDB ˾Բʽ MySQL ) MySQL Դ MyISAM֪ redo log InnoDB еģ洢涼ûУ͵»û crash-safe (crash-safe ʹݿⷢ쳣֮ǰύļ¼ᶪʧ)binlog ־ֻ鵵 -redo log ׶ύķʽͲһˣдbinglogȻύredo logͻֹ⣬Ӷ֤ݵһԡôˣûһ˵أredo log Ԥύ״̬binglogҲѾдˣʱ쳣ôأ -ҪmysqlĴˣmysqlĴ£ +˵ֻһ־ģ鲻ԣֻ InnoDB ͨ redo log ֧ġôֻͬѧʣ־ģ飬DzҪôвУΪʲô redo log Ҫ prepare Ԥύ״̬÷֤˵ΪʲôҪô -* жredo log Ƿжģύ -* redo log ֻԤύcommit״̬ʱͻȥжbinlogǷύ redo log, ͻع +* **д 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ִй̷Ϊ࣬һڲѯȹ£ȨУ---ѯ------Ż---ȨУ---ִ--- +* MySQL ҪΪ Server 㣬Server Ҫѯ桢Żִͬʱһ־ģ飨binlog־ģִ涼Թ,redolog ֻ InnoDB С +* DzʽģĿǰҪMyISAM,InnoDB,Memory ȡ +* SQL ִй̷Ϊ࣬һڲѯȹ£ȨУ---ѯ------Ż---ȨУ---ִ--- * ڸµִ£----ȨУ----ִ------redo log prepare---binlog---redo log commit +## ο -## ġο - -* һ𹹽Mysql֪ʶ硷 \ No newline at end of file +* һ𹹽 MySQL ֪ʶ硷 +* MySQL 5.6οֲ: \ No newline at end of file