热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

解析SQLServer数据应用在不同的数据库_sqlserver

在软件开发的初始阶段,开发商们总是想把整个系统的最小的细节设计好了,然后再去单线程的编写代码。这样软件开发完成需要很长时间,但开发

在软件开发的初始阶段,开发商们总是想把整个系统的最小的细节设计好了,然后再去单线程的编写代码。这样软件开发完成需要很长时间,但开发商们一直都在这么做。

所以开发者不得不去缩小他们的野心,先设计好一个小系统,然而这个小系统只是解决了整个系统难题中的一部分。这导致了由不同的团队设计和创建的许多小系统几乎都不能相互之间兼容。

目前,许多组织都聘请了数据库建模者或者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包括这些行:

http://www.gaodaima.com/?p=37169解析SQL Server数据应用在不同的数据库_sqlserver

            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

欢迎大家阅读《解析SQL Server数据应用在不同的数据库_sqlserver》,跪求各位点评,若觉得好的话请收藏本文,by



推荐阅读
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • SQL 数据恢复技巧:利用快照实现高效恢复
    本文详细介绍了如何在 SQL 中通过数据库快照实现数据恢复,包括快照的创建、使用及恢复过程,旨在帮助读者深入了解这一技术并有效应用于实际场景。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 本文介绍了多种将多行数据合并为单行的方法,包括使用动态SQL、函数、CTE等技术,适用于不同的SQL Server版本。 ... [详细]
  • SQLite是一种轻量级的关系型数据库管理系统,尽管体积小巧,却能支持高达2TB的数据库容量,每个数据库以单个文件形式存储。本文将详细介绍SQLite在Android开发中的应用,包括其数据存储机制、事务处理方式及数据类型的动态特性。 ... [详细]
  • Navicat Premium中MySQL用户管理:创建新用户及高级设置
    本文作为Navicat Premium用户管理系列的第二部分,主要介绍如何创建新的MySQL用户,包括设置基本账户信息、密码策略、账户限制以及SSL配置等。 ... [详细]
  • 本文介绍了如何使用Workman框架构建一个功能全面的即时通讯系统,该系统不仅支持一对一聊天、群组聊天,还集成了视频会议和实时音视频通话功能,同时提供了红包发送等附加功能。 ... [详细]
  • 数据库环境:SQLSERVER2005  有一个test表,其表结构及数据如下图1。其中,id是主键,mid是当前节点,pid是父节点。要求:查出每个节点的根节点,如图2所示。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • 本文详细介绍了如何处理Oracle数据库中的ORA-00227错误,即控制文件中检测到损坏块的问题,并提供了具体的解决方案。 ... [详细]
  • 代码生成器实战教程:提升编程效率的利器
    本系列文章旨在通过一系列实践案例,详细介绍如何利用代码生成器提高开发效率。本文将引导您完成从下载安装到实际应用的全过程。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
author-avatar
laosiji
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有