資料庫系統理論(七)

卡式積(Cartesian Product)

注意!CROSS JOIN 會有問題

改善的方法

作法
1.透過 SELECT 指令 WHERE 部分的等式,
及對等合併(Equi-Join)。

From A,B
Where (A.c=B.c)

2.透過 SELECT 指令 FROM 部分的 INNER JOIN。
即自然合併(Natural Join);又稱為內部合併
(Inner Join)。

From A INNER JOIN B
ON A.c=B.c
範例
1.第一種做法(Equi-Join最常用)

Select 學號,姓名,課程表,課號,課程名稱,學分數
From 學生表,課程表
Where 學生表.課號=課程表.課號

2.第二種做法:INNER JOIN

SELECT 學號,姓名,課程表,課號,課程名稱,學分數
FROM 學生表 INNER JOIN 課程表
ON 學生表.課表=課程表.課表
範例
SELECT A.學號,姓名,課號,成績
(加入 投影使用者 輸出的欄位名稱)

FROM 學生資料表 AS A, 選課資料表 AS B

WHERE A.學號=B.學號
(加入 內部合併 Join)

And B.成績>=70
(加入 限制條件 成績大於或等於70分者)

GROUP BY A.學號,姓名
(使用群組化及聚合函數)

HAVING AVG(成績)>=90
(在聚合函數後,再進行篩選條件)

ORDER BY AVG(成績) ASC
(在聚合函數結果,再來進行排序-由低到高)

左外部合併

右外部合併

資料庫系統理論(六)

資料操作語言(Data Manipulation Language  DML
DML四種基本指令
1.INSERT(新增)
2.UPDATE(修改)
3.DELETE(刪除)
4.SELECT(查詢)

INSERT(新增紀錄)指令

定義:只新增一筆紀錄到新的資料表內。
格式:INSERT INTO 資料表名稱<欄位串列>
VALUES(<欄位值串列>|<SELECT指令>)
範例一
INSERT INTO 學生表 VALUES('S001','一心','111111','前鎮區','男');

範例二
INSERT INTO 學生表(學號,姓名,地址) VALUES ('S002','二聖','苓雅區');

UPDATE  (修改紀錄) 指令

定義:指修改一個資料表中某些值組(紀錄)之屬性值。
格式:UPDATE 資料表名稱
SET{<欄位名稱1>=<欄位值>,....,<欄位名稱N>=<欄位值N>}
[WHERE <條件子句>]
範例
UPDATE 學生表 SET 電話='222222' WHERE 電話 IS NULL
And 學號 ='S002' ;

DELETE FROM 資料表名稱

定義:把合乎條件的值組(紀錄),從資料表中刪除
格式:DELETE FROM 資料表名稱
[WHERE <條件式>]
範例: 請將「學生表OLD」中的「十全」學生記錄刪除。
DELETE FROM '學生表OLD'
WHERE 姓名='十全' ;

SELECT 指令簡介


使用「聚合函數」

COUNT 紀錄筆數
SELECT COUNT(*) AS 全班人數 FROM 學生表;
SELECT COUNT(成績) AS 有成績總筆數 FROM 學生表;

AVG 平均數
SELECT AVG(成績) AS 資料庫平均成績 FROM 選課表
WHERE 課號 ='C005';

SUM 總和
SELECT SUM(成績) AS 資料庫總成績 FROM 選課表
WHERE 課號 ='C005';

MAX 最大值
MIN 最小值

SQL的執行順序

資料庫系統理論(五)

SQL提供三種語言
1.資料定義語言(Data Definition Language)DDL。
2.資料操作語言(Data Manipulation Language)DML。
3.資料控制語言(Data Control Language)DCL。

Create Database 基本語法  (建立)

語法:  Create Database[IF NOT EXIXTS]
範例: Create Database 選課系統料庫

Alter Database 基本語法  (修改)

語法: Alter Database 資料庫名稱
[CHARACTER SET 字元集名稱]
[COLLATE Collation 名稱]
範例: Alter Database 選課系統料庫
CHARACTER SET utf8

DROP Database[IF EXISTS]資料庫名稱  (刪除)

語法:  DROP Database 資料庫名稱
範例: DROP Database 選課系統料庫

CREATE TABLE  (建立資料表)

ALTER TABLE (修改資料表)

DROP TABLE (刪除資料表)

格式:  DROP TABLE 資料表名稱
範例: DROP TABLE 學生表