数据库实验三:创建和管理数据表

数据库实验三:创建和管理数据表

惠州学院

《数据库应用》课程实验报告

实验题目: 实验三:创建与管理数据库

姓名: 曹锐旋 学号: 230703030

班级: 23 电子信息工程(3)班 指导教师: 黄冲

一、实验目的

  1. 掌握 SQL Server 中使用 T-SQL 语句创建和管理数据库的基本操作。
  2. 学习如何使用 SQL Server Management Studio (SSMS) 进行数据库的创建和管理。
  3. 理解数据库文件和文件组的概念及其在数据库维护中的作用。

二、实验内容和要求

  1. 使用 T-SQL 语句创建数据库
  2. 数据库的维护

三、实验主要仪器设备和材料

  1. 计算机及操作系统:PC 机,Windows 7/Windows 10。
  2. 数据库管理系统:SQL Server 2012/2019。
  3. SQL Server Management Studio (SSMS)。

四、实验方法、步骤及结果测试

  1. 使用 T-SQL 语句创建数据库:编写 SQL 脚本,使用 CREATE DATABASE 语句来创建数据库,并指定数据文件和日志文件的属性。
  2. 使用 SSMS 创建数据库:通过 SQL Server Management Studio 的图形用户界面来创建数据库,设置文件的属性和位置。
  3. 数据库维护操作:使用 T-SQL 语句对数据库进行维护,如新增文件组和文件、删除文件组和文件、修改数据库文件的容量和增长率、修改数据库名称和删除数据库。

3.2 实验

【1】使用 T-SQL 创建商品销售管理数据库 Goods 中的数据表。(SSMS 课堂练习)

  1. 客户表 Consumer
字段名 数据类型 含义 非空约束 约束
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
  1. 员工表 Employee
字段名 数据类型 含义 非空约束 约束
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
  1. 商品类别表 Category
字段名 数据类型 含义 非空约束性 约束
Category_id nvarchar(30) 商品类别编号 Not null 主键
Name nvarchar(30) 商品类别名称 null
  1. 商品表 Shop_goods
字段名 数据类型 含义 非空约束 约束
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 外键
答案:
第一步 创建数据库
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'Goods')
BEGINCREATE DATABASE Goods;
END
GO

image

第二步 创建客户表 Consumer
USE Goods      GOCREATE TABLE Consumer(Consumer_Id  nvarchar(30) NOT NULL PRIMARY KEY,Account      varchar(20)  NOT NULL UNIQUE,Password     varchar(20)  NULL,Name         nvarchar(20) NULL,Sex          nchar(1)     NULL     CHECK (Sex='男' OR Sex='女'),Tel          varchar(20)  NULL
);

image

第三步 商品类别表 Category
USE Goods      GOCREATE TABLE Category(Category_Id  nvarchar(30) NOT NULL PRIMARY KEY,Name         nvarchar(20) NULL,
);

image

第四步 创建商品表 Shop_goods
USE Goods      GOCREATE TABLE Shop_goods(Goods_Id     nvarchar(30)  NOT NULL  PRIMARY KEY,Name         nvarchar(30)  NOT NULL  UNIQUE,Brand        nvarchar(30)  NULL,Size         nvarchar(20)  NULL,Price        decimal(8,2)  NOT NULL, CHECK (Price>0),Stock        int           NOT NULL  CHECK (Stock>=0),Image_Url    varchar(50)   NULL,Description  nvarchar(100) NULL,Category_Id  nvarchar(30)  NOT NULL,FOREIGN KEY (Category_Id) REFERENCES Category(Category_id)
);

image

第五步 创建订单表 Shop_Order
USE Goods      GOCREATE TABLE Shop_Order(Order_Id       nvarchar(30)  NOT NULL  PRIMARY KEY,Goods_Id       nvarchar(30)  NOT NULL  FOREIGN KEY REFERENCES Shop_goods(Goods_Id),Quantity       int           NULL      CHECK(Quantity > 0),Order_Date     date          NULL      DEFAULT GETDATE(),Status         nvarchar(10)  NULL,Consumer_Id    nvarchar(30)  NOT NULL  FOREIGN KEY REFERENCES Consumer(Consumer_Id),Comment        nvarchar(100) NULL,Employee_Id    nvarchar(30)  NOT NULL  FOREIGN KEY REFERENCES Employee(Employee_Id),Shipping_Date  date          NULL
);

image

3.6 实验

【2】使用 SSMS 图形化界面为 Goods 数据库中的 Consumer 客户表添加字段 WeChat(微信号),添加完成后再将其删除。

答案:

第一步 添加字段 WeCha
USE Goods;
GOALTER TABLE Consumer
ADD WeChat nvarchar(50) NULL;
GO

image

第二步 删除字段 WeChat
USE Goods;
GOALTER TABLE Consumer
DROP COLUMN WeChat;
GO

image

【2】使用 T-SQL 为 Goods 数据库中的 Employee 员工表完成以下修改。

(1)添加字段 Nation(民族),数据类型为 varchar(10),允许为空值。

(2)修改 Nation 字段的数据类型为 nvarchar(15)。

(3)删除 Nation 字段。

答案:

第一步 添加字段 Nation,数据类型为 varchar(10)
USE Goods
GOALTER TABLE Employee
ADD Nation varchar(10);

image

第二步 修改 Nation 字段的数据类型为 nvarchar(15)
USE Goods
GOALTER TABLE Employee
ALTER COLUMN Nation nvarchar(15);

image

第三步 删除 Nation 字段
USE Goods
GOALTER TABLE Employee
DROP COLUMN Nation;

image

【3】使用 T-SQL 删除 Goods 数据库 Shop_Order 订单表中的所有约束。

答案:

第一步 查询 Goods 数据库中 Shop_Order 表的所有约束
USE Goods;SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'Shop_Order';

image

第二步 删除约束

USE Goods;ALTER TABLE Shop_Order
DROP CONSTRAINT PK__Shop_Ord__F1E4607BCA1CA8F1;ALTER TABLE Shop_Order
DROP CONSTRAINT FK__Shop_Orde__Goods__5EBF139D;ALTER TABLE Shop_Order
DROP CONSTRAINT CK__Shop_Orde__Quant__5FB337D6;ALTER TABLE Shop_Order
DROP CONSTRAINT FK__Shop_Orde__Consu__619B8048;ALTER TABLE Shop_Order
DROP CONSTRAINT FK__Shop_Orde__Emplo__628FA481;

image

【4】使用 T-SQL 删除 Goods 数据库 Consumer 客户表、Shop_goods 商品表、Employee 员工表中的所有约束。

答案:

第一步 查询 Goods 数据库中 Consumer 客户表 的所有约束
USE Goods;SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'Consumer';

image

第二步 删除约束

USE Goods;ALTER TABLE Consumer
DROP CONSTRAINT PK__Consumer__0EE77F37BC8CABF7;ALTER TABLE Consumer
DROP CONSTRAINT UQ__Consumer__B0C3AC46407206A2;ALTER TABLE Consumer
DROP CONSTRAINT CK__Consumer__Sex__628FA481;

image

第三步 另外两个表同理

【5】使用 T-SQL 为 Goods 数据库中的 Shop_goods 商品表、Consumer 客户表、Employee 员工表、Shop_Order 订单表添加约束,参照实验 3.2。

答案:

第一步 Shop_goods 商品表
USE Goods;
GO-- 添加检查约束:Price > 0
ALTER TABLE Shop_goods
ADD CONSTRAINT CK_Shop_goods_Price CHECK (Price > 0);-- 添加检查约束:Stock >= 0
ALTER TABLE Shop_goods
ADD CONSTRAINT CK_Shop_goods_Stock CHECK (Stock >= 0);-- 添加外键约束:Category_Id 引用 Category 表的 Category_Id
ALTER TABLE Shop_goods
ADD CONSTRAINT FK_Shop_goods_Category FOREIGN KEY (Category_Id) REFERENCES Category(Category_Id);
GO
第二步 Consumer 客户表
-- 添加唯一约束:Account 唯一
ALTER TABLE Consumer
ADD CONSTRAINT UQ_Consumer_Account UNIQUE (Account);-- 添加检查约束:Sex 为 '男' 或 '女'
ALTER TABLE Consumer
ADD CONSTRAINT CK_Consumer_Sex CHECK (Sex IN ('男', '女'));
GO
第三步 Employee 员工表
-- 添加唯一约束:Account 唯一
ALTER TABLE Employee
ADD CONSTRAINT UQ_Employee_Account UNIQUE (Account);-- 添加检查约束:Sex 为 '男' 或 '女'
ALTER TABLE Employee
ADD CONSTRAINT CK_Employee_Sex CHECK (Sex IN ('男', '女'));
GO
第四步 Shop_Order 订单表
-- 添加外键约束:Consumer_Id 引用 Consumer 表的 Consumer_Id
ALTER TABLE Shop_Order
ADD CONSTRAINT FK_Shop_Order_Consumer FOREIGN KEY (Consumer_Id) REFERENCES Consumer(Consumer_Id);-- 添加外键约束:Employee_Id 引用 Employee 表的 Employee_Id
ALTER TABLE Shop_Order
ADD CONSTRAINT FK_Shop_Order_Employee FOREIGN KEY (Employee_Id) REFERENCES Employee(Employee_Id);-- 添加检查约束:Total_Amount > 0
ALTER TABLE Shop_Order
ADD CONSTRAINT CK_Shop_Order_Total_Amount CHECK (Total_Amount > 0);
GO

【6】修改 Goods 数据库中 Category 商品类别表的字段名,将 Category_id 修改为 Categ_id,将 Name 修改为 CategName。

答案:

USE Goods;EXEC sp_rename 'Category.Category_id', 'Categ_id', 'COLUMN';
EXEC sp_rename 'Category.Name', 'CategName', 'COLUMN';

image➡️image

【7】将 Goods 数据库中 Category 商品类别表重命名为 Categ。

答案:

USE Goods;EXEC sp_rename 'Category', 'Categ';

image➡️image

image

【8】删除 Goods 数据库中的 Consumer 客户表。

答案:

USE Goods;DROP TABLE Consumer;

image➡️image

image

3.6 实验

【1】使用 T-SQL 为 Goods 数据库中的 Category 商品类别表添加记录,如表 1 所示。

表 1

Category_id Name
b010 生鲜
b012 熟食
b013 保健品

答案:

USE Goods;INSERT INTO Category (Category_id, Name)
VALUES ('b010', '生鲜'),('b012', '熟食'),('b013', '保健品');

image

【2】使用 T-SQL 为 Goods 数据库中 Consumer 客户表添加记录,如表 2 所示。

表 2

Consumer_Id Account Password Name
c0011 567821945 haf65658 郝飞
c0012 269871534 Gut98589 郭甜

答案:

USE Goods;INSERT INTO Consumer (Consumer_Id, Account, Password, Name)
VALUES ('c0011', '567821945', 'haf65658', '郝飞'),('c0012', '269871534', 'Gut98589', '郭甜');

image

【3】使用 T-SQL 为 Goods 数据库中 Shop_goods 商品表添加记录,如表 36 所示。

表 3

Goods_Id Name Brand Size Price Stock Image_Url Description Category_Id
g0019 香菇 秦农 500g 8.2 600 d:\b001\ g0019.jpg 鲜美无农药残留 b001
g0020 鸡翅 凤鸣 500g 9.0 700 d:\b003\ g0020.jpg 天然谷物饲养 b003
g0021 奶黄包 安井 400g 10 800 d:\b004\ g0021.jpg 奶香浓郁 b004

答案:

第一步 创建对应 Category_Id
USE Goods;INSERT INTO Category (Category_Id)
VALUES ('b001'),('b003'),('b004');

image

第二步 添加记录
USE Goods;INSERT INTO Shop_goods (Goods_Id, Name, Brand, Size, Price, Stock, Image_Url, Description, Category_Id)
VALUES ('g0019', '香菇', '秦农', '500g', 8.2, 600, 'd:\b001\g0019.jpg', '鲜美无农药残留', 'b001'),('g0020', '鸡翅', '凤鸣', '500g', 9.0, 700, 'd:\b003\g0020.jpg', '天然谷物饲养', 'b003'),('g0021', '奶黄包', '安井', '400g', 10, 800, 'd:\b004\g0021.jpg', '奶香浓郁', 'b004');

image

【4】使用 T-SQL 将 Shop_goods 商品表中的 Category_Id 字段值为“b001”的记录 Brand 字段更新为“山灵”。

答案:

USE Goods;UPDATE Shop_goods
SET Brand = '山灵' WHERE Category_Id = 'b001';

image

【5】使用 T-SQL 将 Shop_goods 商品表中 Category_Id(商品类别)字段值为“b002”且 Price(单价)小于 4 元钱的商品提高单价 1 元。

答案:

USE Goods;UPDATE Shop_goods
SET Price = Price + 1
WHERE Category_Id = 'b002' AND Price < 4;

image

【6】将 Shop_goods 商品表中商品名称为“牙膏”、品牌为“两面针”的记录商品编号更新为“g0026”,同时对 Shop_Order 订单表进行级联更新。

答案:

USE Goods;UPDATE Shop_goods
SET Goods_Id = 'g0026'
WHERE Name = '牙膏' AND Brand = '两面针';UPDATE Shop_Order
SET Goods_Id = 'g0026'
WHERE Goods_Id IN (SELECT Goods_IdFROM Shop_goodsWHERE Name = '牙膏' AND Brand = '两面针'
);

image

表中没有这条数据,所有没有变化。

【7】将 Shop_goods 商品表中,商品编号为“g0006”的记录删除,同时对 Shop_Order 订单表进行级联删除。

答案:

USE Goods;DELETE FROM Shop_goods WHERE Goods_Id = 'g0006';
DELETE FROM Shop_Order WHERE Goods_Id = 'g0006';

image

【8】使用 T-SQL 删除 Category 商品类别表和 Consumer 客户表所有记录。

答案:

USE Goods;DELETE FROM Category;
DELETE FROM Consumer;

image

因为 Category 存在外键约束,所有 Category 无法清除记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/826310.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【vjudge训练记录】11月个人训练赛1

训练情况赛后反思 被小数据背刺了,吃了几发RE,不过还是调出来了 A题 我们先考虑将连续的 v 先换成 w,之后就是统计子序列 wow 的个数,我们只需要找每个 o 前面有多少个 w,之后有多少个 w,根据乘法原理可知,这个 o 对答案的贡献就是两个相乘,维护前面和后面的 w 我们可以…

数据采集和融合技术作业3

作业①: 1)指定一个网站,爬取这个网站中的所有的所有图片,例如:中国气象网(http://www.weather.com.cn)。使用scrapy框架分别实现单线程和多线程的方式爬取。 代码解析 weather_spiders.py文件 解析起始页面 def parse(self, response):urls = response.xpath(//div[@cla…

19-操作系统安全保护

19.1 概述 1)概念 一般来说,操作系统的安全是指满足安全策略要求,具有相应的安全机制及安全功能,符合特定的安全标准,在一定约束条件下,能够抵御常见的网络安全威胁,保障自身的安全运行及资源安全。 操作系统的安全可控目标分为两个层面:第一个层面,是指给定一个操作系…

2024-2025-1 20241313刘鸣宇《计算机基础与程序设计》第六周工作总结

作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 <写上具体方面>作业正文 ... 本博客链接教材学习内容总结 学习了有关…

mysql 5.7.x版本查看某张表、库的大小 思路方案说明

mysql 5.7.x版本查看某张表、库的大小 思路方案说明@目录摘要(推荐)第一种方案:查询information_schema.TABLES的字段DATA_LENGTH使用场景优点:网上大多案例都是查询系统表的字段DATA_LENGTH去计算大小缺点:DATA_LENGTH不都是实时更新的,由表引擎决定,同时DATA_LENGTH是…

Fluent Editor 富文本开源2个月的总结:增加格式刷、截屏、TypeScript 类型声明等新特性

你好,我是 Kagol,个人公众号:前端开源星球。 Fluent Editor 是一个基于 Quill 2.0 的富文本编辑器,在 Quill 基础上扩展了丰富的模块和格式,框架无关、 功能强大、开箱即用。 2024年8月12日,Fluent Editor 正式开源!源码:https://github.com/opentiny/fluent-editor/ 官…

JavaScript DOM

一 获取Element对象点击查看代码 Document对象中提供了以下获取 Element元素对象的函数 getElementById():根据id属性值获取,返回单个Element对象 getElementsByTagName():根据标签名称获取,返回Element对象数组 getElementsByName():根据name属性值获取,返回Element对象…

zblog列表页面包屑导航的代码 支持显示所有子分类

当前位置:<a href="{$host}">网站首页</a> {if $type==category} {php} $html=; function navcate($id){global $html;$cate = new Category;$cate->LoadInfoByID($id);$html = > <a href=".$cate->Url." title="查看.$cat…

zblog注册插件调用自定义模板的方法

操作步骤安装注册插件:安装官方提供的注册插件。修改插件文件:打开/zb_users/plugin/RegPage/include.php文件。替换模板名称:在第213行,将$article->Template改为自定义模板的名称,例如login。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种C…

帝国CMS如何判断当前页面为首页高亮代码

<?php if(empty($GLOBALS[navclassid])){ echo class="active"; } ?>说明:如果当前栏目ID为空,则认为是首页,添加class="active"进行高亮。 特殊情况处理:如果不想在TAG页面和自定义页面也高亮,可以在这些页面顶部定义$GLOBALS[navclassid]为…

开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql

开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql@目录问题描述我的使用场景描述结论本人其他相关文章链接 问题描述开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql?我的使用场景描述 我采用执行sql修改配置文件,也就是采用…

帝国CMS文章列表页模板动态刷新点击数代码

修改HTML代码:将点击数显示部分修改为:<em class="clickcount" data-class="[!--classid--]" data-id="[!--id--]">[!--onclick--]</em>添加JS代码:在模板页面尾部加入以下JS代码:<script> window.onload = function() {$…