課程名稱:資料庫管理系統(472105)
指導老師:蔡佳麟
學生:尹士瑋
學號: 40207203
組別:第二組
週次:第10-14週 [回首頁]
Part I指定作業:
作業題目 |
4.試說明資料表有哪些合併方式? |
5.試說明檢視表的意義為何? |
6.試比較Access/MySQL/MS-SQL Server的異同。 |
回答內容 |
根據[1]:「SQL合併查詢是將儲存在不同資料表的欄位資料取出,合併成所需的資訊,常用的合併查詢,依查詢範圍從大到小,如下所示:1.交叉合併查詢2.θ合併3.EquiJoins合併查詢4.自然合併查詢 5.外部合併查詢 1.交叉合併查詢: SQL的CROSS JOIN交叉合併查詢指令就是關聯式代數的卡笛生乘積運算(Cartesian Product),查詢結果的記錄數是兩個資料表記錄數的乘積。 SQL查詢範例: 從學生Students資料表取出sid、name欄位和Classes選課資料表的課程編號c_no和講師編號eid欄位執行交叉合併查詢,如下所示: SELECT Students.sid, Students.name, Classes.c_no, Classes.eid FROM Students CROSS JOIN Classes 2. θ合併 θ合併(Theta Join)查詢的SQL合併條件是使用「=」、「>」、「<」、「>=」、「<=」或「<>」比較運算子來合併2個資料表。 SQL查詢範例: 在Classes資料表找出同一位講師教授的同一門課程中,有哪些學生的成績比您高: SELECT c1.c_no, c1.eid, c1.sid AS C1_SID, c1.score AS C1_SCORE, c2.sid AS C2_SID, c2.score AS C2_SCORE FROM Classes c1, Classes c2 WHERE c1.c_no = c2. c_no AND c1.eid = c2.eid AND c1.score > c2.score 3. EquiJoins合併查詢 EquiJoins合併查詢通常是使用在兩個資料表主鍵和外來鍵擁有關聯性的資料查詢,只取出兩個資料表都符合條件的記錄,其基本語法如下所示: SELECT table1.column1, table2.column2 [, table3.column3] FROM table1, table2.[, table3 ] WHERE table1.column = tabel2.column [ and table1.column = table3.column ] EquiJoins合併查詢WHERE子句的條件是使用比較運算子’=’等號合併兩個資料表。 SQL查詢範例: 在Students和Classes資料表查詢學生的詳細資料,和每位學生詳細的選課資料: SELECT
* FROM Students, Classes WHERE
Students.sid = Classes.sid SQL查詢範例: 在Courses和Classes資料表查詢每一門課程的詳細資料和其上課的教室編號: SELECT
Courses.*, Classes.room FROM
Courses, Classes WHERE
Courses.c_no = Classes.c_no 4.自然合併查詢 關聯式代數的自然合併(Natural Join)查詢就是SQL語言的INNER JOIN內部合併查詢,如下圖所示: 自然合併查詢-說明 如果關聯式資料庫管理系統的SQL語言沒有支援內部合併查詢指令INNER JOIN,其實,我們只需稍微修改EquiJoins合併查詢的SQL指令,一樣可以顯示自然合併查詢的結果。 INNER
JOIN和EquiJoins的差異在於不會重複顯式合併的欄位 SQL查詢範例: 在Students和Classes兩個資料表查詢學生和選課的詳細資料,如下所示: SELECT
Students.*, Classes.eid, Classes.c_no,Classes.time,Classes.room
FROM
Students, Classes WHERE
Students.sid = Classes.sid 5. 外部合併查詢 SQL語言的OUTER JOIN外部合併查詢指令可以取回指定資料表的所有記錄,它和INNER JOIN內部合併查詢的差異在於查詢結果並不是兩個資料表都一定存在的記錄,一共分成三種OUTER JOIN指令,如下所示: (1)左外部合併(LEFT JOIN) (2)右外部合併(RIGHT JOIN) (3)完全外部合併(FULL JOIN) LEFT JOIN左外部合併查詢 左外部合併是在合併的兩個資料表中,取回左邊資料表內的所有記錄,不論是否在右邊資料表存在合併欄位值。 SQL查詢範例: Students學生資料表與Classes資料表執行左外部合併查詢,合併欄位是學號sid,可以顯示Students資料表的所有記錄,如下所示: SELECT Students.sid, Students.name, Classes.c_no, Classes.score FROM Students LEFT JOIN Classes ON Students.sid = Classes.sid 結果 RIGHT JOIN右外部合併查詢 右外部合併可以取回右邊資料表內的所有記錄,不論是否在左邊資料表存在合併欄位值。 SQL查詢範例: Classes開課資料表與Students學生資料表執行右外部合併查詢,合併欄位是學號sid,可以顯示Students資料表的所有記錄,如下所示: SELECT Classes.c_no, Classes.score, Students.sid, Students.name FROM Classes RIGHT JOIN Students ON Classes.sid = Students.sid 結果 SQL查詢範例: 使用多種JOIN指令合併Students、Courses和Classes資料表,如下所示: SELECT Students.sid, Students.name, Courses.*, Classes.eid FROM Courses RIGHT JOIN (Students INNER JOIN Classes ON Students.sid = Classes.sid) ON Classes.c_no = Courses.c_no 結果 FULL JOIN完全外部合併查詢 不同於LEFT JOIN左外部合併查詢和RIGHT JOIN右外部合併查詢,FULL JOIN完全外部合併可以取回左、右邊資料表內的所有記錄。 SQL查詢範例: Students學生資料表與Classes資料表執行完全外部合併查詢,合併欄位是學號sid,如下所示: SELECT Students.sid, Students.name, Classes.c_no, Classes.score FROM Students FULL JOIN Classes ON Students.sid = Classes.sid 結果
|
根據[2]:「檢視表(Views)也稱為虛擬資料表(Virtual Tables),因為Views所呈現出來的結果和Tables非常類似,最大的差異在於Tables是真正儲存資料的地方,而Views |
根據[3]:「 Access:是一種桌面資料庫,適合資料量較少的應用,存儲資料庫(.mdb)檔大小不超過2G位元組,資料庫中的物件個數不超過32,768。不過,由於資料庫可以包括其他檔中的連結表,所以它的大小實際上只受可用存儲空間大小的限制。處理非超大量資料庫是很好的選擇,效率也很高。但是,當您的網站訪問時遇到下面的情況之一,您就應該考慮使用SQL資料庫了: MySQL / SQL Server / Oracle / MS Access的sql語句聯繫區別總結 各資料庫的sql語句差別 1.取前幾條數據 SQL Server / Oracle / MS Access建表約束 如果需要命名 UNIQUE 約束,以及為多個列定義 UNIQUE 約束,請使用下面的 SQL 語法: SQL Server / Oracle / MS Access: SQL PRIMARY KEY Constraint on ALTER TABLE 如果需要命名 PRIMARY KEY 約束,以及為多個列定義 PRIMARY KEY 約束,請使用下面的 SQL 語法: 7.如果需要命名 FOREIGN KEY 約束,以及為多個列定義 FOREIGN KEY 約束,請使用下面的 SQL 語法: MySQL / SQL Server / Oracle / MS Access: 8.SQL FOREIGN KEY Constraint on ALTER TABLE MySQL / SQL Server / Oracle / MS Access: MySQL / SQL Server / Oracle / MS Access: MySQL: SQL/MYSQL/MSSQL/Access 的區別,比較 SQL是專為資料庫而建立的操作命令集,是一種功能齊全的資料庫語言。而MySQL是資料庫管理系統(DBMS)。 MSSQL和ACCESS都是Microsoft公司開發的可以用於ASP程式中的網站資料庫,不過MSSQL比ACCESS功能強大,大型網站建議採用MSSQL資料庫. 什麼是My SQL資料庫? 資料庫與使用者端之間的介面程式可以使用CGI進行通信。(CGI全稱是“公共閘道介面”(Common Gateway Interface),HTTP伺服器與你的或其它機器上的程式進行“交談”的一種工具,其程式須運行在網路服務器上。)在物理上,CGI是一段程式,運行在Server上,提供同用戶端 Html頁面的介面. msSQL資料庫和myqsl資料庫有什麼不同? MsSql是微軟的產品一貫傻大笨粗,性能也強大,圖形介面使用很方便,象個傻瓜相機一樣,不過,也太大了,很多不實用的東西 。 SQL/MYSQL/MSSQL/Access區別比較 Access是一種桌面資料庫,只適合資料量少的應用,在處理少量資料和單機訪問的資料庫時是很好的,效率也很高。但是它的同時訪問用戶端不能多於4個。access資料庫有一定的極限,如果資料達到100M左右,很容易造成伺服器iis假死,或者消耗掉伺服器的記憶體導致伺服器崩潰。 |
參考來源 |
2.蕃薯藤 |
3.360doc |
Part II 10-14週學習心得彙整:
週別 |
10 |
11 |
12 |
13 |
14 |
|
截圖 |
Ex10.1.1.複習-附加及新增資料庫 Ex10.1.2.以SQL Server驗證登入 Ex10.1.2.資料表匯入到資料庫 Ex10.1.3.設定主索引鍵及關聯 Ex10.2.1.N01供應商-交叉合併 Ex10.2.2.N01供應商-內部合併 |
Ex11.1.1.複習-附加及新增資料庫 Ex11.1.4.設定主索引鍵及關聯 Ex10.2.1.N01供應商-交叉合併 Ex10.2.2.N01供應商-內部合併 Ex11.3.1.設定ODBC |
Ex12-1.使用ODBC-合併列印 Ex.12-2.校內資訊模擬 |
Ex13-1.樞紐分析 Ex13-2建置資料表(本系104日四技) Ex13-3 Select指令 |
Ex.14.3.1.用SQL指令,顯示昨天,今天與明天的日期 |
|
課後心得 |
看完有關跟資料庫管理系統的文章以後,我覺得那位在網路上介紹自己在從事資料庫管理師(DBA)助理他每天的工作主要就是資料庫的管理維護,維護有關顧客的資料、企業文件、系統程式等,要是疏忽的話,就會造成企業的損害,重則可能會影響公司營運等,這也讓我覺得他非常的不簡單,因為從事資料庫管理師(DBA)你必須是從電算機學門、工程學門如電機、電子、資工、資管系等相關科系畢業才有可能從事資料庫管理師(DBA)這一行類的工作,而且還有一個必須先決條件就是懂得資料庫的操作和應用,因為這是要在從事資料庫管理師在電腦必備的基本技術,而在這方面就比較需要資工背景的人才,而資料庫的程式開發就需要電算機的人才,所以在這裡面也讓我了解到要從事資料庫管理方面相關的的工作,最重要一定要具備兩項特質,一是冷靜解決問題的能力,二是系統規劃的能力,防範未然,將來面對系統問題時,可將傷害降至最低,如果再面試時,可以展現兩項特質,就有機會錄取,這也讓我非常的受益良多了解到跟資料庫管理系統相關工作文章介紹。 參考來源:1111職務大搜祕 |
|