个人理财 有时,如果要使用SQL - 傻瓜

有时,如果要使用SQL - 傻瓜

目录:

视频: 跟着Inty学SQL(SQL入门,初学者教程1) 2024

视频: 跟着Inty学SQL(SQL入门,初学者教程1) 2024
Anonim

有时,您想要从SQL中的CUSTOMER表中检索特定的信息。你不想看所有的东西 - 只有特定的列和行。你需要的是一个观点。

一个 视图 是一个虚拟表。在大多数实现中,视图没有独立的物理存在。视图的定义仅存在于数据库的元数据中,但数据来自您从中派生视图的一个或多个表格。视图的数据不是物理上重复的。

<! --1 - >

单表视图

如果您想要的信息存在于单个表中,则可以创建数据的单表视图。例如,假设您想查看所有居住在新罕布什尔州的客户的姓名和电话号码。您可以从仅包含所需数据的CUSTOMER表创建视图。以下SQL语句创建此视图:

CREATE VIEW NH_CUST AS SELECT CUSTOMER。名字,客户。姓氏,CUSTOMER。电话从客户的客户。国家='NH';

如果您的SQL实现假定所有表引用与FROM子句中的相同,则可以使用较少的键入来完成相同的任务。如果您的系统进行了合理的默认假设,则可以将语句缩减为以下几行:

创建视图NH_CUST作为选择姓,名,电话从CUSTOMER WHERE STATE ='NH';

虽然第二个版本更容易编写和读取,但更容易受到ALTER TABLE命令的干扰。对于这种简单的情况,这样的中断不是问题,它没有JOIN,但是当使用完全限定的名字时JOIN的视图更健壮。

多视图

通常情况下,您需要从两个或多个表中提取数据来回答您的问题。例如,假设您在体育用品商店工作,并且希望自去年开业以来,向所有购买了滑雪设备的客户发送促销邮件。

您需要来自CUSTOMER表,PRODUCT表,INVOICE表和INVOICE_LINE表的信息。您可以创建一个多视图来显示您需要的数据。每次使用视图时,都会反映自上次使用视图后在基础表中发生的任何更改。

该体育用品商店的数据库包含四个表格:客户,产品,发票和INVOICE_LINE。 CHAR <15>

数据类型
约束 CUSTOMER 客户ID INTEGER
NOT NULL 999(999)CHAR(20)
NOT NULL 街道 CHAR(25)
城市 CHAR(20)
CHAR(2)
邮编 > CHAR(10) 电话
CHAR(13) 产品
产品ID INTEGER
NOT NULL 名称 CHAR(25) 说明 > CHAR(30)
类别 CHAR(15)
VendorID INTEGER
VendorName CHAR(30)
INVOICE InvoiceNumber
INTEGER NOT NULL
CustomerID INTEGER InvoiceDate DATE
TotalSale NUMERIC(9,2)
TotalRemitted NUMERIC(9,2)
FormOfPayment > CHAR(10) INVOICE_LINE
LineNumber INTEGER
NOT NULL InvoiceNumber
INTEGER NOT NULL ProductID INTEGER
NOT NULL >数量 INTEGER SalePrice
NUMERIC(9,2) 请注意,某些列包含约束NOT NULL。这些列是它们各自表的主键,或者是您决定 必须
包含值的列。表的主键必须唯一标识每一行。为此,主键必须在每一行中包含一个非空值。 这些表格通过它们共有的列相互关联。以下列表描述了这些关系:
CUSTOMER表对INVOICE表承载 一对多关系

。一个客户可以进行多次采购,生成多个发票。但是,每张发票都只能处理一个客户。 INVOICE表与INVOICE_LINE表具有一对多的关系。一张发票可能有多行,但是每一行都会出现在一张发票上,而且只有一张。 PRODUCT表也与INVOICE_LINE表具有一对多的关系。产品可能出现在一个或多个发票上的多行上。但是,每条产品线只涉及一个产品。 CUSTOMER表通过公共CustomerID列链接到INVOICE表。 INVOICE表通过普通的InvoiceNumber列链接到INVOICE_LINE表。 PRODUCT表通过常见的ProductID列链接到INVOICE_LINE表。这些链接是使这个数据库成为

关系数据库的原因。

  • 要访问购买滑雪设备的客户的信息,您需要CUSTOMER表中的FirstName,LastName,Street,City,State和Zipcode;来自PRODUCT表的类别; INVOICE表中的InvoiceNumber;和INVOICE_LINE表中的LineNumber。您可以使用以下语句分阶段创建所需的视图: CREATE VIEW SKI_CUST1 AS SELECT姓,名,街道,城市,州,邮编,发票号码从客户加入发票使用(客户ID); CREATE VIEW SKI_CUST2 AS SELECT名字,姓氏,街道,城市,州,邮编,ProductID从SKI_CUST1加入INVOICE_LINE USING(InvoiceNumber); CREATE VIEW SKI_CUST3 AS SELECT名字,姓氏,街道,城市,州,邮编,类别从SKI_CUST2加入产品使用(ProductID); CREATE VIEW SKI_CUST AS SELECT DISTINCT名字,姓氏,街道,城市,州,从SKI_CUST3邮政编码WHERE CATEGORY ='滑雪'; 这些CREATE VIEW语句通过使用JOIN运算符组合来自多个表的数据。

  • 以下是四条CREATE VIEW语句的简要说明:

  • 第一条语句将CUSTOMER表中的列与INVOICE表的一列相结合,以创建SKI_CUST1视图。

第二个语句将SKI_CUST1与INVOICE_LINE表中的一列相结合,以创建SKI_CUST2视图。 第三个语句将SKI_CUST2与PRODUCT表中的列结合起来创建SKI_CUST3视图。 第四个语句过滤掉所有没有Ski类别的行。结果是一个视图(SKI_CUST),其中包含所有在Ski类别中至少购买一个产品的客户的名称和地址。

第四个CREATE VIEW的SELECT子句中的DISTINCT关键字可确保每个客户只有一个条目,即使某些客户多次购买滑雪项目也是如此。

有时,如果要使用SQL - 傻瓜

编辑的选择

如何在Word 2013中创建和修改目录 - 傻瓜

如何在Word 2013中创建和修改目录 - 傻瓜

正在使用Word 2013作为技术和教育书籍,您知道这些书籍通常包含目录(TOC),以帮助读者快速找到特定的章节。 TOC列出文档的每个标题,并列出其页码(适合打印副本)或提供一个实时超链接...

如何在Word 2013中创建表 - Word 2013中的虚拟表

如何在Word 2013中创建表 - Word 2013中的虚拟表

表用于在多列布局,如地址列表和时间表。您可能会惊讶于您可以在文档中找到表格的所有用途!表格是一个行和列的网格,有点像电子表格。在这里,学习如何在表格中插入表格...

如何在Word 2013中创建权威表 - 虚拟

如何在Word 2013中创建权威表 - 虚拟

权威表是常见的在一个非常长的法律文件中总结文件中引用的来源。通过在Word 2013文档中创建“权威表”,您可以为可能使用该文档的其他法律专业人员提供帮助,并需要验证引用的来源。一个表格

编辑的选择

如何计算企业的盈亏平衡点 - 傻瓜

如何计算企业的盈亏平衡点 - 傻瓜

以下是您想知道的关于您拥有的业务或操作:您想知道公司必须达到的销售收入才能达到收支平衡。换句话说,你想知道产生零利润的销售收入数量,而不是零损失。幸运的是,无论是这种计算,还是...

如何使用QuickBooks 2014评估财务费用 - 傻瓜

如何使用QuickBooks 2014评估财务费用 - 傻瓜

您可以告诉QuickBooks在逾期时评估财务费用客户发票。为此,您首先设置财务费用计算规则。完成此操作后,您可以通过选择QuickBooks命令轻松评估逾期金额的财务费用。设置财务费用规则要设置财务费用规则,请选择...

如何计算QuickBook 2012中的盈亏平衡点 - 傻瓜

如何计算QuickBook 2012中的盈亏平衡点 - 傻瓜

QuickBooks 2012允许您计算产品盈亏平衡点快速简单。盈亏平衡点显示产生零利润和零损失的销售收入。记得进行利润 - 成本 - 成本分析的公式吗?它是这样的:利润=(销售收入x毛利率百分比) - 固定成本而不是计算利润的基础上...

编辑的选择

裁剪你的足球指导目标到一个年龄段 - 假人

裁剪你的足球指导目标到一个年龄段 - 假人

有很多方法有的是天才的选手,有的可以做出令人目眩的捕捉,有的只是为了掌握比赛的基本技巧而挣扎。不管孩子们的优点和缺点如何,青少年都具有影响他们的一般特征。

10个最激烈的大学橄榄球对抗 - 傻瓜

10个最激烈的大学橄榄球对抗 - 傻瓜

引起一阵骚动,因为每个粉丝都有他或她自己的最爱。这份名单考虑到了一段时间的竞争,以及参赛队伍是否一直处于国家排名的前列。更多...