解析SQL Server數(shù)據(jù)應(yīng)用在不同的數(shù)據(jù)庫中_Mssql數(shù)據(jù)庫教程
推薦:快速清除SQLServer日志的兩種方法日志文件滿而造成SQL數(shù)據(jù)庫無法寫入文件時(shí),可用兩種方法: 第一種方法:清空日志。 1、打開查詢分析器,輸入命令 DUMP TRANSACTION 數(shù)據(jù)庫名 WITH NO_LOG 2、再打開企業(yè)管理器--右鍵你
在軟件開發(fā)的初始階段,開發(fā)商們總是想把整個(gè)系統(tǒng)的最小的細(xì)節(jié)設(shè)計(jì)好了,然后再去單線程的編寫代碼。這樣軟件開發(fā)完成需要很長(zhǎng)時(shí)間,但開發(fā)商們一直都在這么做。
所以開發(fā)者不得不去縮小他們的野心,先設(shè)計(jì)好一個(gè)小系統(tǒng),然而這個(gè)小系統(tǒng)只是解決了整個(gè)系統(tǒng)難題中的一部分。這導(dǎo)致了由不同的團(tuán)隊(duì)設(shè)計(jì)和創(chuàng)建的許多小系統(tǒng)幾乎都不能相互之間兼容。
目前,許多組織都聘請(qǐng)了數(shù)據(jù)庫建模者或者DBA,這些人能監(jiān)督數(shù)據(jù)庫設(shè)計(jì)和開發(fā)。不幸的是,那些組織只有在出現(xiàn)某些狀況后,才會(huì)意識(shí)到在他們的員工中需要這樣的人。
數(shù)據(jù)建模者和DBA面對(duì)的一個(gè)非常普遍的問題就是,如何在不同的數(shù)據(jù)庫中解析SQL數(shù)據(jù)。本文將通過一個(gè)可靠的方法來說明這個(gè)問題。
一個(gè)實(shí)例
在這個(gè)實(shí)例方案中,有兩個(gè)包含相似數(shù)據(jù)的數(shù)據(jù)庫:一個(gè)使用術(shù)語OrderNumber,另一個(gè)使用術(shù)語OrderNo。第一個(gè)數(shù)據(jù)庫有關(guān)鍵字而第二個(gè)數(shù)據(jù)庫沒有。
首先,你會(huì)在兩個(gè)數(shù)據(jù)庫中發(fā)現(xiàn)它們的順序是相似的。清單A創(chuàng)建了兩個(gè)數(shù)據(jù)庫(Test_Cross_1和Test_Cross_2),每個(gè)數(shù)據(jù)庫中有一個(gè)表(分別是Orders_1和Orders_2)。
假設(shè)Orders_1包括這些行:
| 以下為引用的內(nèi)容: OrderNumberOrderDate 2007-02-23 00:00:00.000 2007-02-24 00:00:00.000 2007-02-25 00:00:00.000 假設(shè)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執(zhí)行合并操作是很簡(jiǎn)單的。簡(jiǎn)而言之,你要有合法的名字。如清單B所示。這將不會(huì)成功,因?yàn)镺rder_2包括一行Order_1沒有的數(shù)據(jù)。改變連接,加入對(duì)外連接符也不會(huì)成功,就像你在清單C中看到的那樣。第二個(gè)查詢得到跟第一個(gè)查詢相同的結(jié)果,因?yàn)镺rderNo 301不存在于第一個(gè)表中。找到這一行,你必須在第二個(gè)查詢中,將這個(gè)表的順序反轉(zhuǎn)。如清單D�,F(xiàn)在你就能發(fā)現(xiàn)不匹配的行了。
| 以下為引用的內(nèi)容: 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 |
假設(shè)有一些行存在于Order_1中而不存在于Order_2中。你將上面的查詢翻轉(zhuǎn),它也能工作,然而,隨后你會(huì)得到兩個(gè)查詢和兩個(gè)結(jié)果集,并結(jié)束你的查詢,這些你都必須手動(dòng)比較。如果每個(gè)表只有四行,這是不困難的,但是想象一下如果有4,000行記錄的話,怎么使用這種不切實(shí)際的方法進(jìn)行比較呢。你必須對(duì)兩個(gè)表的每行沒出現(xiàn)在另外那張表的記錄進(jìn)行檢查。
| 以下為引用的內(nèi)容: 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
| 以下為引用的內(nèi)容: SELECT * FROM Test_Cross_1.dbo.Orders_1INNER JOIN Test_Cross_2.dbo.Orders_2 ON Test_Cross_1.dbo.Orders_1.OrderNumber |
清單B
| 以下為引用的內(nèi)容: 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
| 以下為引用的內(nèi)容: 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
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
猜你也喜歡看這些
- mysql導(dǎo)出數(shù)據(jù)庫幾種方法
- 網(wǎng)站模板MySQL timestamp自動(dòng)更新時(shí)間
- 設(shè)置mysql的sql_mode
- MYSQL 批量替換之replace語法的使用詳解
- MySQL:數(shù)據(jù)庫知識(shí)點(diǎn)
- PHP mysqli擴(kuò)展庫 預(yù)處理技術(shù)的使用分析
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫以及函數(shù)、存儲(chǔ)過程的介紹
- 解析SQL語句中Replace INTO與INSERT INTO的不同之處
- 基于MYSQL中優(yōu)化的一些方法
- 深入SQLite基本操作的總結(jié)詳解
- 相關(guān)鏈接:
復(fù)制本頁鏈接| 搜索解析SQL Server數(shù)據(jù)應(yīng)用在不同的數(shù)據(jù)庫中
- 教程說明:
Mssql數(shù)據(jù)庫教程-解析SQL Server數(shù)據(jù)應(yīng)用在不同的數(shù)據(jù)庫中
。