解析SQL Server数据利用在不同的数据库中
在软件开发的初始阶段,开发商们总是想把全部系统的最小的细节设计好了,然后再往单线程的编写代码。这样软件开发完成需要很长时间,但开发商们一直都在这么做。
所以开发者不得不往缩小他们的野心,先设计好一个小系统,然而这个小系统只是解决了全部系统艰苦中的一部分。这导致了由不同的团队设计和创立的很多小系统几乎都不能相互之间兼容。
目前,很多组织都聘请了数据库建模者或者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, 解析SQL Server数据利用在不同的数据库中
-
打酱油 -
震惊 -
呵呵 -
赞 -
鄙视

- 不吐不快,赶紧来一发!
- 使用SQL Server内存数据库前需要理解的三个问题
- PHP连接 SQLSERVER 注意事项(经典中的经典)
- Php+SqlServer实现分页显示
- Linux下php连接sqlserver的办法
- php SQLserver 导入 Mysql
- PHP模拟SQLServer的两个日期处理函数
- php与sqlserver中文数据为乱码的解决
- Linux下PHP连接MS SQLServer的办法
- 微软为PHP添加SQL Server LocalDb及SQL Server AlwaysOn集群支持
- 远程连接sql server 2000数据库失败解决办法

- 新闻APP后端系统架构成长之路 - 高可用架构设计
- PHP基础: CLI模式开发不需要任何一种Web服务器
- 基础教程:svn命令在linux下的使用
- 亿级Web系统搭建——单机到分布式集群
- HTTP简介,http是一个属于应用层的面向对象的协议
- Serverless技术架构,传说中的FAAS(Function as a Service),极简运维,无限扩容
- PHP漏洞全解(六)跨网站请求伪造
- php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
- PHP学习路线以及10个PHP优化技巧
- 适用于PHP初学者的学习线路和建议
- 2016PHP技术盛会:如何编写可测试的代码
- MySQL改密码报错:ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)
- phpmyadmin导入导出数据库文件最大限制的解决方法
- Linux环境下MySQL数据库大小写区分问题
- php 5.4中php-fpm 的重启、终止操作命令
- Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用
- Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
- Key/Value之王Memcached初探:一、掀起Memcached的盖头来
- NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
Copyright © 1998 - 2015 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有
