當前位置:首頁 » 數據倉庫 » 不同資料庫的比較
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

不同資料庫的比較

發布時間: 2023-01-13 04:02:04

資料庫的區別

資料庫是用來存儲數據的。通常有sql、MySQL等,這些是網站或者系統用來存儲數據的。mssql和mysql的區別
mssql 是微軟的那個 SQL Server,運行於windows 2000,2003等平台

mysql 是個開源的資料庫Server,可運行在windows平台、unix\\linux平台,其標准版是免費的,可以到www.mysql.com 看看

asp\\php只是一種解釋語言,不一定mssql不能用php,也不一定mysql非得用php,只不過asp-mssql,php-mysql是一種常用的組合

SQL資料庫完全手冊_1

SQL是Structured Quevy Language(結構化查詢語言)的縮寫。SQL是專為資料庫而建立的操作命令集,是一種功能齊全的資料庫語言。在使用它時,只需要發出「做什麼」的命令,「怎麼做」是不用使用者考慮的。SQL功能強大、簡單易學、使用方便,已經成為了資料庫操作的基礎,並且現在幾乎所有的資料庫均支持SQL。
##1 二、SQL資料庫數據體系結構
SQL資料庫的數據體系結構基本上是***結構,但使用術語與傳統關系模型術語不同。在SQL中,關系模式(模式)稱為「基本表」(base table);存儲模式(內模式)稱為「存儲文件」(stored file);子模式(外模式)稱為「視圖」(view);元組稱為「行」(row);屬性稱為「列」(column)。名稱對稱如^00100009a^:
##1 三、SQL語言的組成
在正式學習SQL語言之前,首先讓我們對SQL語言有一個基本認識,介紹一下SQL語言的組成:
1.一個SQL資料庫是表(Table)的集合,它由一個或多個SQL模式定義。
2.一個SQL表由行集構成,一行是列的序列(集合),每列與行對應一個數據項。
3.一個表或者是一個基本表或者是一個視圖。基本表是實際存儲在資料庫的表,而視圖是由若干基本表或其他視圖構成的表的定義。
4.一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。每個存儲文件與外部存儲上一個物理文件對應。
5.用戶可以用SQL語句對視圖和基本表進行查詢等操作。在用戶角度來看,視圖和基本表是一樣的,沒有區別,都是關系(表格)。
6.SQL用戶可以是應用程序,也可以是終端用戶。SQL語句可嵌入在宿主語言的程序中使用,宿主語言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada語言等。SQL用戶也能作為獨立的用戶介面,供交互環境下的終端用戶使用。
##1 四、對資料庫進行操作
SQL包括了所有對資料庫的操作,主要是由4個部分組成:
1.數據定義:這一部分又稱為「SQL DDL」,定義資料庫的邏輯結構,包括定義資料庫、基本表、視圖和索引4部分。
2.數據操縱:這一部分又稱為「SQL DML」,其中包括數據查詢和數據更新兩大類操作,其中數據更新又包括插入、刪除和更新三種操作。
3.數據控制:對用戶訪問數據的控制有基本表和視圖的授權、完整性規則的描述,事務控制語句等。
4.嵌入式SQL語言的使用規定:規定SQL語句在宿主語言的程序中使用的規則。
下面我們將分別介紹:
##2 (一)數據定義
SQL數據定義功能包括定義資料庫、基本表、索引和視圖。
首先,讓我們了解一下SQL所提供的基本數據類型:(如^00100009b^)
1.資料庫的建立與刪除
(1)建立資料庫:資料庫是一個包括了多個基本表的數據集,其語句格式為:
CREATE DATABASE <資料庫名> 〔其它參數〕
其中,<資料庫名>在系統中必須是唯一的,不能重復,不然將導致數據存取失誤。〔其它參數〕因具體資料庫實現系統不同而異。
例:要建立項目管理資料庫(xmmanage),其語句應為:
CREATE DATABASE xmmanage
(2) 資料庫的刪除:將資料庫及其全部內容從系統中刪除。
其語句格式為:DROP DATABASE <資料庫名>
例:刪除項目管理資料庫(xmmanage),其語句應為:
DROP DATABASE xmmanage
2.基本表的定義及變更
本身獨立存在的表稱為基本表,在SQL語言中一個關系唯一對應一個基本表。基本表的定義指建立基本關系模式,而變更則是指對資料庫中已存在的基本表進行刪除與修改。
(1)基本表的定義:基本表是非導出關系,其定義涉及表名、列名及數據類型等,其語句格式為:
CREATE TABLE〔<資料庫名>.〕<表名>
(<列名> 數據類型〔預設值〕 〔NOT NULL / NULL〕
〔,<列名> 數據類型 〔預設值〕 〔NOT NULL / NULL〕〕......
〔,UNIQUE (列名〔,列名〕......)〕
〔,PRIMARY KEY(列名)〕
〔,FOREIGN KEY(列名〔,列名〕......)REFERENCE <表名>(列名〔,列名〕......)〕
〔,CHECK(條件)〕 〔其它參數〕)
其中,〈資料庫名〉.〕指出將新建立的表存放於該資料庫中;
新建的表由兩部分組成:其一為表和一組列名,其二是實際存放的數據(即可在定義表的同時,直接存放數據到表中);
列名為用戶自定義的易於理解的名稱,列名中不能使用空格;
數據類型為上面所介紹的幾種標准數據類型;
〔NOT NULL/NULL〕指出該列是否允許存放空值,SQL語言支持空值的概念,所謂空值是「不知道」或「無意義」的值,值得注意的是數據「0」和空格都不是空值,系統一般默認允許為空值,所以當不允許為空值時,必須明確使用NOT NULL;
〔,UNIQUE〕將列按照其規定的順序進行排列,如不指定排列順序,則按列的定義順序排列;
〔PRIMARY KEY〕用於指定表的主鍵(即關系中的主屬性),實體完整性約束條件規定:主鍵必須是唯一的,非空的;
〔,FOREIGN KEY (列名〔,列名〕......) REFERENCE<表名>(列名〔,列名〕......)〕是用於指定外鍵參照完整性約束條件,FOREIGN KEY指定相關列為外鍵,其參照對象為另外一個表的指定列,即使用REFERENCE引入的外表中的列,當不指定外表列名時,系統將默認其列名與參照鍵的列名相同,要注意的是:使用外鍵時必須使用參照,另外數據的外鍵參照完整性約束條件規定:外鍵的值要麼與相對應的主鍵相同,要麼為空值(具體由實現系統不同而異)
〔,CHECK〕用於使用指定條件對存入表中的數據進行檢查,以確定其合法性,提高數據的安全性。
例:要建立一個學生情況表(student)
CREATE TABLE student //創建基本表student
(st_class CHAR(8),// 定義列st_class班級,數據類型為8位定長字元串
st_no CHAR(10) NOT NULL,//定義列st_no學號,類型為10位定長字元串,非空
st_name CHAR(8) NOT NULL,//定義列st_name姓名,類型為8位定長字元串,非空
st_sex CHAR(2),//定義列st_sex性別,類型為2位定長字元串
st_age SMALLINT,//定義列st_age年齡,類型為短整型
PRIMARY KEY (st_no))//定義st_no學號為主鍵。
例:要建立課程設置表(subject)
CREATE TABLE subject//創建基本表subject
(su_no CHAR(4) NOT NULL,// 定義列su_no課號,類型為4位定長字元串,非空
su_subject CHAR(20) NOT NULL,// 定義列su_subject課程名,類型為20位定長字元串,非空
su_credit INTEGER,// 定義列su_credit學分,類型為長整數
su_period INTEGER,//定義列su_period學時,類型為長整數
su_preno CHAR(4),//定義列su_preno先修課號,類型為4位定長字元串
PRIMARY KEY(su_no))//定義su_no課號為主鍵。
例:要建立學生選課表(score)
CREATE TABLE score //創建基本表score
(st_no CHAR(10),//定義列st_no學號,類型為10位定長字元串
su_no CHAR(4),//定義列su_no課號,類型為4位定長字元串
sc_score INTEGER NULL,//定義列sc_score,類型為長整形,可以為空值
FOREIGN KEY (st_no) REFERENCE student,//從表student中引入參照外鍵st_no,以確保本表與表student的關聯與同步
FOREIGN KEY (suno) REFERENCE subject)//從表subject中引入參照外鍵su_no,以確保本表與表subject的關聯與同步
(2)基本表的刪除:用以從資料庫中刪除一個基本表及其全部內容,其語句格式為:
DROP TABLE〔<資料庫名>.〕表名
例如:將上面建立的表都刪除
DROP TABLE student,subject,score
(3)基本表的修改:在基本表建立並使用一段時間後,可能需要根據實際要求對基本表的結構進行修改,即增加新的屬性或刪除屬性。

增加屬性的語句格式為:
ALTER TABLE 〔<資料庫名>.〕表名 ADD
(<列名> 數據類型 〔預設值〕 〔NOT NULL / NULL〕
〔,<列名> 數據類型〔預設值〕〔NOT NULL / NULL〕〕......
〔,UNIQUE (列名〔,列名〕......)〕
〔,PRIMARY KEY(列名)〕
〔,FOREIGN KEY(列名〔,列名〕......) REFERENCE <表名>(列名〔,列名〕......)〕
〔,CHECK(條件)〕〔其它參數〕)
例如:在基本表student中加入列stborn出生日期,數據類型為DATE,且不能為空值
ALTER TABLE student ADD (stborn DATE NOT NULL)
刪除屬性的語句格式為:
ALTER TABLE 〔<資料庫名>.〕表名 DROP
( <列名> 數據類型 〔預設值〕〔NOT NULL / NULL〕
〔,<列名> 數據類型 〔預設值〕〔NOT NULL / NULL〕〕......)
例如:將基本表student中的列st_age刪除
ALTER TABLE student DROP (st_age)
3.視圖定義與刪除
在SQL中,視圖是外模式一級數據結構的基本單位。它是從一個或幾個基本表中導出的表,是從現有基本表中抽取若乾子集組成用戶的「專用表」。這種構造方式必須使用SQL中的SELECT語句來實現。在定義一個視圖時,只是把其定義存放在系統的數據中,而並不直接存儲視圖對應的數據,直到用戶使用視圖時才去求得對應的數據。
(1)視圖的定義:定義視圖可以使用CREATE VIEW語句實現,其語句格式為:
CREATE VIEW 視圖名 AS SELECT語句
從一個基本表中導出視圖:
例:從基本表student中導出只包括女學生情況的視圖
CREATE VIEW WOMANVIEW AS //創建一個視圖WOMANVIEW
SELECT st_class,st_no,st_name,st_age //選擇列st_class,st_no,st_name,st_age顯示
FROM student //從基本表student引入
WHERE st_sex=『女』//引入條件為性別為「女」,注意字元變數都使用單引號引用
從多個基本表中導出視圖:
例如:從基本表student和score中導出只包括女學生且分數在60分以上的視圖
CREATEVIEW WOMAN_SCORE AS //定義視圖WOMANSCORE
SELECT student.st_class,student.st_no,student.st_name,student.st_age,score.sc_score //有選擇性顯示相關列
FROM student.score //從基本表student和score中引入
WHERE student.st_sex=『女』AND score.sc_score>=60 AND student.st_no=score.st_no //選擇條件:性別為「女」 且分數在60分以上。並使用st_no將兩表聯系起來。
以後如果進行這一視圖的應用,則只需使用語句
SELECT * FROM WOMAN_SCORE //其中「*」為通配符,代表所有元素
(2)視圖的刪除:用於刪除已不再使用的視圖,其語句格式如下:
DROP VIEW 視圖名
例:將上面建立的WOMAN_SCORE視圖刪除
DROP VIEW WOMAN_SCORE
4.索引的定義與刪除
索引屬於物理存儲概念,而不是邏輯的概念。在SQL中拋棄了索引概念,直接使用主鍵概念。值得一提的是,有些關系DBMS同時包括索引機制和主鍵機制,這里我們推薦使用主鍵機制,因為它對系統資源佔用較低且效率較高。
(1)索引的定義:索引是建立在基本表之上的,其語句格式為:
CREATE 〔UNIQUE〕 INDEX 索引名 ON
〔<資料庫名>.〕表名(列名 〔ASC/DESC〕〔,列名 〔ASC/DESC〕〕......)
這里,保留字UNIQUE表示基本表中的索引值不允許重復,若預設則表示索引值在表中允許重復;DESC表示按索引鍵降序排列,若預設或ASC表示升序排列。
例:對基本表student中的st_no和st_age建立索引,分別為升序與降序,且索引值不允許重復
CREATE UNIQUE INDEX STINDEX ON//創建索引STINDEX
student(st_no ASC,st_age DESC)//對student中的st_no和st_age建立索引
(2)索引的刪除:
DROP INDEX 索引名
例:刪除上面建立的索引STINDEX
DROP INDEX STINDEX
##2 (二)數據查詢
SQL是一種查詢功能很強的語言,只要是資料庫存在的數據,總能通過適當的方法將它從資料庫中查找出來。SQL中的查詢語句只有一個:SELECT,它可與其它語句配合完成所有的查詢功能。SELECT語句的完整語法,可以有6個子句。完整的語法如下:
SELECT 目標表的列名或列表達式集合
FROM 基本表或(和)視圖集合
〔WHERE條件表達式〕
〔GROUP BY列名集合
〔HAVING組條件表達式〕〕
〔ORDER BY列名〔集合〕…〕
整個語句的語義如下:從FROM子句中列出的表中,選擇滿足WHERE子句中給出的條件表達式的元組,然後按GROUPBY子句(分組子句)中指定列的值分組,再提取滿足HAVING子句中組條件表達式的那些組,按SELECT子句給出的列名或列表達式求值輸出。ORDER子句(排序子句)是對輸出的目標表進行重新排序,並可附加說明ASC(升序)或DESC(降序)排列。
求採納為滿意回答。

⑵ 幾種資料庫軟體的比較

四大主流資料庫比較
一、開放性

1. SQL Server

只能在windows上運行,沒有絲毫的開放性,操作系統的系統的穩定對資料庫是十分重要的。Windows9X系列產品是偏重於桌面應用,NT server只適合中小型企業。而且windows平台的可靠性,安全性和伸縮性是非常有限的。它不象unix那樣久經考驗,尤其是在處理大資料庫。

2. Oracle

能在所有主流平台上運行(包括 windows)。完全支持所有的工業標准。採用完全開放策略。可以使客戶選擇最適合的解決方案。對開發商全力支持。

3. Sybase ASE

能在所有主流平台上運行(包括 windows)。 但由於早期Sybase與OS集成度不高,因此VERSION11.9.2以下版本需要較多OS和DB級補丁。在多平台的混合環境中,會有一定問題。

4. DB2

能在所有主流平台上運行(包括windows)。最適於海量數據。DB2在企業級的應用最為廣泛,在全球的500家最大的企業中,幾乎85%以上用DB2資料庫伺服器,而國內到97年約佔5%。

二、可伸縮性,並行性

1. SQL server

並行實施和共存模型並不成熟,很難處理日益增多的用戶數和數據卷,伸縮性有限。

2. Oracle

並行伺服器通過使一組結點共享同一簇中的工作來擴展windownt的能力,提供高可用性和高伸縮性的簇的解決方案。如果windowsNT不能滿足需要,用戶可以把資料庫移到UNIX中。Oracle的並行伺服器對各種UNIX平台的集群機制都有著相當高的集成度。

3. Sybase ASE

雖然有DB SWITCH來支持其並行伺服器,但DB SWITCH在技術層面還未成熟,且只支持版本12.5以上的ASE SERVER。DB SWITCH技術需要一台伺服器充當SWITCH,從而在硬體上帶來一些麻煩。

4. DB2

具有很好的並行性。DB2把資料庫管理擴充到了並行的、多節點的環境。資料庫分區是資料庫的一部分,包含自己的數據、索引、配置文件、和事務日誌。資料庫分區有時被稱為節點安全性。

三、安全認證

1. SQL server

沒有獲得任何安全證書。

2. Oracle Server

獲得最高認證級別的ISO標准認證。

3. Sybase ASE

獲得最高認證級別的ISO標准認證。

4. DB2

獲得最高認證級別的ISO標准認證。

四、性能

1. SQL Server

多用戶時性能不佳

2. Oracle

性能最高, 保持開放平台下的TPC-D和TPC-C的世界記錄。

3. Sybase ASE

性能接近於SQL Server,但在UNIX平台下的並發性要優與 SQL Server。

4. DB2

性能較高適用於數據倉庫和在線事物處理。

五、客戶端支持及應用模式

1. SQL Server

C/S結構,只支持windows客戶,可以用ADO、DAO、OLEDB、ODBC連接。

2. Oracle

多層次網路計算,支持多種工業標准,可以用ODBC、JDBC、OCI等網路客戶連接。

3. Sybase ASE

C/S結構,可以用ODBC、Jconnect、Ct-library等網路客戶連接。

4. DB2

跨平台,多層結構,支持ODBC、JDBC等客戶。

六、操作簡便

1. SQL Server

操作簡單,但只有圖形界面。

2. Oracle

較復雜,同時提供GUI和命令行,在windowsNT和unix下操作相同。

3. Sybase ASE

較復雜,同時提供GUI和命令行。但GUI較差,常常無法及時狀態,建議使用命令行。

4. DB2

操作簡單,同時提供GUI和命令行,在windowsNT和unix下操作相同。

七、使用風險

1. SQL server

完全重寫的代碼,經歷了長期的測試,不斷延遲,許多功能需要時間來證明。並不十分兼容。

2. Oracle

長時間的開發經驗,完全向下兼容。得到廣泛的應用。完全沒有風險。

3. Sybase ASE

向下兼容, 但是ct-library 程序不益移植。

4. DB2

在巨型企業得到廣泛的應用,向下兼容性好。風險小

⑶ 請問不同資料庫管理系統之間有什麼異同呢,比如Oracle,SQL Server,DB2,SYBASE,MY SQL,VF,Access。

1、異:各個資料庫的物理結構和邏輯結構都不盡相同,這導致各種資料庫的管理方法有很大差異;各個資料庫都對sql2和sql3規定的sql標准語言進行了擴展,形成了自己的開發語言,也就是方言。很多方言的差異還是蠻大的。
2、同:你說的每種資料庫都是關系型資料庫,它們都盡量向SQL3標准靠攏。包括資料庫的安全體系、三級結構兩級映像、數據完整性、事務的隔離等等等等。
3、使用范圍:大型商業資料庫的安全性、穩定性高,對產品服務能力也比較強。數據量大、安全要求高時一般都是用這種資料庫,Oracle、DB2、SqlServer是其代表;開源資料庫一般都是免費的,但是和商業資料庫相比,其開發、管理工具都比較難用,能獲得的技術支持也比較少,資料庫在運行中出現問題時難以獲得良好滿意的服務,或者服務的費用很高,對於數據量不大,數據安全性要求不是很高的場合,可以使用這些資料庫,因為在競標時減少幾十萬的資料庫成本會給自己帶來不小的優勢,PostgreSQL、MySQL、Firebird是其代表;至於access,是個小型桌面數據管理系統,當然,也可以做小型網站的資料庫管理系統。

⑷ 文件資料庫的特徵與比較差異

一、文件資料庫特徵(相對於傳統資料庫)
1、數據操作介面
SQL92標准,不管是傳統資料庫,還是文件資料庫,都必須支持SQL92標准。
2、數據保存格式
傳統資料庫(DB2, Oracle, SQL server等)數據保存的方式各異。
文件資料庫將數據保存在單一文件中。
3、API支持
傳統資料庫都支持ODBC和JDBC。
某些文件資料庫不支持ODBC和JDBC(sqlite都不支持,Berkeley DB有ODBC和JDBC支持,Firdbird有第三方的ODBC驅動)。
二、文件資料庫與傳統資料庫的比較
優勢: 由於數據保存在單一文件中,資料庫的部署和發布都比較簡單,適用於內嵌在應用程序中。
數據量不是太大時,速度比傳統資料庫要快。
缺點: 由於數據保存在單一文件中,資料庫打開時,該文件會被整個load到內存,因此資料庫不能過大(100M以內,個人測試)。
三、各種文件資料庫的比較
Sqlite:老牌的文件資料庫,完全免費 ( public domain ),使用方便,無須任何配置,下載源代碼編譯成庫或者直接編譯到應用程序都可以(250K,C代碼)。支持事務機制和blob數據類型。
Berkeley DB:更老牌的文件資料庫,最穩定的資料庫,完全可以取代大部分傳統client/server資料庫的應用場合;支持xml(代價是30M硬碟空間)。缺點是配置和使用比較復雜,不太適合小項目。
Firebird:與sqlite比較類似,有C#支持。某些發布版本不能build, 很久沒有關注了。
Access:一般不考慮。
xml資料庫文件。
dat、txt等文本文件。
格式化文本。
各種音頻、視頻文件等。

⑸ 幾種常用Web資料庫的比較

SWISSPROT的序列經過嚴格審核,注釋完善,但數量仍較
少。
PIR數據量較大,但包含未經驗證的序列,注釋也不完善。
TrEMBL和GenPept的數據量最大,且隨核酸序列資料庫的
更新而更新,但是由於TrEMBL和GenPept均是由核酸序列
經過計算機程序翻譯生成的,這兩個資料庫中的序列錯誤
率較大,並存在較多的冗餘序列。
UniProt中的序列具有較好的代表性,數據較完整。

⑹ 急救!在線等!Access與其他幾種資料庫的比較

7、800,也太多了吧,我寫出我所了解的,希望對你有幫助。
1、(1)oracle, Oracle公司是全球最大的信息管理軟體及服務供應商,成立於1977年,總部位於美國加州 Redwood shore。Oracle應用產品包括財務、供應鏈、製造、項目管理、人力資源和市場與銷售等150多個模塊,榮獲多項世界大獎,現已被全球近7600多家企業所採用。
(2)sql server,SQL是英文Structured Query Language的縮寫,意思為結構化查詢語言。SQL語言的主要功能就是同各種資料庫建立聯系,進行溝通。按照ANSI(美國國家標准協會)的規定,SQL被作為關系型資料庫管理系統的標准語言。SQL語句可以用來執行各種各樣的操作,例如更新資料庫中的數據,從資料庫中提取數據等。
(3)mysql,MySQL是一個小型關系型資料庫管理系統,開發者為瑞典MySQL AB公司。目前MySQL被廣泛地應用在Internet上的中小型網站中。由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站資料庫。
(4)sybase,這個我不太了解,你到網路搜吧
2、與access的比較:access是一個小型資料庫,而上述資料庫屬於中大型資料庫。access雖然是小型數據可,可也是「五臟俱全」,比較適合辦公使用;而上述幾個大型資料庫一般是中大型企業使用,特別是oracle,是一個很龐大的資料庫系統。
差不多就是這些了,還有什麼疑問,再補充。

⑺ 各種類型資料庫的比較

目前有許多資料庫產品,如Oracle、Sybase、Informix、Microsoft SQL Server、Microsoft Access、Visual FoxPro等產品各以自己特有的功能,在資料庫市場上佔有一席之地。下面簡要介紹幾種常用的資料庫管理系統[7]。
① Oracle資料庫系統:Oracle是一個最早商品化的關系型資料庫管理系統,也是應用廣泛、功能強大的資料庫管理系統。Oracle作為一個通用的資料庫管理系統,不僅具有完整的數據管理功能,還是一個分布式資料庫系統,支持各種分布式功能,特別是支持Internet應用。
② Sybase資料庫系統:基於Client/Server體系結構的大型網路資料庫系統。採用單線程技術進行查詢,開銷小,利用率高,支持分布式處理。
③ MS SQL Server:是一種典型的關系型資料庫管理系統,可以在許多操作系統上運行。目前最新版本的產品為Microsoft SQL Server 2005,它具有可靠性、可伸縮性、可用性、可管理性等特點,為用戶提供完整的資料庫解決方案。
④ Microsoft Access:是在Windows環境下非常流行的桌面型資料庫管理系統。使用Microsoft Access無需編寫任何代碼,只需通過直觀的可視化操作就可以完成大部分數據管理任務。

⑻ 如何比較兩個資料庫的差異

構建兩個臨時表,將兩個資料庫結構信息導入。
create Table #t1
(
ID Int Identity(1,1) Not Null Primary Key,
tablename nvarchar(50) NULL,
columnName nvarchar(50) NULL,
columnIndex int null,
columnType nvarchar(50) NULL
)
use 資料庫1
insert into #t1
create Table #t2
(
ID Int Identity(1,1) Not Null Primary Key,
tablename nvarchar(50) NULL,
columnName nvarchar(50) NULL,
columnIndex int null,
columnType nvarchar(50) NULL
)

//開始比較
use 資料庫2
insert into #t2
SELECT
SO.name as '表名',
SC.name as '表列名',
SC.colid as '索引',
ST.name as '類型'
FROM
sysobjects SO, -- 對象表
syscolumns SC, -- 列名表
systypes ST -- 數據類型表
WHERE
SO.id = SC.id
AND SO.xtype = 'U' -- 類型U表示表,V表示視圖
AND SO.status >= 0 --加一個條件:SO.status >= 0,否則會將系統的臨時表顯示出來
AND SC.xtype = ST.xusertype
ORDER BY
SO.name, SC.colorder
go

//查詢出 在t1 里有, t2 里沒有的欄位,查詢列出來。
select * from
(
select tablename,columnName,columnType from #t1 where tablename like '%EMS_%'
EXCEPT
select tablename,columnName,columnType from #t2 where tablename like '%EMS_%'
) as c
order by tablename

比較兩個資料庫中表和欄位的差異

-- 比較兩個資料庫中表的差異
-- u表,p存儲過程,v視圖
-- INTFSIMSNEW新庫,INTFSIMS舊庫
SELECT NTABLE = A.NAME, OTABLE = B.NAME
FROM INTFSIMSNEW..SYSOBJECTS A
LEFT JOIN INTFSIMS..SYSOBJECTS B
ON A.NAME = B.NAME
WHERE ISNULL(B.NAME, '') = ''
AND A.XTYPE = 'U'

UNION ALL

SELECT NTABLE = B.NAME, OTABLE = A.NAME
FROM INTFSIMS..SYSOBJECTS A
LEFT JOIN INTFSIMSNEW..SYSOBJECTS B
ON A.NAME = B.NAME
WHERE ISNULL(B.NAME, '') = ''
AND A.XTYPE = 'U'
ORDER BY 1, 2

-- 比較兩個資料庫中每個表欄位的差異
SELECT
表名A = CASE WHEN ISNULL(A.TABLENAME, '') <> '' THEN A.TABLENAME ELSE B.TABLENAME END,
欄位名A = A.FIELDNAME,
欄位名B = B.FIELDNAME,
順序= A.FIELDSNO,
說明= CASE WHEN A.FIELDTYPE <> B.FIELDTYPE THEN '類型: ' + A.FIELDTYPE + '-->' + B.FIELDTYPE
WHEN A.FIELDSNO <> B.FIELDSNO THEN '順序: ' + str(A.FIELDSNO) + '-->' + str(B.FIELDSNO)
WHEN A.LENGTH <> B.LENGTH THEN '長度: ' + str(A.LENGTH) + '-->' + str(B.LENGTH)
WHEN A.LENSEC <> B.LENSEC THEN '小數位: ' + str(A.LENSEC) + '-->' + str(B.LENSEC)
WHEN A.ALLOWNULL <> B.ALLOWNULL THEN '允許空值: ' + str(A.ALLOWNULL) + '-->' + str(B.ALLOWNULL)
END
FROM (SELECT
TABLENAME = B.NAME,
FIELDNAME = A.NAME,
FIELDSNO = A.COLID,
FIELDTYPE = C.NAME,
LENGTH = A.LENGTH,
LENSEC = A.XSCALE,
ALLOWNULL = A.ISNULLABLE
FROM INTFSIMSNEW..SYSCOLUMNS A
LEFT JOIN INTFSIMSNEW..SYSOBJECTS B
ON A.ID = B.ID
LEFT JOIN INTFSIMSNEW..SYSTYPES C
ON A.XUSERTYPE = C.XUSERTYPE
WHERE B.XTYPE = 'U') A
FULL JOIN (SELECT
TABLENAME = B.NAME,
FIELDNAME = A.NAME,
FIELDSNO = A.COLID,
FIELDTYPE = C.NAME,
LENGTH = A.LENGTH,
LENSEC = A.XSCALE,
ALLOWNULL = A.ISNULLABLE
FROM INTFSIMS..SYSCOLUMNS A
LEFT JOIN INTFSIMS..SYSOBJECTS B
ON A.ID = B.ID
LEFT JOIN INTFSIMS..SYSTYPES C
ON A.XUSERTYPE = C.XUSERTYPE
WHERE B.XTYPE = 'U') B
ON A.TABLENAME = B.TABLENAME
AND A.FIELDNAME = B.FIELDNAME
WHERE ISNULL(A.TABLENAME, '') = ''
OR ISNULL(B.TABLENAME, '') = ''
OR A.FIELDTYPE <> B.FIELDTYPE
OR A.FIELDSNO <> B.FIELDSNO
OR A.LENGTH <> B.LENGTH
OR A.LENSEC <> B.LENSEC
OR A.ALLOWNULL <> B.ALLOWNULL
ORDER by 1, 4

⑼ 各種資料庫區別 知乎

資料庫在進行區別的時候,主要就是數據信息含量的多少不同。
還有的資料庫信息相對來說研究性比較多一些,其他理論性的知識相對來說要比較少。