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

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

目录:

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

视频: 跟着Inty学SQL(SQL入门,初学者教程1) 2025
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 - 傻瓜

编辑的选择

在QuickBooks Online中使用批发帐单 - 虚拟

在QuickBooks Online中使用批发帐单 - 虚拟

QuickBooks Online为会计专业人员提供免费程序。您可以注册批发价格计划,也可以免费使用QBOA。如果你选择这样做(这是一个不错的选择!),你将需要知道如何管理的事情。从您的批发帐单订阅中删除客户有时候,事情并不是这样...

基于零基础的预算与QuickBooks 2012 - 傻瓜

基于零基础的预算与QuickBooks 2012 - 傻瓜

零基预算是一个非常有用和常用的预算策略在使用QuickBooks 2012之前,您应该先了解一下。基于零的预算与顶级预算相反。零基预算从下到上工作。零基预算始于个人收入,费用,资产,负债和所有者权益账户。它检查一个特定的...

在Sage Timeslips中10个有用的键盘快捷键 - 虚拟键盘

在Sage Timeslips中10个有用的键盘快捷键 - 虚拟键盘

键盘快捷键可以是Sage Timeslips 。启动或保存一张单据,将昨天,今天或明天的日期插入日期字段,并用一个或两个按键打开和关闭定时器。以下是十大最爱。按下它做什么Ctrl + N开始一个新的投票,而工作在...

编辑的选择

可以在Photoshop Elements 11中的任意形状图层上绘制多个图形 - 虚拟模型

可以在Photoshop Elements 11中的任意形状图层上绘制多个图形 - 虚拟模型

Photoshop Elements 11中创建的任何形状图层上的图形。您可以按照与选择相同的方式添加,减去,排除重叠和相交形状。请遵循以下步骤:创建第一个形状后,在工具选项:添加到形状区域中选择一个状态按钮:...

使用读卡器将图像下载到Mac上 - 傻瓜

使用读卡器将图像下载到Mac上 - 傻瓜

您的相机可能有一个USB端口,电缆,您可以使用下载您的图像。这种方法使用相机电池电力,也相当缓慢。如果您使用读卡器,则会更快地将图像存入计算机。如果您下载了大量的图像,请考虑购买FireWire读卡器; ...

在Photoshop Elements 10中创建形状图层后,在Photoshop Elements 10中绘制多个图形 - 虚拟形状

在Photoshop Elements 10中创建形状图层后,在Photoshop Elements 10中绘制多个图形 - 虚拟形状

可以在该图层上绘制其他形状。您可以按照与选择相同的方式添加,减去,重叠和相交形状。请记住,当您在元素中创建一个形状时,您正在创建一个基于矢量的元素。向量在数学上描述形状。 ...

编辑的选择

在您的IOS应用程序中添加模态视图 - 在iPhone和iPad上虚拟视图

在您的IOS应用程序中添加模态视图 - 在iPhone和iPad上虚拟视图

对于那些希望用户(或用户想要)在应用程序流之外执行某些操作的情况非常适用。而不是使用带有后退按钮的导航控制器,而是显示一个模式视图,其中的控件允许用户选择一个动作或...

Android应用程序开发:你的Twitter应用程序的文件 - 傻瓜

Android应用程序开发:你的Twitter应用程序的文件 - 傻瓜

,这个Android Studio项目包含大约100个文件和大约170个不同的文件夹。要制作Android Twitter应用程序,您需要专注于该项目的MainActivity。 java文件。但其他一些文件需要注意。 Twitter4J API jar文件Android没有内置的通信支持...