diff --git a/docs/database/一条sql语句在mysql中如何执行的.md b/docs/database/一条sql语句在mysql中如何执行的.md new file mode 100644 index 00000000..79ba726f --- /dev/null +++ b/docs/database/一条sql语句在mysql中如何执行的.md @@ -0,0 +1,112 @@ + + +![](https://user-gold-cdn.xitu.io/2019/3/21/1699dea772f58967?w=800&h=531&f=jpeg&s=58821) +## + +ʼѧϰmysql֪ʶԼѧ֪ʶ㣬Լƪ»һsqlmysqlеִ̣sqlIJѯ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ʽܹ֧InnoDBMyISAMMemoryȶ洢棬InnoDBе־ģredolog ģ顣 + +InnoDB 5.5.5汾ΪĬ档 + +**** + +Ҫû¼ݿ⣬û֤У˻룬Ȩ޵Ȳû˻ͨᵽȨޱвѯûȨޣ֮Ȩ߼ж϶ǻʱȡȨݣҲ˵ֻҪӲϿʱԱ޸˸ûȨޣûҲDzӰġ + +**ѯ** + +ӽִвѯʱ򣬻Ȳѯ棬MysqlУsqlǷִйKey-ValueʽڴУKeyDzѯԤƣ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 + +Ͼһѯsqḷִôǿһִеأ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 logprepare״̬Ȼִִˣʱύ +* ִյ֪ͨ¼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֪ʶ硷 \ No newline at end of file