MySQL查詢語句之連表查詢和增刪改查語句補充
前言
Hey,大家好,我是碼農(nóng)星期八!
上次怎么大概說了一下or,!=,in/not in between,like,limit,order by,group by。
但是還沒完,咱們接著往下說!
查詢
我們的數(shù)據(jù)是這樣的。
發(fā)現(xiàn)class_id是一個數(shù)字,這是因為我們在設(shè)計時,將學生表和班級表分開設(shè)計的。
但是如果我們偏偏想要查詢這個人是幾班的,怎么辦?
連表查詢
方式一,where連表
語法
- SELECT * from 表1,表2 WHERE 表1.外鍵列=表2.被外鍵列;
- SELECT 表1.列1,表1.列2,表2.列1,... from 表1,表2 WHERE 表1.外鍵列=表2.被外鍵列;
連表顯示所有列
- SELECT * from student,class WHERE student.class_id=class.id;
執(zhí)行結(jié)果
喏,這樣就知道哪個學生是哪個班的了!
連表顯示指定列
- SELECT student.id,student.`name`,class.title from student,class WHERE student.class_id=class.id;
執(zhí)行結(jié)果
方式二,left連表
通過where連表固然簡單,但是缺點明顯。
因為我們的where后面是要跟判斷條件的,使用where進行連表會造成邏輯有些混亂。
在一般連表操作中,使用的也是left進行連表。
語法
- SELECT * from 表1 LEFT JOIN 表2 on 表1.外鍵字段=表2.被外鍵字段;
- SELECT 表1.列1,表1.列2,表2.列1,... from 表1 LEFT JOIN 表2 on 表1.外鍵字段=表2.被外鍵字段;
連表顯示所有列
- SELECT * from student LEFT JOIN class on student.class_id=class.id;
執(zhí)行結(jié)果
選擇指定列查詢
- SELECT student.id,student.`name`,class.title from student LEFT JOIN class on student.class_id=class.id;
執(zhí)行結(jié)果
其實這和where連表是一樣的。
方式三,inner連表
inner和left是差不多的,只不過left是正向連表,inner是反向連表。
就像學生表和課程表。
如果是通過學生表連課程表,屬于正向,用left。
如果是通過課程表連學生表,就屬于反向,用inner。
如果反向連表硬生生用left,會出現(xiàn)一些空值現(xiàn)象。
inner語法同left,只不過是表的前后順序不一樣。
其他操作
上述所有的操作,都屬于查詢操作,基本上入門是可以的,下面咱們來看一下剩下的增,刪,改操作。
增(insert)
單條插入
語法
- INSERT INTO 表(列名1,列名2,...) values(值1,值2,...);
添加一條學生信息
- INSERT into student(name,age,gender,class_id) VALUES("吳彥祖",22,"男",1);
執(zhí)行結(jié)果
表內(nèi)容
多條插入
語法
- INSERT INTO 表(列名1,列名2,...) values(值1,值2,...),(值1,值2,...);
批量添加學生信息
- INSERT INTO student (NAME, age, gender, class_id)
- VALUES
- ("范冰冰", 18, "女", 2),
- ("成龍", 24, "男", 3);
執(zhí)行結(jié)果
表內(nèi)容
改(update)
語法
- UPDATE <表> set 列 = 值 where <條件>;
將李四的年齡修改成88歲
- UPDATE student set age = 88 where name = "張三"
執(zhí)行結(jié)果
刪除(delete)
語法
- delete from <表名>
- delete from <表名> where <條件>
刪除張三
- DELETE from student where name="張三"
執(zhí)行結(jié)果
總結(jié)
這章有點像收尾部分,補充了連表查詢,后續(xù)又補充了Mysql的增刪改查。
連表查詢要區(qū)分一下left和inner的區(qū)別,一個是正向連,一個是反向連。
插入數(shù)據(jù)可以插入單條數(shù)據(jù)和多條數(shù)據(jù),多跟參數(shù)即可。