SQL教程

yytkkp發表於2020-11-14

關係模型

id	class_id	name	gender	score
1 	 1	         小明	 M	     90
2	 1	         小紅	 F	     95

對於關係表,有個很重要的約束,就是任意兩條記錄不能重複。不能重複不是指兩條記錄不完全相同,而是指能夠通過某個欄位唯一區分出不同的記錄,這個欄位被稱為主鍵
當我們用主鍵唯一標識記錄時,我們就可以在students表中確定任意一個學生的記錄:

id	name	other columns...
1	小明 	 ...
2	小紅    	 ...

由於一個班級可以有多個學生,在關係模型中,這兩個表的關係可以稱為“一對多”,即一個classes的記錄可以對應多個students表的記錄。

id	class_id	name	other columns...
1	  1	        小明	           ...
2	  1	        小紅	           ...
5	  2        	小白	           ...

在students表中,通過class_id的欄位,可以把資料與另一張表關聯起來,這種列稱為外來鍵

索引是關聯式資料庫中對某一列或多個列的值進行預排序的資料結構。通過使用索引,可以讓資料庫系統不必掃描整個表,而是直接定位到符合條件的記錄,這樣就大大加快了查詢速度。

查詢資料

基本查詢

使用SELECT * FROM students時,SELECT是關鍵字,表示將要執行一個查詢,*表示“所有列”,FROM表示將要從哪個表查詢
該SQL將查詢出students表的所有資料。注意:查詢結果也是一個二維表,它包含列名和每一行的資料

條件查詢
SELECT語句可以通過WHERE條件來設定查詢條件,查詢結果是滿足查詢條件的記錄。例如,要指定條件“分數在80分或以上的學生”,寫成WHERE條件就是SELECT * FROM students WHERE score >= 80。
其中,WHERE關鍵字後面的score >= 80就是條件。score是列名,該列儲存了學生的成績,因此,score >= 80就篩選出了指定條件的記錄

SELECT * FROM <表名> WHERE <條件表示式>

投影查詢
如果我們只希望返回某些列的資料,而不是所有列的資料,我們可以用SELECT 列1, 列2, 列3 FROM …,讓結果集僅包含指定列。這種操作稱為投影查詢。
students表中返回id、score和name這三列:
SELECT id, score, name FROM students;

使用SELECT 列1, 列2, 列3 FROM …時,還可以給每一列起個別名,這樣,結果集的列名就可以與原表的列名不同。它的語法是SELECT 列1 別名1, 列2 別名2, 列3 別名3 FROM …。

例如,以下SELECT語句將列名score重新命名為points,而id和name列名保持不變:
SELECT id, score points, name FROM students;

投影查詢同樣可以接WHERE條件,實現複雜的查詢:
SELECT id, score points, name FROM students WHERE gender = ‘M’;

(待補充)

相關文章