三级的阶梯

作者: Gregory
Larsen
,
2017/08/02 (首回出版: 二零一三/11/09) 

翻译:谢雪妮,许雅莉,赖慧芳,刘琼滨

译文:

系列

 

该文章是阶梯种类的一有个别:T-SQL DML的台阶。

 

本条阶梯将为您提供二个骨干的接头,即什么选择SQL Server的翻译 SQL(T-
SQL)的白话和对SQL
Server表格中的数据举办拍卖。DML是数码操纵语言,是拍卖多少的言语的地方。它归纳语句选拔、插入、更新和删除。这一个阶梯也将提供部分SQL语言的野史和一些有关集合理论的貌似概念。每一层都将确立在以前的水准之上,由此当您成功时,您将很好地打听怎么从SQL
Server中选用和改动数据。

 

在上一流的楼梯上,笔者提供了有关基本选项语句和SQL历史的音讯,那些级别为明白什么寻找数据以及SQL环境是如何衍变的提供了基础,因为技术和技术化解方案已经变更了晚点工作。在这几个级别,小编将探索怎么着兑现基于关系模型的归纳SQL
Server数据库。在始发创制数据库在此之前,首先让本人介绍一下涉嫌模型的创建者的有些历史。

 

关周详据建立模型之父

 

关周全据库设计的定义首先由埃德加 F建议。.
在1966年,Codd公布杂文的标题为“大型共享数据银行的数据涉嫌模型”。
Codd在IBM工作时支付了那种建立模型理论。BM在Codd的数目建立模型概念上跳得不够快,因而并不是首先个供应关周到据库引擎的供应商,它采用了Codd的新关周详据建立模型理论。Codd的涉及建立模型概念现在是用来在SQL
Server和任何关全面据库引擎中创设关周详据库的框架。Codd出生于英格兰的阿布贾岛,在参预皇家陆军前面学习了数学和化学,成为了第三回世界大战的飞银行人士1946年,他搬到London,起首在IBM工作,在那边他是一名数学程序员。他漂流了有个别年,最后搬到加州,在IBMSan Jose商量实验室工作。直到20世纪90时期,当她的健康境况倒霉迫使他退休时,Codd继续全力健全并证实了关周详据模型的合理性。2000年5月1十四日,Codd与世长辞,享年柒拾六周岁。

 

mobile.365-838.com,在SQL Server中达成关系模型

 

本条阶梯不是用来教您关周全据建立模型,或数据库设计,而是教你什么样从二个涉及模型创造1个SQL
Server数据库。可是在作者为开创SQL
Server数据库提供代码块在此以前,大家第壹必要追究2个将被完成的关周全据模型。小编的简要模型将包括部分实体(数据表),个中有主键定义和见仁见智实体之间的有的提到(外键约束)。

 

自身的简易的涉嫌模型将是一个简易的小吃摊预约系统。那么些预定系统须要跟踪客户预定新闻。图1注脚了那些不难的关系模型,小编将使用t

  • sql实现它:

mobile.365-838.com 1

经过回想那么些模型,您能够看来它富含众多实体(由方框代表)来跟踪预定相关新闻。种种实体都由局地性质(列)组成,当中1个或四个属性被标识为主键(粗体和下划线的称号)。也象征实体之间的有的关联(以箭头表示),以展示不一样的实业之间是怎样相互关联的。小编将采取实体、属性、主键和涉及的模子,然后开发贰个物理SQL
Server数据库,它代表此提到模型的布署性。要从这一个模型营造物理数据库,我们供给在SQL
Server中分辨基于此模型定义的例外目的。对于图第11中学的每一个实体或框,笔者将在SQL
Server中开创贰个表。对于每一个实体的每一个属性,笔者将在关系的表中创造叁个列。对于各类主键,作者将创设2个唯一的集群索引(注意,使用唯一的非聚集索引也得以创设主键)。有关索引的越多音信,请参见http://www
.sqlservercentral.com/stairway/72399/).。最终,对于每种关系,笔者将创建1个外键约束。要从头构建作者的数据库,笔者首先要求创设1个SQL
Server数据库来保存本人安排成立的装有新数据库对象。我的数据库将被称为房间预约。笔者将动用以下的t

  • sql代码创造自身的数据库

    CREATE DATABASE RoomReservation;

要从自家的模子中早先营造笔者的房间预定数据库对象,小编将创立表对象。要在sql
server中创设一个表,笔者需求运用创制表语句。通过创办表语句,作者将能够定义每种表中的每一个表和全体列。下边是创设SQL
Server表的简单语法

CREATE TABLE <table_name> (
<column_definition> [,…N]);

Where:

<table_name> = Name of table
<column_definition> = column_name data_type,[NULL | NOT NULL]

For complete syntax of the CREATE TABLE statement refer to SQL Server
Books Online.

The first table I create will be the Customer table, created using the
code in Listing 1.

USE RoomReservation;
GO
CREATE TABLE dbo.Customer (
    CustomerId INT NOT NULL,
    FirstName NVARCHAR(50) NOT NULL, 
    LastName NVARCHAR(50) NOT NULL,
    Address1 NVARCHAR(100) NOT NULL, 
    Address2 NVARCHAR(100) NULL,
    PhoneNumber NVARCHAR(22) NOT NULL, 
    EmailAddress VARCHAR(100) NULL, 
    City VARCHAR(100) NOT NULL,
    StateProvince NVARCHAR(100) NOT NULL,
    PostalCode NVARCHAR(100) NOT NULL);

 

清单1:创建Customer表

在那段代码中,当自家成立自身的Customer表时,小编创制了自家索要的持有列,但本人还内定了在插入或更新记录时,该列是或不是须求多个值。作者通过在一些列上钦定非空值来达成那一点,而此外列则钦定为空值。

假定一个列被定义为不为空,那表示你不可能创制一个记录,除非您用多少个实际值填充这几个列。而选择空值规范定义3个列意味着您可以创造一行,而不必为那个列钦赐1个值,大概另一种艺术是,该列允许空值。小编在创制表的口舌上面笔者同意列地址2和邮箱地址支持空值,而享有其余的柱子须求值将提供创建二个行时。

本条创立表语句并不曾完全定义自个儿的客户表,因为它是在本人上边的关全面据库模型中代表的。小编还索要创造2个主键约束的列ID。那几个主键约束将确定保障该表中尚无八个记录具有同等的客户编号码的值。那个主键约束将保证该表中绝非四个记录具有同样的客户编号码的值。创制主键的代码如清单2所示

USE RoomReservation;
GO
CREATE TABLE dbo.Customer (
    CustomerId INT NOT NULL CONSTRAINT PK_Customer PRIMARY KEY,
    FirstName NVARCHAR(50) NOT NULL, 
    LastName NVARCHAR(50) NOT NULL,
    Address1 NVARCHAR(100) NOT NULL, 
    Address2 NVARCHAR(100) NULL,
    PhoneNumber NVARCHAR(22) NOT NULL, 
    EmailAddress NVARCHAR(100) NULL, 
    City VARCHAR(100) NOT NULL,
    StateProvince NVARCHAR(100) NOT NULL,
    PostalCode NVARCHAR(100) NOT NULL);

清单2:向客户表添加主键约束
此表语句向客户表添加了主键约束。该主键将在聚集索引命名pk_customer窗体的创建。在翻译SQL语言中,通常有不止一种方法来做同样的事情。另外,我可以通过运行清单3中的创建表语句一次性创建我的客户表和主键。

 

USE RoomReservation;
GO
CREATE TABLE dbo.Customer (
    CustomerId INT NOT NULL CONSTRAINT PK_Customer PRIMARY KEY,
    FirstName NVARCHAR(50) NOT NULL, 
    LastName NVARCHAR(50) NOT NULL,
    Address1 NVARCHAR(100) NOT NULL, 
    Address2 NVARCHAR(100) NULL,
    PhoneNumber NVARCHAR(22) NOT NULL, 
    EmailAddress NVARCHAR(100) NULL, 
    City VARCHAR(100) NOT NULL,
    StateProvince NVARCHAR(100) NOT NULL,
    PostalCode NVARCHAR(100) NOT NULL);
清单3:用主键创建客户表的另一种方法
在这一点上,我已经向您展示了如何创建具有定义主键的表。唯一要展示给您的是如何创建外键约束。但在此之前,让我先向您提供创建上述关系数据库模型中其余表和主键的脚本。您可以在清单4中找到它。

USE RoomReservation;
GO

CREATE TABLE dbo.Reservation (
    ReservationId INT NOT NULL, 
    ArrivalDate DATETIME NOT NULL,
    DepartureDate DATETIME NOT NULL,
    DailyRate SMALLMONEY NOT NULL,
    ReservationStatusID INT NOT NULL,
    CustomerId INT NOT NULL, 
    RoomTypeID INT NOT NULL);

ALTER TABLE dbo.Reservation ADD CONSTRAINT
    PK_Reservation PRIMARY KEY CLUSTERED (ReservationId);

CREATE TABLE dbo.RoomType (
    RoomTypeId INT NOT NULL,
    RoomDesc NVARCHAR(1000) NOT NULL); 

ALTER TABLE dbo.RoomType ADD CONSTRAINT
    PK_RoomType PRIMARY KEY CLUSTERED (RoomTypeId);

CREATE TABLE dbo.ReservationStatus (
    ReservationStatusId INT NOT NULL, 
    ReservationStatusDesc NVARCHAR(50) NOT NULL);

ALTER TABLE dbo.ReservationStatus ADD CONSTRAINT
    PK_ReservationStatus PRIMARY KEY CLUSTERED (ReservationStatusId);

CREATE TABLE dbo.PaymentType (
    PaymentTypeId INT NOT NULL, 
    PaymentTypeDesc NVARCHAR(50) NOT NULL); 

ALTER TABLE dbo.PaymentType ADD CONSTRAINT
    PK_PaymentType PRIMARY KEY CLUSTERED (PaymentTypeId);

CREATE TABLE dbo.CustomerPaymentType (
    PaymentTypeId INT NOT NULL, 
    CustomerId INT NOT NULL, 
    PaymentNotes NVARCHAR(2000) NULL);

ALTER 
admin

网站地图xml地图