news 2026/7/25 7:21:46

【数据库原理 实验报告2】创建和管理数据表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【数据库原理 实验报告2】创建和管理数据表

上一篇:【数据库原理 实验报告1】创建和管理数据库

目录

练习1 创建表S,T,C和SC

练习2 修改表结构

实验心得

SQL语言使用数据定义语言(DATA DEFINITION LANGUAGE,简称DDL)实现其数据定义功能,可对数据库、数据库用户、基本表、视图、索引进行定义和撤消。

【实验目的】

掌握SQL Server数据定义语言的使用,能独立按要求进行数据库、基本表、进行定义和撤消。

掌握数据库中最重要的数据库对象表的创建,认识属性及各类约束的类型,使用CREATE和ALTER等语句进行数据库表的创建及表结构的修改。

【实验要求】(截屏提交)

练习1 创建表S,T,C和SC

1.1用界面方式创建数据表S

截图:

1.2用命令方式创建T,C和SC表,并记录创建语句,提交实验报告。

其中,学生表S包含4列,分别是

(S# char(6),Sname char(10) ,address varchar(100) ,Sex char(2) ),主键列是S#,要求Sname不能为空。

教师表T包含4列,分别是

(T# char(6) ,Tname char(20),Title char(4),Education char(4)),主键列是T#,给Title列增加一个缺省值约束,缺省值是‘000’。

课程表C包含3列,分别是

(C# char(6) , Cname char(6) ,T# char(6)),主键列是C #,外键列是T#,引用T表的 T#,给Cname列增加一个唯一约束,强制该列值不能有重复值。

选课表SC包含3列,分别是

S# char(6),C# char(6) ,SCORE SMALLINT,其中S#和C#的属性组合作为表的主键, S# 也是外键列,引用S表的 S#,C# 也是外键列,引用C表的C#,增加一个check约束,限定SCORE列的值为0-100.

截图:

代码:

-- 创建教师表T CREATE TABLE T ( T# char(6) PRIMARY KEY, Tname char(20) NOT NULL, Title char(4) DEFAULT '000', Education char(4) ); -- 创建课程表C CREATE TABLE C ( C# char(6) PRIMARY KEY, Cname char(6) UNIQUE NOT NULL, T# char(6), FOREIGN KEY (T#) REFERENCES T(T#) ); -- 创建选课表SC CREATE TABLE SC ( S# char(6), C# char(6), SCORE SMALLINT CHECK (SCORE BETWEEN 0 AND 100), PRIMARY KEY (S#, C#), FOREIGN KEY (S#) REFERENCES S(S#), FOREIGN KEY (C#) REFERENCES C(C#) );

练习2 修改表结构

2.1在S表中增加一个新列age,数据类型为tinyint,可以为空。记录修改语句提交实验报告。

截图:

代码:

ALTER TABLE S ADD age TINYINT;

2.2删除T表中的Education列,记录修改语句提交实验报告。

截图:

代码:

ALTER TABLE T DROP COLUMN Education;

2.3 修改C表中Cname列的数据类型为varchar(6).

截图:

代码:

ALTER TABLE C ALTER COLUMN Cname varchar(6);

2.4 修改SC表中C#列的类型为int,记录系统出现的提示信息,截屏提交。

截图:

代码:

ALTER TABLE SC ALTER COLUMN C# TYPE int;

实验心得

本次数据库原理课程设计实验二围绕数据表的创建和管理展开,通过界面操作与命令行编程相结合的方式,我系统练习了SQL Server数据定义语言(DDL)的使用,深入掌握了数据表的创建、修改等核心操作,在实践中深化了对数据库表结构、约束条件的理解,同时也认识到自身在数据库操作中的不足,收获颇丰,也有诸多反思。

实验初期,我通过界面方式创建学生表S,直观感受了数据库管理工具的操作逻辑,从表名设置、列名与数据类型的选择,到主键约束、非空约束的配置,每一步都需要严谨细致。界面操作虽便捷直观,但也让我意识到,可视化操作的背后是对SQL语句的自动转化,只有理解了底层的SQL逻辑,才能更灵活地应对复杂的表结构设计需求。随后,我使用命令方式创建教师表T、课程表C和选课表SC,这一过程让我深刻体会到SQL语句的精准性——每一个关键字、括号、标点符号都不能出错,否则会导致语句执行失败。例如,在设置课程表C的外键约束时,我曾因遗漏外键引用的表名和列名,导致语句执行报错,经过反复检查和修改,最终成功完成创建,也让我记住了外键约束的完整语法格式。

在创建各表的过程中,约束条件的设置是重点也是难点。主键约束确保了表中数据的唯一性和非空性,是数据表的核心;非空约束、唯一约束、默认值约束和检查约束则进一步规范了数据格式,保证了数据的完整性和有效性。比如,在选课表SC中设置检查约束,限定成绩在0-100之间,有效避免了无效成绩数据的录入;给教师表T的Title列设置默认值约束,简化了数据录入流程。这些约束条件的应用,让我明白数据库设计不仅要考虑数据的存储,更要注重数据的质量和规范性,为后续的数据操作和管理奠定坚实基础。

表结构的修改操作是本次实验的另一重要内容,包括添加列、删除列、修改列的数据类型等。在给S表添加age列时,我顺利完成了ALTER TABLE语句的编写和执行;但在删除T表的Education列时,我曾担心删除列会影响表中已有的数据,后来通过查阅资料和实际操作发现,只要该列无关联约束,删除操作不会对其他数据造成影响,这让我对表结构修改的安全性有了更清晰的认识。而在修改SC表中C#列的数据类型时,系统出现了提示信息,经过分析得知,这是因为该列作为外键,与课程表C的C#列存在关联,直接修改数据类型会破坏表间的参照完整性,这一经历让我深刻理解了外键约束对表间关系的保护作用,也意识到在进行表结构修改前,必须先检查表间的关联关系,避免出现数据异常。

通过本次实验,我不仅熟练掌握了CREATE、ALTER等DDL语句的使用方法,更深刻理解了数据库表设计的核心思想——严谨性和规范性。实验过程中,我也发现了自身的不足:一是对SQL语句的记忆不够熟练,偶尔会出现语法错误;二是对表间约束关系的理解不够透彻,在处理复杂约束时容易出错;三是操作不够细心,偶尔会因疏忽遗漏关键参数。针对这些问题,我计划在后续的学习中,加强SQL语句的练习,多进行复杂表结构的设计实践,同时注重理论知识的巩固,深入理解约束条件的作用和应用场景。

本次实验让我深刻认识到,数据库操作是一项严谨细致的工作,每一个操作都可能影响到整个数据库的完整性和安全性。通过实践,我将理论知识与实际操作相结合,不仅提升了自身的动手能力,更培养了严谨的逻辑思维和问题解决能力。在今后的学习和实践中,我将继续加强数据库相关知识的学习,不断提升自身的专业技能,为后续更复杂的数据库设计和管理工作做好准备。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 14:28:27

Windows下用CDO处理CMIP6气象数据的完整避坑指南(附批量裁剪脚本)

Windows下用CDO处理CMIP6气象数据的完整避坑指南(附批量裁剪脚本) 引言:为什么选择CDO处理CMIP6数据? 在气象科研领域,CMIP6数据以其庞大的体量和复杂的结构著称。传统处理方式如Python xarray或NCL往往面临内存不足、…

作者头像 李华
网站建设 2026/7/14 14:28:29

ZigBee开发环境实战 -- IAR for 8051 10.30.1 安装与避坑指南

1. 为什么选择IAR for 8051开发ZigBee? 说到ZigBee开发环境搭建,很多新手都会纠结工具链的选择。我当年从STM32转向ZigBee开发时,花了整整两周时间对比各种方案,最终发现IAR for 8051 10.30.1这个版本在稳定性和兼容性上表现最好。…

作者头像 李华
网站建设 2026/7/14 14:28:26

LUT(Look-Up-Table)

目录 1、1D LUT 2、3D LUT 3、手动创建LUT 3.1 准备调色素材‌ 3.2 ‌进行创意调色‌ 3.3 ‌导出为LUT文件‌ 3.4 测试与优化‌ 4、AI LUT 4.1 使用AI调色App 4.2 使用开源项目 4.3 训练专属AI模型 4.3.1 使用预训练AI模型 LUT提取工具 4.3.2 端到端 5、其他工作…

作者头像 李华
网站建设 2026/7/14 14:28:25

AutoGen Studio与Kubernetes集成:大规模AI应用部署

AutoGen Studio与Kubernetes集成:大规模AI应用部署 1. 引言 想象一下这样的场景:你的AI智能体团队正在处理成千上万的用户请求,每个请求都需要多个AI代理协同工作。突然流量激增,传统的部署方式瞬间崩溃,服务响应变慢…

作者头像 李华