課程名稱:資料庫管理系統(472105

指導老師:蔡佳麟

學生:尹士瑋

學號: 40207203

組別:第二組

次:第10-14 [回首頁]

 

Part I指定作業:

作業題目

4.試說明資料表有哪些合併方式?

5.試說明檢視表的意義為何?

6.試比較Access/MySQL/MS-SQL Server的異同。

回答內容

根據[1]SQL合併查詢是將儲存在不同資料表的欄位資料取出,合併成所需的資訊,常用的合併查詢,依查詢範圍從大到小,如下所示:1.交叉合併查詢2.θ合併3.EquiJoins合併查詢4.自然合併查詢  5.外部合併查詢                          

 1.交叉合併查詢: SQLCROSS JOIN交叉合併查詢指令就是關聯式代數的卡笛生乘積運算(Cartesian Product),查詢結果的記錄數是兩個資料表記錄數的乘積。

SQL查詢範例:

從學生Students資料表取出sidname欄位和Classes選課資料表的課程編號c_no和講師編號eid欄位執行交叉合併查詢,如下所示:

SELECT Students.sid, Students.name, Classes.c_no, Classes.eid

FROM Students CROSS JOIN Classes 描述: 描述: Ch12-2

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

描述: 描述: Ch12-3-1

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查詢範例:

StudentsClasses資料表查詢學生的詳細資料,和每位學生詳細的選課資料:

SELECT * FROM Students, Classes

WHERE Students.sid = Classes.sid

描述: 描述: Ch12-3-2-01

SQL查詢範例:

CoursesClasses資料表查詢每一門課程的詳細資料和其上課的教室編號:

SELECT Courses.*, Classes.room

FROM Courses, Classes

WHERE Courses.c_no = Classes.c_no

描述: 描述: Ch12-3-2-02

4.自然合併查詢

關聯式代數的自然合併(Natural Join)查詢就是SQL語言的INNER JOIN內部合併查詢,如下圖所示:

描述: 描述: Ch12-4

自然合併查詢-說明

如果關聯式資料庫管理系統的SQL語言沒有支援內部合併查詢指令INNER JOIN,其實,我們只需稍微修改EquiJoins合併查詢的SQL指令,一樣可以顯示自然合併查詢的結果。

INNER JOINEquiJoins的差異在於不會重複顯式合併的欄位

SQL查詢範例:

StudentsClasses兩個資料表查詢學生和選課的詳細資料,如下所示:

SELECT Students.*, Classes.eid, Classes.c_no,Classes.time,Classes.room

FROM Students, Classes

WHERE Students.sid = Classes.sid

描述: 描述: Ch12-4-1

5. 外部合併查詢

SQL語言的OUTER JOIN外部合併查詢指令可以取回指定資料表的所有記錄,它和INNER JOIN內部合併查詢的差異在於查詢結果並不是兩個資料表都一定存在的記錄,一共分成三種OUTER JOIN指令,如下所示:

(1)左外部合併(LEFT JOIN

(2)右外部合併(RIGHT JOIN

(3)完全外部合併(FULL JOIN

LEFT JOIN左外部合併查詢

左外部合併是在合併的兩個資料表中,取回左邊資料表內的所有記錄,不論是否在右邊資料表存在合併欄位值。

描述: 描述: Ch12-5-01

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

結果

描述: 描述: Ch12-5-1

RIGHT JOIN右外部合併查詢

右外部合併可以取回右邊資料表內的所有記錄,不論是否在左邊資料表存在合併欄位值。

描述: 描述: Ch12-5-02

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

結果

描述: 描述: Ch12-5-2-01

SQL查詢範例:

使用多種JOIN指令合併StudentsCoursesClasses資料表,如下所示:

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

結果

描述: 描述: Ch12-5-2-02

FULL JOIN完全外部合併查詢

不同於LEFT JOIN左外部合併查詢和RIGHT JOIN右外部合併查詢,FULL JOIN完全外部合併可以取回左、右邊資料表內的所有記錄。

描述: 描述: Ch12-5-03

SQL查詢範例:

Students學生資料表與Classes資料表執行完全外部合併查詢,合併欄位是學號sid,如下所示:

SELECT Students.sid, Students.name, Classes.c_no, Classes.score

FROM Students FULL JOIN Classes

ON Students.sid = Classes.sid

結果

描述: 描述: Ch12-5-3

 

 

 

 

 

 

根據[2]檢視表(Views)也稱為虛擬資料表(Virtual Tables),因為Views所呈現出來的結果和Tables非常類似,最大的差異在於Tables是真正儲存資料的地方,而Views
本身並不儲存任何的資料內容,而是查詢(Select)是自Tables,或是經由其他Views再自下層的資料表所取得的資料。
故我們可知Views由語法構成,本身不含資料,所以你也無法透過ViewsTables
做任何的資料變更(比方更新、刪除)
描述: 描述: 描述: 描述: 描述: 描述: 描述: 描述: 描述: http://pics7.blog.yam.com/13/userfile/i/iamshiao/album/14991753235aa1.jpg

根據[3] Access是一種桌面資料庫,適合資料量較少的應用,存儲資料庫(.mdb)檔大小不超過2G位元組,資料庫中的物件個數不超過32,768。不過,由於資料庫可以包括其他中的連結表,所以它的大小實際上只受可用存儲空間大小的限制。處理非超大量資料庫是很好的選擇,效率也很高。但是,當您的網站訪問時遇到下面的情況之一,您就應該考慮使用SQL資料庫了: 
 1.
資料庫大小超過300M  2.線上人數經常超過100人;
 3.
網站經常出現服務失效英文提示:Service Unavailable);
 4.
伺服器經常出現CPU資源被100%佔用。
  
SQL Server是基於伺服器端的中型資料庫,可以適合大容量資料的應用,在功能上管理上也要比Access強。在處理海量資料的效率,後開發的靈活性,可擴展性等方面強大。因為現在資料庫都使用標準的SQL語言對資料庫進行管理,所以如果是標準SQL語言,兩者基本上都可以通用的。SQL Server還有更多的擴展,可以用存儲過程,資料庫大小無極限限制。
 
SQL Server 特點:
    1.
真正的客戶機/伺服器體系結構。
    2.
圖形化使用者介面,使系統管理和資料庫管理更加直觀、簡單。
    3.
豐富的程式設計介面工具,為使用者進行程式設計提供了更大的選  擇餘地。
    4.SQL Server
Windows NT完全集成,利用了NT的許多功能,如發送和接受消息,管理登錄安全性等。SQL Server也可以很好地與microsoft BackOffice產品集成。
    5.
具有很好的伸縮性,可跨越從運行Windows 95/98的膝上型電腦到運行Windows 2000的大型多處理器等多種平臺使用。
    6.
Web技術的支援,使用戶能夠很容易地將資料庫中的資料發佈到Web頁面上。
    7.SQL Server
提供資料倉庫功能,這個功能只在Oracle和其他更昂貴的DBMS中才有。
  
  MySQL是一個開放源碼的小型關係型數據庫管理系統,目前被廣泛地應用在Internet上的中小型網站中。由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站資料庫。
   
 MySQL特點:
    1.
核心程式採用完全的多執行緒程式設計。執行是羽量級的進程,它可以靈活地為使用者提供服務,而不過多的系統資源。
    2.
可運行在不同的作業系統下。如可支援Windows95/98/NT/20002003以及UNIXLinuxSUN OS等多種作業系統平臺。
    3.
有一個非常靈活而且安全的許可權和口令系統。當客戶與MySql伺服器連接時,他們之間所有的口令傳送被加密,而且MySql支援主機認證。
    4.
支持ODBC for WindowsMySql支援所有的ODBC 2.5函數和其他許多函數,這樣就可以用Access連接MySql伺服器,從而使得MySql的應用被大大擴展。
    5.
支援大型的資料庫。雖然對於用Php編寫的網頁來說只要能夠存放上百條以上的記錄資料就足夠了,但MySql可以方便地支援上千萬條記錄的資料庫。
    6.
擁有一個非常快速而且穩定的基於執行的記憶體分配系統,可以持續使用面不必擔心其穩定性。
    7.
強大的查詢功能。MySql支援查詢的SELECTWHERE語句的全部運算子和函數,並且可以在同一查詢中混用來自不同資料庫的表,從而使得查詢變得快捷和方便。
    8.PHP
MySql提供了強力支援,PHP中提供了整套的MySql函數,對MySql進行了全方位的支持。

MySQL / SQL Server / Oracle / MS Accesssql語句聯繫區別總結

各資料庫的sql語句差別

1.取前幾條數據
MySQL 
語法
SELECT * FROM Persons LIMIT 5
Oracle 
語法
SELECT * FROM Persons WHERE ROWNUM <= 5
SQL Server 
的語法
SELECT TOP 2 * FROM Persons
SELECT TOP 50 PERCENT * FROM Persons
2.MySQL
建表約束
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)

SQL Server / Oracle / MS Access建表約束
CREATE TABLE Persons
(
Id_P int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

如果需要命名 UNIQUE 約束,以及為多個列定義 UNIQUE 約束,請使用下面的 SQL 語法:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)
3.
撤銷 UNIQUE 約束
MySQL:
ALTER TABLE Persons
DROP INDEX uc_PersonID

SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID
4.SQL PRIMARY KEY 
約束
MySQL:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (Id_P)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
如果需要命名 PRIMARY KEY 約束,以及為多個列定義 PRIMARY KEY 約束,請使用下面的 SQL 語法:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID PRIMARY KEY (Id_P,LastName)
)

SQL PRIMARY KEY Constraint on ALTER TABLE
如果在表已存在的情況下為 "Id_P列創建 PRIMARY KEY 約束,請使用下面的 SQL
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD PRIMARY KEY (Id_P)

如果需要命名 PRIMARY KEY 約束,以及為多個列定義 PRIMARY KEY 約束,請使用下面的 SQL 語法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
5.
撤銷 PRIMARY KEY 約束
如需撤銷 PRIMARY KEY 約束,請使用下面的 SQL
MySQL:
ALTER TABLE Persons
DROP PRIMARY KEY
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID
6.SQL FOREIGN KEY Constraint on CREATE TABLE
下麵的 SQL  "Orders" 表創建時為 "Id_P列創建 FOREIGN KEY
MySQL:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (O_Id),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

7.如果需要命名 FOREIGN KEY 約束,以及為多個列定義 FOREIGN KEY 約束,請使用下面的 SQL 語法:

MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)

8.SQL FOREIGN KEY Constraint on ALTER TABLE
如果在 "Orders" 表已存在的情況下為 "Id_P列創建 FOREIGN KEY 約束,請使用下面的 SQL

MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
如果需要命名 FOREIGN KEY 約束,以及為多個列定義 FOREIGN KEY 約束,請使用下面的 SQL 語法:

MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
撤銷 FOREIGN KEY 約束
如需撤銷 FOREIGN KEY 約束,請使用下面的 SQL

MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

 

SQL/MYSQL/MSSQL/Access 的區別,比較

SQL是專為資料庫而建立的操作命令集,是一種功能齊全的資料庫語言。而MySQL是資料庫管理系統(DBMS)

MSSQLACCESS都是Microsoft公司開發的可以用於ASP程式中的網站資料庫,不過MSSQLACCESS功能強大,大型網站建議採用MSSQL資料庫.

什麼是My SQL資料庫?
       My SQL是一個多使用者、多執行緒的SQL資料庫,是一個客戶機/伺服器結構的應用,它由一個伺服器守護程式mysqld和很多不同的客戶程式和庫組成。

        資料庫與使用者端之間的介面程式可以使用CGI進行通信。(CGI全稱是公共閘道介面”(Common Gateway Interface)HTTP伺服器與你的或其它機器上的程式進行交談的一種工具,其程式須運行在網路服務器上。)在物理上CGI是一段程式,運行在Server上,提供同用戶端 Html頁面的介面.

msSQL資料庫和myqsl資料庫有什麼不同?
       MySql短小精悍,access一樣的檔型資料庫,但比access強百倍,是真正多用戶多工的資料庫系統,從Linux上移植過來的,安全性非常好,完全可以作為大型資料庫使用,不過大部分操作是在dos下進行,雖然也有協力廠商開發的圖形介面但並不好用。

       MsSql是微軟的產品一貫傻大笨粗,性能也強大,圖形介面使用很方便,象個傻瓜相機一樣,不過,也太大了,很多不實用的東西 
        win98
下不能裝MSSQL,只能裝個用戶端工具,如果是為了學DELPHI(DelphiBorland公司研製的新一代視覺化開發工具)開發,裝個小巧的accessmysql就可以,反正都是通過ODBC<(開放資料庫互連)是微軟公司開放服務結構中有關資料庫的一個組成部分,它建立了一組規範,並提供了一組對資料庫訪問的標準API(應用程式設計發展介面)。這些API利用SQL來完成其大部分任務。ODBC本身也提供了對SQL語言的支援,使用者可以直接將SQL語句送給ODBC)>來做。

SQL/MYSQL/MSSQL/Access區別比較

Access是一種桌面資料庫,只適合資料量少的應用,在處理少量資料和單機訪問的資料庫時是很好的,效率也很高。但是它的同時訪問用戶端不能多於4個。access資料庫有一定的極限,如果資料達到100M左右,很容易造成伺服器iis假死,或者消耗掉伺服器的記憶體導致伺服器崩潰。 
SQL Server是基於伺服器端的中型的資料庫,可以適合大容量資料的應用,在功能上管理上也要比Access要強得多。在處理海量資料的效率,後開發的靈活性,可擴展性等方面強大。因為現在資料庫都使用標準的SQL語言對資料庫進行管理,所以如果是標準SQL語言,兩者基本上都可以通用的。92HeZu網全部雙線合租空間均可使用Access資料庫,同時也支援SQL ServerSQL Server還有更多的擴展,可以用存儲過程,資料庫大小無極限限制。 
SQL Server 特點: 
1.
真正的客戶機/伺服器體系結構。 
2.
圖形化使用者介面,使系統管理和資料庫管理更加直觀、簡單。 
3.
豐富的程式設計介面工具,為使用者進行程式設計提供了更大的選擇餘地。 
4.SQL Server
Windows NT完全集成,利用了NT的許多功能,如發送和接受消息,管理登錄安全性等。SQL Server也可以很好地與microsoft BackOffice產品集成。 
5.
具有很好的伸縮性,可跨越從運行Windows 95/98的膝上型電腦到運行Windows 2000的大型多處理器等多種平臺使用。 
6.
Web技術的支援,使用戶能夠很容易地將資料庫中的資料發佈到Web頁面上。 
7.SQL Server
提供資料倉庫功能,這個功能只在Oracle和其他更昂貴的DBMS中才有。 
MySQL
是一個開放源碼的小型關係型數據庫管理系統,開發者為瑞典MySQL AB公司,92HeZu網免費贈送MySQL。目前MySQL被廣泛地應用在Internet上的中小型網站中。提供由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站資料庫 
MySQL特點: 
1.MySql
的核心程式採用完全的多執行程式設計。執行是羽量級的進程,它可以靈活地為使用者提供服務,而不過多的系統資源。 
2.MySql
可運行在不同的作業系統下。簡單地說,MySql可以支援Windows95/98/NT/2000以及UNIXLinuxSUN OS等多種作業系統平臺。 
3.MySql
有一個非常靈活而且安全的許可權和口令系統。當客戶與MySql伺服器連接時,他們之間所有的口令傳送被加密,而且MySql支援主機認證。 
4.MySql
支持ODBC for WindowsMySql支援所有的ODBC 2.5函數和其他許多函數,這樣就可以用Access連接MySql伺服器,從而使得MySql的應用被大大擴展。 
5.MySql
支援大型的資料庫。雖然對於用Php編寫的網頁來說只要能夠存放上百條以上的記錄資料就足夠了,但MySql可以方便地支援上千萬條記錄的資料庫。 
6.MySql
擁有一個非常快速而且穩定的基於執行的記憶體分配系統,可以持續使用面不必擔心其穩定性。 
7.
強大的查詢功能。MySql支援查詢的SELECTWHERE語句的全部運算子和函數,並且可以在同一查詢中混用來自不同資料庫的表,從而使得查詢變得快捷和方便。 
8.PHP
MySql提供了強力支援,PHP中提供了整套的MySql函數,對MySql進行了全方位的支持。

參考來源

1.Chap 12 SQL合併查詢與子查詢

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指令

EX14-1.遠端連線執行SQL

 

Ex14.2 遠端連線執行匯入資料

 

Ex.14.3.1.SQL指令,顯示昨天,今天與明天的日期

 

 

Ex.14.3.2. 本課程11預警成績

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

課後心得

看完有關跟資料庫管理系統的文章以後,我覺得那位在網路上介紹自己在從事資料庫管理師(DBA)助理他每天的工作主要就是資料庫的管理維護,維護有關顧客的資料、企業文件、系統程式等,要是疏忽的話,就會造成企業的損害,重則可能會影響公司營運等,這也讓我覺得他非常的不簡單,因為從事資料庫管理師(DBA)你必須是從電算機學門、工程學門如電機、電子、資工、資管系等相關科系畢業才有可能從事資料庫管理師(DBA)這一行類的工作,而且還有一個必須先決條件就是懂得資料庫的操作和應用,因為這是要在從事資料庫管理師在電腦必備的基本技術而在這方面就比較需要資工背景的人才而資料庫的程式開發就需要電算機的人才,所以在這裡面也讓我了解到要從事資料庫管理方面相關的工作,最重要一定要具備兩項特質,一是冷靜解決問題的能力,二是系統規劃的能力,防範未然,將來面對系統問題時,可將傷害降至最低,如果再面試時,可以展現兩項特質,就有機會錄取,這也讓我非常的受益良多了解到跟資料庫管理系統相關工作文章介紹。

參考來源:1111務大搜