国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

解析SQL Server數據應用在不同的數據庫中

2024-08-31 00:45:50
字體:
來源:轉載
供稿:網友

在軟件開發的初始階段,開發商們總是想把整個系統的最小的細節設計好了,然后再去單線程的編寫代碼。這樣軟件開發完成需要很長時間,但開發商們一直都在這么做。

所以開發者不得不去縮小他們的野心,先設計好一個小系統,然而這個小系統只是解決了整個系統難題中的一部分。這導致了由不同的團隊設計和創建的許多小系統幾乎都不能相互之間兼容。

目前,許多組織都聘請了數據庫建模者或者DBA,這些人能監督數據庫設計和開發。不幸的是,那些組織只有在出現某些狀況后,才會意識到在他們的員工中需要這樣的人。

數據建模者和DBA面對的一個非常普遍的問題就是,如何在不同的數據庫中解析SQL數據。本文將通過一個可靠的方法來說明這個問題。

一個實例

在這個實例方案中,有兩個包含相似數據的數據庫:一個使用術語OrderNumber,另一個使用術語OrderNo。第一個數據庫有關鍵字而第二個數據庫沒有。

首先,你會在兩個數據庫中發現它們的順序是相似的。清單A創建了兩個數據庫(Test_Cross_1和Test_Cross_2),每個數據庫中有一個表(分別是Orders_1和Orders_2)。

假設Orders_1包括這些行:

以下為引用的內容:
OrderNumberOrderDate
2007-02-23 00:00:00.000
2007-02-24 00:00:00.000
2007-02-25 00:00:00.000
假設Orders_2包括這些行:
OrderNo  OrderDate
2007-02-23 00:00:00.000
2  2007-02-24 00:00:00.000
2007-02-24 00:00:00.000
3011 2007-02-25 00:00:00.000

一旦你明白了如何引用表SQL執行合并操作是很簡單的。簡而言之,你要有合法的名字。如清單B所示。這將不會成功,因為Order_2包括一行Order_1沒有的數據。改變連接,加入對外連接符也不會成功,就像你在清單C中看到的那樣。第二個查詢得到跟第一個查詢相同的結果,因為OrderNo 301不存在于第一個表中。找到這一行,你必須在第二個查詢中,將這個表的順序反轉。如清單D。現在你就能發現不匹配的行了。

以下為引用的內容:
OrderNo   OrderDate   OrderNumberOrderDate
1   2007-02-23 00:00:00.0001  2007-02-23 00:00:00.000
2   2007-02-24 00:00:00.0002  2007-02-24 00:00:00.000
2007-02-24 00:00:00.000 NULL NULL
2007-02-25 00:00:00.0003 011 2007-02-25 00:00:00.000

假設有一些行存在于Order_1中而不存在于Order_2中。你將上面的查詢翻轉,它也能工作,然而,隨后你會得到兩個查詢和兩個結果集,并結束你的查詢,這些你都必須手動比較。如果每個表只有四行,這是不困難的,但是想象一下如果有4,000行記錄的話,怎么使用這種不切實際的方法進行比較呢。你必須對兩個表的每行沒出現在另外那張表的記錄進行檢查。

以下為引用的內容:
CREATE DATABASE [Test_Cross_1] ON PRIMARY
( NAME = N'Test_Cross_1', FILENAME = N'
C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATATest_Cross_1.mdf',
SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON ( NAME = N'Test_Cross_1_log',
FILENAME = N'C:aProgram FilesMicrosoft
SQL ServerMSSQL.1MSSQLDATATest_Cross_1_log.ldf',
SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)GO
USE [Test_Cross_1]
GO
CREATE TABLE [dbo].[Orders_1]
( [OrderNumber] [int] NOT NULL,
[OrderDate] [datetime] NOT NULL,
CONSTRAINT [PK_Orders_1] PRIMARY KEY CLUSTERED
( [OrderNumber] ASC)WITH (PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
CREATE DATABASE [Test_Cross_2] ON PRIMARY
( NAME = N'Test_Cross_2',
FILENAME = N'C:Program FilesMicrosoft
SQL ServerMSSQL.1MSSQLDATATest_Cross_2.mdf',
SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON ( NAME = N'Test_Cross_2_log',
FILENAME = N'C:Program FilesMicrosoft
SQL ServerMSSQL.1MSSQLDATATest_Cross_2_log.ldf',
SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)GO
CREATE TABLE [dbo].[Orders_2]
( [OrderNo] [int] NOT NULL, [OrderDate] [datetime]
NOT NULL CONSTRAINT [DF_Orders_2_OrderDate]
DEFAULT (getdate()), CONSTRAINT [PK_Orders_2]
PRIMARY KEY CLUSTERED ( [OrderNo] ASC)WITH
(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

清單A

以下為引用的內容:
SELECT * FROM Test_Cross_1.dbo.Orders_1INNER
JOIN Test_Cross_2.dbo.Orders_2
ON Test_Cross_1.dbo.Orders_1.OrderNumber

清單B

以下為引用的內容:
SELECT * FROM Test_Cross_1.dbo.Orders_1LEFT OUTER
JOIN Test_Cross_2.dbo.Orders_2
ON Test_Cross_1.dbo.Orders_1.OrderNumber

清單C

以下為引用的內容:
SELECT * FROM Test_Cross_2.dbo.Orders_2LEFT OUTER
JOIN Test_Cross_1.dbo.Orders_1
ON Test_Cross_2.dbo.Orders_2.OrderNo

清單D

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西青区| 子长县| 华宁县| 嘉义县| 连江县| 瑞昌市| 金塔县| 长垣县| 翁源县| 察隅县| 呼伦贝尔市| 天长市| 册亨县| 班戈县| 永州市| 巴中市| 获嘉县| 手游| 若尔盖县| 云梦县| 张家川| 金川县| 华亭县| 河南省| 科技| 鄄城县| 张北县| 美姑县| 塔城市| 滁州市| 溧阳市| 翼城县| 兴化市| 苗栗市| 梁河县| 南京市| 连城县| 兴安县| 阿尔山市| 司法| 巴马|