前言
Hey,大家好,我是碼農星期八!
上次怎麼大概說了一下or
,!=
,in/not in
between
,like
,limit
,order by
,group by
。
但是還沒完,咱們接着往下說!
查詢
我們的數據是這樣的。
發現class_id
是一個數字,這是因爲我們在設計時,將學生表和班級表分開設計的。
但是如果我們偏偏想要查詢這個人是幾班的,怎麼辦?
連表查詢
方式一,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;
執行結果
喏,這樣就知道哪個學生是哪個班的了!
連表顯示指定列
SELECT student.id,student.`name`,class.title from student,class WHERE student.class_id=class.id;
執行結果
方式二,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;
執行結果
選擇指定列查詢
SELECT student.id,student.`name`,class.title from student LEFT JOIN class on student.class_id=class.id;
執行結果
其實這和where
連表是一樣的。
方式三,inner連表
inner
和left
是差不多的,只不過left
是正向連表,inner
是反向連表。
就像學生表和課程表。
如果是通過學生表連課程表,屬於正向,用left
。
如果是通過課程表連學生表,就屬於反向,用inner
。
如果反向連表硬生生用left
,會出現一些空值現象。
inner
語法同left
,只不過是表的前後順序不一樣。
其他操作
上述所有的操作,都屬於查詢操作,基本上入門是可以的,下面咱們來看一下剩下的增,刪,改操作。
增(insert)
單條插入
語法
INSERT INTO 表(列名1,列名2,...) values(值1,值2,...);
添加一條學生信息
INSERT into student(name,age,gender,class_id) VALUES("吳彥祖",22,"男",1);
執行結果
表內容
多條插入
語法
INSERT INTO 表(列名1,列名2,...) values(值1,值2,...),(值1,值2,...);
批量添加學生信息
INSERT INTO student (NAME, age, gender, class_id)
VALUES
("范冰冰", 18, "女", 2),
("成龍", 24, "男", 3);
執行結果
表內容
改(update)
語法
UPDATE <表> set 列 = 值 where <條件>;
將李四的年齡修改成88歲
UPDATE student set age = 88 where name = "張三"
執行結果
刪除(delete)
語法
delete from <表名>
delete from <表名> where <條件>
刪除張三
DELETE from student where name="張三"
執行結果
總結
這章有點像收尾部分,補充了連表查詢,後續又補充了Mysql的增刪改查。
連表查詢要區分一下left
和inner
的區別,一個是正向連,一個是反向連。
插入數據可以插入單條數據和多條數據,多跟參數即可。
如果在操作過程中有任何問題,記得下面留言,我們看到會第一時間解決問題。
越努力,越幸運。
我是碼農星期八,如果覺得還不錯,記得動手點贊一下哈。
感謝你的觀看。