数据库系统原理实验报告3 | 数据定义

整理自博主本科《数据库系统原理》专业课自己完成的实验报告,以便各位学习数据库系统概论的小伙伴们参考、学习。

专业课本:

————

本次实验使用到的图形化工具:Heidisql

目录

一、实验目的

二、实验内容及步骤

1、创建数据库educ及其基本表(Student, Course, SC)

2、基本表的修改

3、删除表

三、实验结果总结

总结自己遇到的问题:

四、实验结果的运用

能不能应用到其他的数据库中,请自己举例子


一、实验目的

1、熟练使用SQL语句建立数据库和表,掌握数据定义语句。

2、使用数据定义语句实现完整性约束的设置,加深对于完整性的理解。3、初步掌握数据更新语句。


二、实验内容及步骤

1、创建数据库educ及其基本表(Student, Course, SC)

提示:创建数据库,然后打开数据库,然后再开始创建表。

1) 建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成,是否允许为空,数据类型如下图所示。其中学号为主属性,Ssex默认为‘男’,Sname列的必须取唯一值即加unique约束。

SQL语句: 

CREATE DATABASE educ;
USE educ;
SELECT DATABASE();

CREATE TABLE Student(
	Sno CHAR(9) PRIMARY KEY ,
	Sname CHAR(20) UNIQUE ,
	Ssex CHAR(2) DEFAULT'男',
	Sage SMALLINT,
	Sdept CHAR(20) 
);

执行结果:

2) 建立“课程”表Course,包括课程号Cno,课程名称Cname,先修课程Cpno,学分Ccredit,是否允许为空,数据类型如下图所示。要求Cno建立主键。按照Cpno建立外键,参照course表中的Cno。

SQL语句: 

CREATE TABLE Course(
	Cno CHAR(4) NOT NULL PRIMARY KEY ,
	Cname CHAR(40) NOT NULL ,
	Cpno CHAR(4) ,
	Ccredit SMALLINT ,
	FOREIGN KEY (Cpno) REFERENCES Course(Cno)
);

执行结果:

3) 建立“选课”表SC,包括学号sno,课程号cno,成绩grade,是否允许为空,数据类型如下图所示。要求sno+cno建立主键及与Student及Course表联接的外键。

SQL语句: 

CREATE TABLE SC(
	Sno CHAR(9) ,
	Cno CHAR(4) ,
	Grade SMALLINT ,
	PRIMARY KEY (Sno,Cno),
		FOREIGN KEY (Sno) REFERENCES Student(Sno),
		FOREIGN KEY (Cno) REFERENCES Course(Cno)
);

执行结果: 

2、基本表的修改

1) 在Student表中增加一列学生的地址Sloc  char(80)

ALTER TABLE Student
	ADD Sloc CHAR(80);

2) 删除Sloc这一列

ALTER TABLE Student
	DROP COLUMN Sloc;

3) 将Student表的列Sname的长度由char(20)改为varchar(20)

ALTER TABLE Student
	MODIFY COLUMN Sname VARCHAR(20);

4) 将Student表的Sname一列允许空值的属性更改成不允许为空

ALTER TABLE Student
	MODIFY COLUMN Sname CHAR(20);

5) 把Student表中Sdept的默认值设置为  软件工程

ALTER TABLE Student
	MODIFY COLUMN Sdept CHAR(20) DEFAULT '软件工程';

6) 创建一个新的表S1,自定义三个属性,创建时不要设置主键。再创建一个表s2,自定义两个属性,其中一个属性的类型和s1中的某个属性相同。

CREATE TABLE S1(
	Teacher VARCHAR(4),
	Class SMALLINT ,
	Salary SMALLINT  
);

CREATE TABLE S2(
	Teacher VARCHAR(20),
	Address CHAR(20)
);

7) 给表S1添加一个主键

ALTER TABLE S1
	ADD PRIMARY KEY(Teacher);

8) 给表S2添加一个外键

ALTER TABLE S2
	ADD FOREIGN KEY (Teacher) REFERENCES S1(Teacher);

3、删除表

1) 删除Student表

2)删除Course表

3)删除SC表

ALTER TABLE SC
	DROP FOREIGN KEY sc_ibfk_1;
ALTER TABLE sc
	DROP FOREIGN KEY sc_ibfk_2;
DROP TABLE Student;
DROP TABLE Course;
DROP TABLE SC;


三、实验结果总结

总结自己遇到的问题:

1、在运行添加外键的代码时,没有同时运行创建目标关系的代码,导致系统找不到目标关系,认为目标关系不存在。

2、在创建表时,在最后一行的属性创建后加了逗号“,” 

3、在添加外码时输错了代码,把设置主键的一步写成了设置外键。


四、实验结果的运用

能不能应用到其他的数据库中,请自己举例子

答:

CREATE DATABASE spj;
USE spj;
SELECT DATABASE();
#创建4个表
CREATE TABLE S(
	Sno CHAR(10) PRIMARY KEY ,
	Sname CHAR(4) NOT NULL UNIQUE ,
	Sstatus INT(40),
	City VARCHAR(4)
); 

CREATE TABLE P(
	Pno CHAR(10) PRIMARY KEY ,
	Pname CHAR(4) ,
	Pcolor CHAR(2) DEFAULT'红',
	Pweight INT(40) 
);

CREATE TABLE J(
	Jno CHAR(10) PRIMARY KEY ,
	Jname CHAR(10),
	City CHAR(5) NOT NULL 
);

CREATE TABLE SPJ(
	Sno CHAR(10),
	Pno CHAR(10),
	Jno CHAR(10),
	Qty INT(10),
	PRIMARY KEY(Sno,Pno,Jno),
		FOREIGN KEY (Sno) REFERENCES S(Sno),
		FOREIGN KEY (Pno) REFERENCES P(Pno),
		FOREIGN KEY (Jno) REFERENCES J(Jno)
);

ALTER TABLE S
	ADD address VARCHAR(40) NOT NULL ;
ALTER TABLE S
	DROP COLUMN address;
ALTER TABLE P
	MODIFY COLUMN Pname CHAR(10);
ALTER TABLE SPJ
	MODIFY COLUMN Qty INT(10000) NOT NULL;
ALTER TABLE J
	MODIFY COLUMN City CHAR(5);
ALTER TABLE J
	MODIFY COLUMN Jname CHAR(10) DEFAULT 'Beijing';

CREATE TABLE extra1(
	c1 SMALLINT ,
	c2 INT 
);
CREATE TABLE extra2(
	c2 INT ,
	c3 VARCHAR(10)
);

ALTER TABLE extra1
	ADD PRIMARY KEY c1;
ALTER TABLE extra1
	DROP PRIMARY KEY;
ALTER TABLE extra1
	ADD PRIMARY KEY c2;
ALTER TABLE extra2
	ADD FOREIGN KEY (c2) REFERENCES extra1(c2);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自媒体洗稿软件文心一言api洗稿软件介绍

大家好,我是淘小白~ 这几天给一个客户写了一个文心一言api洗稿的软件。 一、客户要求: 1、采集头条文章(软件内置可采集头条文章网址、微信文章网址、搜狐文章网址) 2、调用文心一言api 3、多线程并发 4、逐段改写文章 5、…

关于YOLOv9项目中使用已有模块自由改进的教程

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!! 1. 文件说明 在YOLOv5-v9,模型的结构是以yaml文件的存储。我们可以在原有的yaml基础上增、减、改模块,创作我们自己的模型。 …

springboot3+jdk17+MP整合最新版jersey详细案例,正真做到拿来即用

如题,springboot3.x java17 MP 整合最新jersey,各种请求类型(实战/详解) 文件上传下载 jersey资源注册 拦截器(JWT) 跨域处理 全局异常 Valid注解校验 等等 ,除非你必须整合security&am…

五、分布式锁-redission

源码仓库地址:gitgitee.com:chuangchuang-liu/hm-dingping.git 1、redission介绍 目前基于redis的setnx特性实现的自定义分布式锁仍存在的问题: 问题描述重入问题同一个线程无法多次获取统一把锁。当方法A成功获取锁后,调用方法B&#xff0…

深度学习pytorch——GPU加速(持续更新)

使用 .to(device),以前使用 .cuda() ,但是现在基本不使用了。 代码示例: 查看电脑GPU运行情况: 使用Ctrl Shift ESC快捷键:

【DP】01背包问题与完全背包问题

一、01背包问题 有 N件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数&…

初探Flink集群【持续更新】

周末下雨&#xff0c;倒杯茶&#xff0c;在家练习Flink相关。 开发工具&#xff1a;IntelliJ Idea 第一步、创建项目 打开Idea&#xff0c;新建Maven项目&#xff0c;包和项目命名 在pom.xml 文件中添加依赖 <properties><flink.version>1.13.0</flink.vers…

SQLServer TRY_CONVERT函数

TRY_CONVERT&#xff1a;数据库中的安全转换利器 在数据库操作中&#xff0c;数据类型转换是一个常见的需求。然而&#xff0c;传统的转换方法在面对无法转换的数据时&#xff0c;往往会抛出错误&#xff0c;影响程序的稳定性和用户体验。为了解决这个问题&#xff0c;SQL Serv…

学习vue3第十节(插槽v-slot)

本节主要介绍一下 v-slot 插槽指令&#xff0c;以及插槽相关内容 1、定义&#xff1a; 子组件给父组件提供使用的一个位置&#xff0c;使用<slot></slot>表示&#xff0c;父组件可以在这个位置填充任何代码&#xff1b; 2、默认插槽 匿名插槽&#xff1a;会自定…

如何设计循环队列(两种方法)

文章目录 前言一、方法一:数组法二、方法二.链表法总结 前言 前面有提到过队列的知识&#xff0c;这次来说一下怎么设计一个循环队列 一.循环队列&#xff08;力扣&#xff09; . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资…

seleniumUI自动化实例(CSDN发布文章)

1.CSDN登陆成功后&#xff0c;点击发布 源码&#xff1a; #点击首页中的发布按钮 CSDNconf.driver.find_element(By.LINK_TEXT,"发布").click() time.sleep(15) 2.输入标题 #输入文章标题&#xff0c;标题格式“selenium UI自动化测试实例今天的日期” CSDNconf.d…

JavaScript中的Lexical Environment

概要 本文主要介绍JavaScript中的一个重要概念Lexical Environment&#xff0c;它可以帮助我们解释我们为什么可以通过嵌套方法&#xff0c;共享数据&#xff0c;以及为什么可以在函数中定义一个和全局变量同名的变量&#xff0c;并且不会影响到全局变量。 基本分析 基本概念…

leetcode 2671

leetcode 2671 题目 例子 思路1 使用哈希&#xff0c; unordered_map 是基于hash 实现的key,val 存储。 代码1 class FrequencyTracker {unordered_map<int, int>m;public:FrequencyTracker() { }void add(int number) {if(m.find(number) m.end()){m.insert({num…

机器学习 | 期望最大化(EM)算法介绍和实现

在现实世界的机器学习应用中&#xff0c;通常有许多相关的特征&#xff0c;但只有其中的一个子集是可观察的。当处理有时可观察而有时不可观察的变量时&#xff0c;确实可以利用该变量可见或可观察的实例&#xff0c;以便学习和预测不可观察的实例。这种方法通常被称为处理缺失…

pytorch 实现多层神经网络MLP(Pytorch 05)

一 多层感知机 最简单的深度网络称为多层感知机。多层感知机由 多层神经元 组成&#xff0c;每一层与它的上一层相连&#xff0c;从中接收输入&#xff1b;同时每一层也与它的下一层相连&#xff0c;影响当前层的神经元。 softmax 实现了 如何处理数据&#xff0c;如何将 输出…

【算法】小强爱数学(迭代公式+数论取模)

文章目录 1. 问题2. 输入3. 输出4. 示例5. 分析6. 思路7. 数论&#xff0c;取模相关公式8. 数论&#xff0c;同余定理9. 代码 1. 问题 小强发现当已知 x y B xyB xyB以及 x y A xyA xyA时,能很轻易的算出 x n x_ {n} xn​ y n y_ {n} yn​ 的值.但小强想请你在已知A和B的…

Java IO的基本使用和常见类的介绍及其案例讲解

Java IO&#xff08;Input/Output&#xff09;是Java编程语言中用于处理输入输出的机制。IO包含了读取和写入数据的功能&#xff0c;可以实现文件的读写、网络通信、和各种设备的输入输出操作。在Java中&#xff0c;IO操作主要由输入流&#xff08;Input Stream&#xff09;和输…

mysql基础2多表查询

多表查询 多表关系: 一对多 案例: 部门 与 员工的关系 关系: 一个部门对应多个员工&#xff0c;一个员工对应一个部门 实现: 在多的一方建立外键&#xff0c;指向一的一方的主键 多对多 案例: 学生 与 课程的关系 关系: 一个学生可以选修多门课程&#xff0c;一门课程也可以…

javaWeb奶茶商城前后台系统

一、简介 在当前数字化时代&#xff0c;电子商务已成为人们生活中不可或缺的一部分。为了满足用户对奶茶的需求&#xff0c;我设计并实现了一个基于JavaWeb的奶茶商城前后台系统。该系统涵盖了用户前台和管理员后台两大模块&#xff0c;包括登录注册、商品展示、购物车管理、订…

java面向对象编程基础

对象&#xff1a; java程序中的对象&#xff1a; 本质上是一种特殊的数据结构 对象是由类new出来的&#xff0c;有了类就可以创建对象 对象在计算机的执行原理&#xff1a; student s1new student();每次new student(),就是在堆内存中开辟一块内存区域代表一个学生对象s1变…