sqlite聯表查詢

本文將從SQLite創建表單開始直到多表查詢進行介紹,以供新手練習使用,若對SQL有一定了解、只需瞭解多表查詢的童鞋可從中間分割線開始閱讀,分割線後依次介紹了最基礎的兩張表聯合查詢和三張表聯合查詢,多表查詢可參考三表聯合查詢。

 

首先創建一個教師表和一個學生表

教師表.png

 

學生表.png

 

對應教師表參數依次爲 教師姓名、教師工號、教學課程、課程編號
對應學生表參數依次爲 學生姓名、學生學號、課程編號、課程考試分數

 

創建教師表

CREATE TABLE TEACHER(ID INTEGER PRIMARY KEY AUTOINCREMENT,T_name TEXT,T_id INTEGER,COURSE TEXT,C_id TEXT)

添加教師數據

INSERT INTO TEACHER(T_name,T_id,COURSE,C_id) VALUES('趙老師',1000,'語文',1100); INSERT INTO TEACHER(T_name,T_id,COURSE,C_id) VALUES('錢老師',1001,'數學',1101); INSERT INTO TEACHER(T_name,T_id,COURSE,C_id) VALUES('孫老師',1002,'英語',1102);

創建學生表

CREATE TABLE STUDENT(ID INTEGER PRIMARY KEY AUTOINCREMENT,S_name,S_id INTEGER,C_id INTEGER,SCORE INTEGER)

添加學生數據

INSERT INTO STUDENT(S_name,S_id,C_id,SCORE) VALUES('張三',2017000,1101,75); INSERT INTO STUDENT(S_name,S_id,C_id,SCORE) VALUES('李四',2017001,1102,70); INSERT INTO STUDENT(S_name,S_id,C_id,SCORE) VALUES('王五',2017002,1101,90); INSERT INTO STUDENT(S_name,S_id,C_id,SCORE) VALUES('趙六',2017003,1100,58); INSERT INTO STUDENT(S_name,S_id,C_id,SCORE) VALUES('小明',2017004,1100,79); INSERT INTO STUDENT(S_name,S_id,C_id,SCORE) VALUES('小紅',2017005,1101,55);

開始多表查詢

INNER JOIN 關鍵字

(注:AS 關鍵字起到在SQL語句中創建對象的作用)

  1. 查詢學生都選了什麼課?(根據TEACHER表和STUDENT表中的共同)
    SELECT s.S_name,t.COURSE FROM STUDENT AS s INNER JOIN TEACHER AS t WHERE s.C_id = t.C_id
    查詢結果:

    學生選課.png

  2. 查詢每位老師所對的及格學生、學科和成績;及格情況查詢:

SELECT t.T_name,t.COURSE,s.S_name,s.SCORE FROM TEACHER AS t INNER JOIN STUDENT AS s ON t.C_id = s.C_id WHERE s.SCORE > 60;
查詢結果

及格情況.png

左外連接查詢介紹

LEFT JOIN關鍵字(也可寫作LEFT OUTER JOIN)

1.向教師表添加一條數據(該教師課程沒有學生選擇)
INSERT INTO TEACHER(T_name,T_id,COURSE,C_id) VALUES('李老師',1003,'挖掘機原理',1110)
修改後教師表如圖

教師表+.png

 

  • 首先我們以教師爲左側表查詢教師及其對應的學生 [李老師《挖掘機原理課》沒有學生,對應右側爲空(null)]
    SELECT t.T_name,t.COURSE,s.S_name,s.SCORE FROM TEACHER AS t LEFT JOIN STUDENT AS s ON t.C_id = s.C_id
    查詢結果

    左連接查詢.png

  • 因爲SQLite不支持右外連接查詢,可將學生表作爲左側表,實現左右互換(因李老師的《挖掘機原理》沒有對應的左側學生表,所以李老師的課程未進行查詢,應不顯示也不爲空)
    SELECT s.S_name,s.SCORE, t.T_name,t.COURSE FROM STUDENT AS s LEFT JOIN TEACHER AS t ON t.C_id = s.C_id
    查詢結果

    學生爲左側表查詢.png

 

原文鏈接:https://www.jianshu.com/p/053488e520e7

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章