SQL Server 数据库项目
ylbtech-.NET Framework: SQL Server 数据库项目 |
SQL Server 数据库项目
类型:SQL Server
用于创建 SQL Server 数据库的项目
1. 新建“SQL Server 数据库项目”返回顶部 |
1-1、新建SQL Server 数据库项目,名称为“YlbTech.DataBase”
1-2、创建后
1-2-1、创建后数据库项目 | 1-2-2、项目右键-->添加-->添加项菜单 | |
|
1-2、项目右键,新建文件夹“Tables”
2. 在Tables文件夹上,新建 Categories 和 Products 表返回顶部 |
2-0、Categories表 和 Products表 SQL脚本
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=中止 )
2-1、创建“Categories”表
2-1-2、新建“Categories表”后的界面
2-1-3、创建后的“Categories表”
2-1-3-1、Categories表创建后的生成的脚本
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'
2-2、
2-3、
3. 添加/删除约束返回顶部 |
3-1、 添加自增长标识
3-2、 添加主键
3-2-2、添加主键 | 3-2-3、删除主键 | |
3-3、 添加外键
3-3-1、添加外键
3-3-2、添加“CategoryID”外键关联Categories表的CategoryId列
3-4、 添加检查约束
3-4-1、添加检查约束
3-4-2、为“UnitsInOrder”添加检查约束,值应大于等于0
3-5、 添加默认值
3-6、 是否允许为空
3-7、
4. 列属性1返回顶部 |
4-1、
4-2、
5. 比较架构返回顶部 |
5-1、项目右键,选择“架构比较”
5-1-1、 SQL架构比较窗口
5-1-1-1、单机“选择目标...”出现窗口如下:
5-1-1-2、单机“选择连接...”出现窗口如下:
5-1-1-2-1、高级属性
5-1-3、数据库连接成功
5-2、 “比较”架构
5-3、“更新”架构
图-1 | |
图-2 | |
5-4、“更新”架构成功
5-4-1、查看预览
** 警告 将 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、查看脚本
/* 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、查看结果
已跳过具有键 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、导入脚本文件
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) --电话 )
6-1、项目右键,导入-->脚本(*.sql)
6-1-1、导入 SQL 脚本文件-step1
6-1-2、step2
6-1-3、step3
6-2、导入后的目录
6-3、
6-4、
6-5、
7. 从数据库向架构更新对象(表等)返回顶部 |
7-1、SQL Server项目数据库与数据库比较
7-2、SQL Server数据库与项目数据库比较
7-2-1、更新后的项目中,新增Employees.sql 文件
7-3、
8. 在项目中,新建表,然后用SQL脚本创建返回顶部 |
8-1、step1
8-2、step2
8-3、
9.返回顶部 |
10. 附件资料返回顶部 |
10-1、Products 表系统创建脚本
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
10-2、
11.返回顶部 |
11-1、MSDN
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |