答题计时 22:18:17
答题卡
(1/1)
第一大题(共1题,满分100分)
1.主观题 (100分) 答案保存成功
【拓展训练1】使用T-SQL语句创建商品销售管理数据库Goods,该数据库由4个文件组成,数据文件分别存储在两个文件组内,文件的属性设置如表1所示:
表1
文件
逻辑名称
文件类型
文件组
初始大小
自动增长/最大大小
路径
文件名
主数据文件
Goods_data1
行数据
PRIMARY
20MB
增长为64MB/
限制为2000MB
D:\DBG
Goods_data1.mdf
辅数据文件
Goods_data2
行数据
GGROUP
20MB
增长为10%/
无限制
D:\DBG
Goods_data2.ndf
日志文件1
Goods_log1
日志
不适用
8 MB
增长为64MB/
无限制
D:\DBG
Goods_log1.ldf
日志文件2
Goods_log2
日志
不适用
8 MB
增长为64MB/
无限制
D:\DBG
Goods_log2.ldf
【拓展训练2】分别使用SSMS和T-SQL两种方法创建商品销售管理数据库Goods中的数据表。
字段名
数据类型
含义
非空约束
约束
Consumer_Id
nvarchar(30)
客户编号
Not null
主键
Account
varchar(20)
账号
Not null
唯一约束
Password
varchar(20)
密码
null
Name
nvarchar(20)
姓名
null
Sex
nchar(1)
性别
null
检查约束(值“男”或“女”)
Tel
varchar(20)
电话
null
Address
nvarchar(60)
收货地址
null
字段名
数据类型
含义
非空约束
约束
Employee_Id
nvarchar(30)
员工号
Not null
主键
Account
varchar(20)
账号
Not null
唯一约束
Password
varchar(20)
密码
null
Name
nvarchar(20)
姓名
null
Sex
nchar(1)
性别
null
检查约束(值“男”或“女”)
Tel
varchar(20)
电话
null
字段名
数据类型
含义
非空约束性
约束
Category_id
nvarchar(30)
商品类别编号
Not null
主键
Name
nvarchar(30)
商品类别名称
null
字段名
数据类型
含义
非空约束
约束
Goods_Id
nvarchar(30)
商品编号
Not null
主键
Name
nvarchar(30)
商品名称
Not null
Brand
nvarchar(30)
品牌
null
Size
nvarchar(30)
规格
null
Price
decimal(8,2)
单价
Not null
检查约束(值>0)
Stock
int
库存数量
Not null
检查约束(值>=0)
Image_Url
varchar(50)
图片路径
null
Description
nvarchar(100)
商品描述
null
Category_Id
nvarchar(30)
商品类别编号
Not null
外键
字段名
数据类型
含义
非空约束
约束
Order_Id
nvarchar(30)
订单编号
Not null
主键
Goods_Id
nvarchar(30)
商品编号
Not null
外键
Quantity
int
销售数量
null
检查约束(值>0)
Order_Date
date
下单日期
null
默认值约束
值为系统日期getdate( )
Status
nvarchar(10)
订单状态
null
Consumer_Id
nvarchar(30)
客户编号
Not null
外键
Comment
nvarchar(100)
反馈评论
null
Employee_Id
nvarchar(30)
发货员工号
Not null
外键
Shipping_Date
date
发货日期
null
【拓展训练3】使用T-SQL为Goods数据库中的Employee员工表完成以下修改。
(1)添加字段Nation(民族),数据类型为varchar(10),允许为空值,并对该字段设置默认值约束,默认值为“汉”。
(2)修改Nation字段的数据类型为nvarchar(15),不允许为空值。
(3)删除Nation字段。
【拓展训练4】修改Goods数据库中Category商品类别表的字段名,将Category_id修改为Categ_id,将Name修改为CategName。
【拓展训练5】使用T-SQL为Goods数据库中Consumer客户表添加记录,如表所示。
Consumer_Id
Account
Password
Name
c0001
356985284
fgg32658
陈梅
c0002
987546562
khe65489
郭琳
【拓展训练6】使用T-SQL为Goods数据库中Shop_goods商品表添加记录,如表所示。
Goods_Id
Name
Brand
Size
Price
Stock
Image_Url
Description
Category_Id
g0001
胡萝卜
秦农
500g
2.3
600
d:\b001\ g0001.jpg
脆嫩多汁无农药残留
b001
g0006
鸡小腿
凤鸣
500g
8.9
600
d:\b003\ g0006.jpg
天然谷物饲养
b003
g0007
手抓饼
安井
400g
6.3
300
d:\b004\ g0007.jpg
葱香浓郁
b004
【拓展训练7】使用T-SQL将Shop_goods商品表中的Category_Id字段值为“b001”的记录更新为“山灵”。
【拓展训练8】使用T-SQL语句实现商品销售管理数据库Goods中的相关查询,具体操作要求如下。
(1)查询所有商品的基本信息。
(2)查询大米的品牌、规格、单价和库存数量,并显示为汉字标题。
(3)查询每个商品的库存金额(库存金额=单价*库存数量),结果显示为商品编号、商品名称和库存金额。
(4)查询下单当天就发货的商品编号。
(5)查询所有女员工的姓名、账号和电话号码。
(6)查询所有姓张的员工的详细信息。
(7)查询收货地址为西安市的客户的详细信息。
(8)查询反馈信息为空的商品编号。
(9)查询每个商品的商品编号、商品名称和库存金额,并将查询结果存放到临时表“库存”中。
不知道你这个问题是否已经解决, 如果还没有解决的话:答案:
USE master;
GO
-- 创建文件组
ALTER DATABASE Goods ADD FILEGROUP PrimaryFG;
-- 创建逻辑名称为 Goods_Log 的日志文件
ALTER DATABASE Goods ADD LOG FILE (NAME = Goods_Log, FILENAME = 'C:\DBFiles\Goods_Log.ldf', SIZE = 1GB);
-- 创建逻辑名称为 Goods_Data1 的数据文件,文件组为 PrimaryFG
ALTER DATABASE Goods ADD FILE (NAME = Goods_Data1, FILENAME = 'C:\DBFiles\Goods_Data1.mdf', SIZE = 1GB, MAXSIZE = UNLIMITED, FILEGROWTH = 100MB) TO FILEGROUP PrimaryFG;
-- 创建逻辑名称为 Goods_Data2 的数据文件,文件组为 PrimaryFG
ALTER DATABASE Goods ADD FILE (NAME = Goods_Data2, FILENAME = 'C:\DBFiles\Goods_Data2.ndf', SIZE = 1GB, MAXSIZE = UNLIMITED, FILEGROWTH = 100MB) TO FILEGROUP PrimaryFG;
-- 创建逻辑名称为 Goods_Data3 的数据文件,文件组为 PrimaryFG
ALTER DATABASE Goods ADD FILE (NAME = Goods_Data3, FILENAME = 'C:\DBFiles\Goods_Data3.ndf', SIZE = 1GB, MAXSIZE = UNLIMITED, FILEGROWTH = 100MB) TO FILEGROUP PrimaryFG;
答案:
使用SSMS方法: 在SSMS中打开Goods数据库,右键点击“Tables”,选择“New Table”,然后按照下面的表结构创建每个表,并设置相应的字段、数据类型、约束。通过图形化的方式创建表格。
-- Consumer表
CREATE TABLE Consumer (
Consumer_Id INT PRIMARY KEY,
Account VARCHAR(50) NOT NULL,
Password VARCHAR(50) NOT NULL,
Name VARCHAR(50) NOT NULL
);
-- Employee表
CREATE TABLE Employee (
Employee_Id INT PRIMARY KEY,
Account VARCHAR(50) NOT NULL,
Password VARCHAR(50) NOT NULL,
Name VARCHAR(50) NOT NULL,
Phone VARCHAR(20) NOT NULL
);
-- Category表
CREATE TABLE Category (
Categ_id INT PRIMARY KEY,
CategName VARCHAR(50) NOT NULL
);
-- Shop_goods表
CREATE TABLE Shop_goods (
Goods_Id INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Brand VARCHAR(50),
Size VARCHAR(50),
Price DECIMAL(10,2),
Stock INT,
Image_Url VARCHAR(100),
Description VARCHAR(500),
Category_Id INT,
FOREIGN KEY (Category_Id) REFERENCES Category(Categ_id)
);
-- Shop_Order表
CREATE TABLE Shop_Order (
Order_Id INT PRIMARY KEY,
Goods_Id INT,
Consumer_Id INT,
Employee_Id INT,
Order_Date DATETIME,
FOREIGN KEY (Goods_Id) REFERENCES Shop_goods(Goods_Id),
FOREIGN KEY (Consumer_Id) REFERENCES Consumer(Consumer_Id),
FOREIGN KEY (Employee_Id) REFERENCES Employee(Employee_Id)
);
使用T-SQL方法: 通过T-SQL语句执行创建每个表,并设置相应的字段、数据类型、约束。
-- Consumer表
CREATE TABLE Consumer (
Consumer_Id INT PRIMARY KEY,
Account VARCHAR(50) NOT NULL,
Password VARCHAR(50) NOT NULL,
Name VARCHAR(50) NOT NULL
);
-- Employee表
CREATE TABLE Employee (
Employee_Id INT PRIMARY KEY,
Account VARCHAR(50) NOT NULL,
Password VARCHAR(50) NOT NULL,
Name VARCHAR(50) NOT NULL,
Phone VARCHAR(20) NOT NULL
);
-- Category表
CREATE TABLE Category (
Categ_id INT PRIMARY KEY,
CategName VARCHAR(50) NOT NULL
);
-- Shop_goods表
CREATE TABLE Shop_goods (
Goods_Id INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Brand VARCHAR(50),
Size VARCHAR(50),
Price DECIMAL(10,2),
Stock INT,
Image_Url VARCHAR(100),
Description VARCHAR(500),
Category_Id INT,
FOREIGN KEY (Category_Id) REFERENCES Category(Categ_id)
);
-- Shop_Order表
CREATE TABLE Shop_Order (
Order_Id INT PRIMARY KEY,
Goods_Id INT,
Consumer_Id INT,
Employee_Id INT,
Order_Date DATETIME,
FOREIGN KEY (Goods_Id) REFERENCES Shop_goods(Goods_Id),
FOREIGN KEY (Consumer_Id) REFERENCES Consumer(Consumer_Id),
FOREIGN KEY (Employee_Id) REFERENCES Employee(Employee_Id)
);
(1) 添加字段Nation(民族),数据类型为varchar(10),允许为空值,并对该字段设置默认值约束,默认值为“汉”。
(2) 修改Nation字段的数据类型为nvarchar(15),不允许为空值。
(3) 删除Nation字段。
答案:
-- (1) 添加字段Nation(民族),数据类型为varchar(10),允许为空值,并对该字段设置默认值约束,默认值为“汉”。
ALTER TABLE Employee ADD Nation VARCHAR(10) NULL CONSTRAINT DF_Employee_Nation DEFAULT '汉';
-- (2) 修改Nation字段的数据类型为nvarchar(15),不允许为空值。
ALTER TABLE Employee ALTER COLUMN Nation NVARCHAR(15) NOT NULL;
-- (3) 删除Nation字段。
ALTER TABLE Employee DROP COLUMN Nation;
答案:
-- 修改Category表的字段名
EXEC sp_rename 'Category.Category_id', 'Categ_id', 'COLUMN';
EXEC sp_rename 'Category.Name', 'CategName', 'COLUMN';
答案:
-- 使用INSERT语句为Consumer表添加记录
INSERT INTO Consumer (Consumer_Id, Account, Password, Name)
VALUES (1, 'example@gmail.com', 'password123', 'John Doe');
答案:
-- 使用INSERT语句为Shop_goods表添加记录
INSERT INTO Shop_goods (Goods_Id, Name, Brand, Size, Price, Stock, Image_Url, Description, Category_Id)
VALUES (1, 'Product 1', 'Brand 1', 'XL', 10.99, 100, 'image1.jpg', 'Description 1', 1);
INSERT INTO Shop_goods (Goods_Id, Name, Brand, Size, Price, Stock, Image_Url, Description, Category_Id)
VALUES (2, 'Product 2', 'Brand 2', 'L', 19.99, 50, 'image2.jpg', 'Description 2', 1);
INSERT INTO Shop_goods (Goods_Id, Name, Brand, Size, Price, Stock, Image_Url, Description, Category_Id)
VALUES (3, 'Product 3', 'Brand 1', 'M', 14.99, 75, 'image3.jpg', 'Description 3', 2);
答案:
-- 使用UPDATE语句更新Shop_goods表中的记录
UPDATE Shop_goods
SET Category_Id = '山灵'
WHERE Category_Id = 'b001';
(1) 查询所有商品的基本信息。
(2) 查询大米的品牌、规格、单价和库存数量,并显示为汉字标题。
(3) 查询每个商品的库存金额(库存金额=单价*库存数量),结果显示为商品编号、商品名称和库存金额。
(4) 查询下单当天就发货的商品编号。
(5) 查询所有女员工的姓名、账号和电话号码。
(6) 查询所有姓张的员工的详细信息。
(7) 查询收货地址为西安市的客户的详细信息。
(8) 查询反馈信息为空的商品编号。
(9) 查询每个商品的商品编号、商品名称和库存金额,并将查询结果存放到临时表“库存”中。
答案:
-- (1) 查询所有商品的基本信息。
SELECT * FROM Shop_goods;
-- (2) 查询大米的品牌、规格、单价和库存数量,并显示为汉字标题。
SELECT Name AS '商品名称', Brand AS '品牌', Size AS '规格', Price AS '单价', Stock AS '库存数量'
FROM Shop_goods
WHERE Name = '大米';
-- (3) 查询每个商品的库存金额(库存金额=单价*库存数量),结果显示为商品编号、商品名称和库存金额。
SELECT Goods_Id, Name, Price * Stock AS '库存金额'
FROM Shop_goods;
-- (4) 查询下单当天就发货的商品编号。
SELECT Goods_Id
FROM Shop_Order
WHERE DATEDIFF(DAY, Order_Date, GETDATE()) = 0;
-- (5) 查询所有女员工的姓名、账号和电话号码。
SELECT Name, Account, Phone
FROM Employee
WHERE Gender = 'Female';
-- (6) 查询所有姓张的员工的详细信息。
SELECT *
FROM Employee
WHERE Name LIKE '张%';
-- (7) 查询收货地址为西安市的客户的详细信息。
SELECT *
FROM Consumer
WHERE Address = '西安市';
-- (8) 查询反馈信息为空的商品编号。
SELECT Goods_Id
FROM Shop_goods
WHERE Feedback IS NULL;
-- (9) 查询每个商品的商品编号、商品名称和库存金额,并将查询结果存放到临时表“库存”中。
SELECT Goods_Id, Name, Price * Stock AS '库存金额'
INTO #库存
FROM Shop_goods;
-- 查看临时表数据
SELECT *
FROM #库存;
以上就是关于关系型数据库应用技术的问题的解答。