1.创建一个数据库名为"erp"
- 主数据文件:初始容量为5MB,最大容量为50MB,递增量为1MB,其余参数自设。
- 事务日志文件:初始容量为3MB,最大容量为20MB,递增量为10%,其余参数自设。
创建的数据库如下:
二、在erp数据库下创建两个表:

- 创建"erp" 数据库
首先建立一个"新建查询"然后在"新建查询"的页面写入以下代码后点击执行:
CREATE DATABASE erp
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'erp', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\erp.mdf' , SIZE = 8192KB , MAXSIZE = 51200KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'erp_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\erp_log.ldf' , SIZE = 3072KB , MAXSIZE = 20480KB , FILEGROWTH = 10%)
WITH CATALOG_COLLATION = DATABASE_DEFAULT, LEDGER = OFF
GO
代码执行完成后erp表建立完成,点击刷新即可看到

二、在"erp"数据库下创建表 ( 请注意完整性的设计 )
(1)创建"部门表"
首先建立一个"新建查询"然后在"新建查询"的页面写入以下代码后点击执行:
USE erp
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE dbo.C(
CNO nchar(10) NOT NULL,
CNAME varchar(30) NOT NULL,
CNumber int NULL,
CONSTRAINT PK_C PRIMARY KEY CLUSTERED
(
CNO ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON PRIMARY
) ON PRIMARY
GO

- 创建"职工表"
首先建立一个"新建查询"然后在"新建查询"的页面写入以下代码后点击执行:
CREATE TABLE dbo.S(
SNO char(6) NOT NULL,
Sname varchar(30) NOT NULL,
Sex char(2) NULL,
Sphone int NOT NULL,
Sadress varchar(50) NULL,
CNO char(10) NULL,
CONSTRAINT PK_S PRIMARY KEY CLUSTERED
(
SNO ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON PRIMARY,
CONSTRAINT IX_S UNIQUE NONCLUSTERED
(
Sphone ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON PRIMARY
) ON PRIMARY
GO
ALTER TABLE dbo.S ADD CONSTRAINT DF_S_Sex DEFAULT ('男') FOR Sex
GO
ALTER TABLE dbo.S WITH CHECK ADD CONSTRAINT CK_S CHECK ((Sex='男' OR Sex='女'))
GO
ALTER TABLE dbo.S CHECK CONSTRAINT CK_S
GO
执行后生成的页面属性:

三、请插入记录验证完整性。
- 正确插入数据
(1)部门表(3条记录)
点击"新建查询"建立一新的页面输入一下代码对所需数据进行插入:
use erp
INSERT INTO A(CNO, Cname, Cnumber )
VALUES('S4', '文员', '50')
INSERT INTO A(CNO, Cname, Cnumber )
VALUES('S5', '董事', '12')
INSERT INTO A(CNO, Cname, Cnumber )
VALUES('S6', '金融操盘手','30')
代码输入后点击执行将数据插入到表A中去,然后用代码
use erp
select * from A
对表里数据进行查询结果如下:

- 职工表(3条记录)
点击"新建查询"建立一新的页面输入一下代码对所需数据进行插入:
use erp
INSERT INTO S(SNO, Sname, Sex,Sphone,Sadress,CNO )
VALUES('I1', '空心木偶', '男','13071603','广东茂名','S1')
INSERT INTO S(SNO, Sname, Sex,Sphone,Sadress,CNO )
VALUES('I2', '小红', '女','13071604','广东深圳','S2')
INSERT INTO S(SNO, Sname, Sex,Sphone,Sadress,CNO )
VALUES('I3', '小梓', '男','13071605','广东广州','S3')
代码输入后点击执行将数据插入到表A中去,然后用代码
use erp
select * from S
- 完整性验证
(1)违反"部门表"的PRIMARY KEY约束
由前面可以知道"部门号"是表A的主键,可以使用INSERT语句插入在表A中添加与已有数据相同的部门号,最后使用SELECT查询所插入的数据,观察运行后的结果,如果插入显示"部门号"重复从而插入失败即可验证部门表的PRIMARY KEY(主键)约束,代码如下:
USE ERP
INSERT INTO A(CNO, Cname, Cnumber )
VALUES('S1', '经理', '8')
select * from A
运行结果如下:

(2)违反"部门表"的NOT NULL约束
由前面表的设计可知"部门号"和"部门名称"都是NOT NULL,所以可以使用INSERT语句在部门表A中添加数据,在"部门号"和"部门名称"插入的数据为空,最后使用SELECT查询所插入的数据,从而验证部门表的NOT NULL约束,代码如下:
USE ERP
INSERT INTO A(CNO, Cname, Cnumber )
VALUES('NULL', 'NULL', '8')
select * from A
运行的结果如下:

(3)违反"职工表"的PRIMARY KEY约束
由前面可以知道"职工号"是表S的主键,可以使用INSERT语句插入在表S中添加与已有数据相同的职工号,最后使用SELECT查询所插入的数据,观察运行后的结果,如果插入显示"职工号"重复从而插入失败即可验证职工表的PRIMARY KEY(主键)约束,代码如下:
USE ERP
INSERT INTO S(SNO, Sname, Sex,Sphone,Sadress,CNO )
VALUES('I1', '刘德华', '男','13071683','广东湛江','S9')
运行的结果如下:
