ylbtech-.NET Framework: SQL Server 数据库项目

SQL Server 数据库项目

类型:SQL Server

用于创建 SQL Server 数据库的项目

1. 新建“SQL Server 数据库项目”​​

1-1、新建SQL Server 数据库项目,名称为“YlbTech.DataBase”

SQL Server 数据库项目_数据库

1-2、创建后

1-2-1、创建后数据库项目

1-2-2、项目右键-->添加-->添加项菜单


SQL Server 数据库项目_VS_02





SQL Server 数据库项目_数据库_03


1-2、项目右键,新建文件夹“Tables”

SQL Server 数据库项目_数据库项目_04


2. 在Tables文件夹上,新建 Categories 和 Products 表​​

2-0、Categories表 和 Products表 SQL脚本

SQL Server 数据库项目_sql_05SQL Server 数据库项目_数据库_06

go -- ============================================= -- 2,类别 -- ============================================= create table Categories ( CategoryID int identity(1,1) primary key,   --类别ID  [PK] CategoryName nvarchar(15) not null, --类别名称 [Description] ntext,                --说明 Picture image                       --图片 )   go -- ============================================= --3,产品  -- ============================================= create table Products ( ProductID int identity primary key, --产品ID『PK』 ProductName nvarchar(40) not null,  --产品名称 CategoryID int foreign key references Categories(CategoryID),                   --类别ID QuantityPerUnit nvarchar(20),   --单位数量   UnitPrice money,            --单价 UnitsInStock smallint default(0) check(UnitsInStock>=0),     --库存量 UnitsOnOrder smallint default(0) check(UnitsOnOrder>=0),     --订购量 ReorderLevel smallint default(0) check(ReorderLevel>=0),     --再订购量 Discontinued bit            --中止:0=正常;1=中止 )

View Code

2-1、创建“Categories”表

SQL Server 数据库项目_sql_07

2-1-2、新建“Categories表”后的界面

SQL Server 数据库项目_数据库_08

2-1-3、创建后的“Categories表”

SQL Server 数据库项目_SQL Server_09

2-1-3-1、Categories表创建后的生成的脚本

SQL Server 数据库项目_sql_05SQL Server 数据库项目_数据库_06

CREATE TABLE [dbo].[Categories] (     [CategoryId] INT NOT NULL IDENTITY ,      [CategoryName] NVARCHAR(50) NULL,      [Description] NTEXT NOT NULL,      [Picture] IMAGE NOT NULL,      CONSTRAINT [PK_Categories] PRIMARY KEY ([CategoryId])  )  GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'类别ID',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Categories',     @level2type = N'COLUMN',     @level2name = N'CategoryId' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'类别名称',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Categories',     @level2type = N'COLUMN',     @level2name = N'CategoryName' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'秒杀',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Categories',     @level2type = N'COLUMN',     @level2name = N'Description' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'图片',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Categories',     @level2type = N'COLUMN',     @level2name = N'Picture'

Categories SQL

2-2、

2-3、

3. 添加/删除约束​​

3-1、 添加自增长标识

SQL Server 数据库项目_sql_12

3-2、 添加主键


3-2-2、添加主键

3-2-3、删除主键


SQL Server 数据库项目_VS_13

SQL Server 数据库项目_SQL Server_14



3-3、 添加外键

3-3-1、添加外键

SQL Server 数据库项目_VS_15

3-3-2、添加“CategoryID”外键关联Categories表的CategoryId列

SQL Server 数据库项目_VS_16


3-4、 添加检查约束

3-4-1、添加检查约束

SQL Server 数据库项目_SQL Server_17

3-4-2、为“UnitsInOrder”添加检查约束,值应大于等于0

SQL Server 数据库项目_数据库项目_18


3-5、 添加默认值

3-6、 是否允许为空

SQL Server 数据库项目_sql_19

3-7、

4. 列属性1​​

4-1、





SQL Server 数据库项目_数据库项目_20

SQL Server 数据库项目_数据库_21

SQL Server 数据库项目_数据库项目_22


4-2、

5. 比较架构​​

5-1、项目右键,选择“架构比较”

SQL Server 数据库项目_VS_23

5-1-1、 SQL架构比较窗口

SQL Server 数据库项目_数据库_24

5-1-1-1、单机“选择目标...”出现窗口如下:

SQL Server 数据库项目_数据库项目_25

5-1-1-2、单机“选择连接...”出现窗口如下:




SQL Server 数据库项目_数据库项目_26

SQL Server 数据库项目_sql_27



5-1-1-2-1、高级属性





SQL Server 数据库项目_SQL Server_28

SQL Server 数据库项目_数据库_29





SQL Server 数据库项目_数据库_30

SQL Server 数据库项目_sql_31



5-1-3、数据库连接成功

SQL Server 数据库项目_数据库项目_32

5-2、 “比较”架构


SQL Server 数据库项目_数据库项目_33



5-3、“更新”架构


图-1


SQL Server 数据库项目_数据库项目_34


图-2


SQL Server 数据库项目_sql_35



5-4、“更新”架构成功

SQL Server 数据库项目_数据库_36

5-4-1、查看预览

SQL Server 数据库项目_sql_05SQL Server 数据库项目_数据库_06

** 警告      将 SQL Server 2016 指定为目标平台的项目可能遇到与 SQL Server 2014 有关的兼容性问题。      项目和目标数据库的排序规则设置不同。可能会发生部署错误。      将 SQL Server 2016 指定为目标平台的项目可能遇到与 SQL Server 2014 有关的兼容性问题。      项目和目标数据库的排序规则设置不同。可能会发生部署错误。  ** 突出显示      将重新生成的表        无      将删除的聚集索引        无      将创建的聚集索引        无      可能的数据问题        无  ** 用户操作      创建        [dbo].[Categories] (表)        [dbo].[Categories].[CategoryId].[MS_Description] (扩展属性)        [dbo].[Categories].[CategoryName].[MS_Description] (扩展属性)        [dbo].[Categories].[Description].[MS_Description] (扩展属性)        [dbo].[Categories].[Picture].[MS_Description] (扩展属性)  ** 支持操作

查看预览文件

5-4-2、查看脚本

SQL Server 数据库项目_sql_05SQL Server 数据库项目_数据库_06

/* NorthwindYlbTech 的部署脚本  此代码由工具生成。 如果重新生成此代码,则对此文件的更改可能导致 不正确的行为并将丢失。 */  GO SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;  SET NUMERIC_ROUNDABORT OFF;   GO :setvar DatabaseName "NorthwindYlbTech" :setvar DefaultFilePrefix "NorthwindYlbTech" :setvar DefaultDataPath "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\" :setvar DefaultLogPath "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\"  GO :on error exit GO /* 请检测 SQLCMD 模式,如果不支持 SQLCMD 模式,请禁用脚本执行。 要在启用 SQLCMD 模式后重新启用脚本,请执行: SET NOEXEC OFF;  */ :setvar __IsSqlCmdEnabled "True" GO IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True'     BEGIN         PRINT N'要成功执行此脚本,必须启用 SQLCMD 模式。';         SET NOEXEC ON;     END   GO USE [$(DatabaseName)];   GO PRINT N'已跳过具有键 35cbb56d-7deb-4abd-887a-da543c0bbccd, 9e28fbb1-5bde-4095-86c3-3da83fdec94f 的重命名重构操作,不会将元素 [dbo].[Categories].[Id] (SqlSimpleColumn) 重命名为 CategoryId';   GO PRINT N'正在创建 [dbo].[Categories]...';   GO CREATE TABLE [dbo].[Categories] (     [CategoryId]   INT           IDENTITY (1, 1) NOT NULL,     [CategoryName] NVARCHAR (50) NULL,     [Description]  NTEXT         NOT NULL,     [Picture]      IMAGE         NOT NULL,     CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED ([CategoryId] ASC) );   GO PRINT N'正在创建 [dbo].[Categories].[CategoryId].[MS_Description]...';   GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'类别ID', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Categories', @level2type = N'COLUMN', @level2name = N'CategoryId';   GO PRINT N'正在创建 [dbo].[Categories].[CategoryName].[MS_Description]...';   GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'类别名称', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Categories', @level2type = N'COLUMN', @level2name = N'CategoryName';   GO PRINT N'正在创建 [dbo].[Categories].[Description].[MS_Description]...';   GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'秒杀', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Categories', @level2type = N'COLUMN', @level2name = N'Description';   GO PRINT N'正在创建 [dbo].[Categories].[Picture].[MS_Description]...';   GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'图片', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Categories', @level2type = N'COLUMN', @level2name = N'Picture';   GO -- 正在重构步骤以使用已部署的事务日志更新目标服务器  IF OBJECT_ID(N'dbo.__RefactorLog') IS NULL BEGIN     CREATE TABLE [dbo].[__RefactorLog] (OperationKey UNIQUEIDENTIFIER NOT NULL PRIMARY KEY)     EXEC sp_addextendedproperty N'microsoft_database_tools_support', N'refactoring log', N'schema', N'dbo', N'table', N'__RefactorLog' END GO IF NOT EXISTS (SELECT OperationKey FROM [dbo].[__RefactorLog] WHERE OperationKey = '35cbb56d-7deb-4abd-887a-da543c0bbccd') INSERT INTO [dbo].[__RefactorLog] (OperationKey) values ('35cbb56d-7deb-4abd-887a-da543c0bbccd') IF NOT EXISTS (SELECT OperationKey FROM [dbo].[__RefactorLog] WHERE OperationKey = '9e28fbb1-5bde-4095-86c3-3da83fdec94f') INSERT INTO [dbo].[__RefactorLog] (OperationKey) values ('9e28fbb1-5bde-4095-86c3-3da83fdec94f')  GO  GO PRINT N'更新完成。';   GO

查看脚本文件

5-4-3、查看结果

SQL Server 数据库项目_sql_05SQL Server 数据库项目_数据库_06

已跳过具有键 35cbb56d-7deb-4abd-887a-da543c0bbccd, 9e28fbb1-5bde-4095-86c3-3da83fdec94f 的重命名重构操作,不会将元素 [dbo].[Categories].[Id] (SqlSimpleColumn) 重命名为 CategoryId 正在创建 [dbo].[Categories]... 正在创建 [dbo].[Categories].[CategoryId].[MS_Description]... 正在创建 [dbo].[Categories].[CategoryName].[MS_Description]... 正在创建 [dbo].[Categories].[Description].[MS_Description]... 正在创建 [dbo].[Categories].[Picture].[MS_Description]... 更新完成。

查看结果文件

5-5、


6. 导入-->脚本(*.sql)​​

6-0、导入脚本文件

SQL Server 数据库项目_sql_05SQL Server 数据库项目_数据库_06

go  -- =============================================  -- 1,供应商  -- =============================================  create table Suppliers  (  SupplierID int identity(1,1) primary key,   --供应商ID [PK]  CompanyName nvarchar(40) not null,          --公司名称  ContactName nvarchar(30),           --联系人姓名  ContactTitle nvarchar(30),          --联系人头衔  [Address] nvarchar(60),             --地址     City nvarchar(15),                  --城市  Region nvarchar(15),                --地区  PostalCode nvarchar(15),            --邮政编码  Country nvarchar(24),               --国家  Phone nvarchar(24),                 --电话     Fax nvarchar(24),           --传真  HomePage ntext              --主页  )  go -- =============================================  -- 8,运货商  -- =============================================  create table Shippers  (  ShipperID int identity primary key,     --运货商ID【PK】  CompanyName nvarchar(40) not null,      --公司名称  Phone nvarchar(24)                      --电话  )

Import Sql

6-1、项目右键,导入-->脚本(*.sql)

SQL Server 数据库项目_VS_45

6-1-1、导入 SQL 脚本文件-step1

SQL Server 数据库项目_数据库项目_46

6-1-2、step2

SQL Server 数据库项目_数据库项目_47

6-1-3、step3

SQL Server 数据库项目_sql_48


6-2、导入后的目录

SQL Server 数据库项目_VS_49

6-3、

6-4、

6-5、

7. 从数据库向架构更新对象(表等)​​

7-1、SQL Server项目数据库与数据库比较

SQL Server 数据库项目_sql_50

7-2、SQL Server数据库与项目数据库比较

SQL Server 数据库项目_SQL Server_51

7-2-1、更新后的项目中,新增Employees.sql 文件

SQL Server 数据库项目_数据库项目_52

7-3、

8. 在项目中,新建表,然后用SQL脚本创建

8-1、step1

SQL Server 数据库项目_VS_53

8-2、step2

SQL Server 数据库项目_SQL Server_54

8-3、

9.​​


10. 附件资料

10-1、Products 表系统创建脚本

SQL Server 数据库项目_sql_05SQL Server 数据库项目_数据库_06

CREATE TABLE [dbo].[Products] (     [ProductId] INT NOT NULL PRIMARY KEY IDENTITY,      [ProductName] NVARCHAR(50) NOT NULL,      [CategoryId] INT NULL,      [QuantityPerUnit] NVARCHAR(50) NULL,      [UnitPrice] MONEY NULL,      [UnitsInStock] INT NULL ,      [UnitsInOrder] INT NULL ,      [ReorderLevel] INT NULL,      [Discontinued] BIT NULL,      CONSTRAINT [CK_Products_UnitsInStock] CHECK (UnitsInStock>=0),      CONSTRAINT [CK_Products_UnitsInOrder] CHECK (UnitsInOrder>=0),      CONSTRAINT [CK_Products_ReorderLevel] CHECK (ReorderLevel>=0),      CONSTRAINT [FK_Products_Categories] FOREIGN KEY (CategoryId) REFERENCES Categories(CategoryId) )  GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'产品ID【 PK,ID】',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Products',     @level2type = N'COLUMN',     @level2name = N'ProductId' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'产品名称',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Products',     @level2type = N'COLUMN',     @level2name = N'ProductName' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'类别ID【 FK】',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Products',     @level2type = N'COLUMN',     @level2name = N'CategoryId' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'单位数量',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Products',     @level2type = N'COLUMN',     @level2name = N'QuantityPerUnit' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'单价',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Products',     @level2type = N'COLUMN',     @level2name = N'UnitPrice' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'库存量',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Products',     @level2type = N'COLUMN',     @level2name = N'UnitsInStock' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'订购量',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Products',     @level2type = N'COLUMN',     @level2name = N'UnitsInOrder' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'再购数量',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Products',     @level2type = N'COLUMN',     @level2name = N'ReorderLevel' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'中止标识:0=正常;1=中止',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Products',     @level2type = N'COLUMN',     @level2name = N'Discontinued' GO EXEC sp_addextendedproperty @name = N'MS_Description',     @value = N'产品表',     @level0type = N'SCHEMA',     @level0name = N'dbo',     @level1type = N'TABLE',     @level1name = N'Products',     @level2type = NULL,     @level2name = NULL

Products SQL