前言大家好,我是周五码农!上次我讲到or,!=,in/notinbetween,比如,limit,orderby,groupby。但这还没有结束,让我们继续吧!像这样查询我们的数据。发现class_id是一个数字,这是因为我们在设计的时候把student表和class表分开设计了。但是如果我们想查询这个人属于哪个班级呢?我们应该做什么?链接表的查询方式是一种,where链接语法SELECT*fromtable1,table2WHEREtable1.Foreignkeycolumn=table2.Byforeignkeycolumn;SELECTtable1.column1,table1.column2,table2.column1,...fromtable1,table2WHEREtable1.foreignkeycolumn=table2.columnbyforeignkey;链接表以显示所有列SELECT*fromstudent,classWHEREstudent.class_id=class.id;执行结果,让你知道哪个学生属于哪个班级!链接表显示指定列SELECTstudent.id,student.`name`,class.titlefromstudent,classWHEREstudent.class_id=class。ID;执行结果方法2,通过where从左到表连接表简单,但是缺点很明显。因为我们的where后面是判断条件,所以使用where来连接表会造成逻辑上的一些混乱。在一般的表连接操作中,left也用于表连接。语法SELECT*fromtable1LEFTJOINtable2ontable1.foreignkeyfield=table2.foreignkeyfield;SELECTtable1.column1,table1.column2,table2.column1,...fromtable1LEFTJOINtable2onTable1.Foreignkeyfield=table2.Foreignkeyfield;链接表以显示所有列SELECT*fromstudentLEFTJOINclassonstudent.class_id=class.id;执行结果选择指定列查询SELECTstudent.id,student.`name`,class.titlefromstudentLEFTJOINclassonstudent。class_id=class.id;执行结果其实和where表连接是一样的。方法三,内表和left类似,只是left是正向表,inner是反向表。比如学生表和班级表。如果是通过student表连接到curriculum,则属于正方向,用left。如果是通过curriculum表连接到student表,则相反,使用inner。如果在反向连接表中硬生生使用left,会出现一些空值。inner的语法与left相同,只是表的顺序不同。其他操作以上所有操作都是查询操作。基本上是可以上手的。我们再看看剩下的增删改查操作。添加(插入)单插入语法INSERTINTO表(列名1,列名2,...)值(值1,值2,...);添加一个学生信息INSERTIntostudent(name,age,gender,class_id)VALUES("吴彦祖",22,"男",1);执行结果表内容多次插入语法INSERTINTOtable(列名1,列名2,...)values(值1,值2,...),(值1,值2,...);批量添加学生信息INSERTINTOStudent(NAME,age,gender,class_id)VALUES("范冰冰",18,"女",2),("成龙",24,"男",3);执行结果表内容更改(更新)语法UPDATE
