题目来源学校课后作业,禁商业用途,仅用于课业学习
《数据库原理与应用》实验一
一、实验目的及要求
1、掌握MySQL系统的数据库创建方式。
2、掌握MySQL系统的数据表的创建方式。
3、掌握MySQL系统的数据编辑的基本方式
二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)
要求使用MySQL5.6以后版本。
软件:Navicat 15
三、实验内容及要求
1、表的创建
在stuManag数据库中创建下面的表
院系信息表:dept2 | |||
字段名称 | 含义 | 数据类型 | 约束 |
dNO | 院系号 | Char(6) | 主键 |
dName | 院系名称 | Varchar(20) | 非空 |
dTel | 院系电话 | Varchar(11) |
专业信息表:major2 | |||
字段名称 | 含义 | 数据类型 | 约束 |
mNO | 专业号 | Char(6) | 主键 |
mName | 专业名称 | Varchar(40) | 非空 |
Subject | 学科 | Varchar(40) | 非空 |
Years | 学习年限 | Integer | >=3 and <=5 |
dNO | 院系编号 | Char(6) | 外键 dept2(dno) |
教师信息表:teacher2 | |||
字段名称 | 含义 | 数据类型 | 约束 |
tNO | 教师号 | Char(6) | 主键 |
tName | 姓名 | Varchar(20) | 非空 |
tSex | 性别 | char(4) | 取值:男、女 |
tBirth | 出生年月 | datetime | |
tRank | 职称 | Varchar(20) | |
dNO | 院系编号 | Char(6) | 外键 dept2(dno) |
2、表中数据的SQL方式编辑
(1)在表dept2中添加1个编号为“d01006”的新的院系,并为该系在major2表中添加2个专业信息,在teacher2表中添加2条教师信息,具体数据自拟。
create database stuManag;
use stuManag;
CREATE TABLE dept2
(
dNO CHAR ( 6 ) PRIMARY KEY,
dName VARCHAR ( 20 ) NOT NULL,
dTel VARCHAR ( 11 )
);
INSERT INTO dept2 VALUES( 'd01006', '金融数学与统计系', '123456' );
CREATE TABLE major2
(
mNO CHAR ( 6 ) PRIMARY KEY,
mName VARCHAR ( 40 ) NOT NULL,
Subject VARCHAR ( 40 ) NOT NULL,
Years INTEGER CHECK(Years BETWEEN 3 AND 5),
dNO CHAR ( 6 ) NOT NULL,
FOREIGN KEY ( dNO ) REFERENCES dept2 ( dNO )
) ;
INSERT INTO major2 VALUES('201612', '信息与计算科学', '理学', 4,'d01006' ),('201611','金融数学','理学',4,'d01006');
CREATE TABLE teacher2
(
tNO CHAR ( 6 ) PRIMARY KEY,
tName VARCHAR ( 20 )NOT NULL,
tSex CHAR ( 4 ) CHECK(tSex='男' OR tSex='女'),
tBirth datetime ,
tRank VARCHAR ( 20 ) ,
dNo CHAR ( 6 ) NOT NULL,
FOREIGN KEY ( dNo ) REFERENCES dept2 ( dNO )
);
INSERT INTO teacher2 VALUES( '010022', '罗时光', '男', '1975-07-21 00:00:00', '讲师', 'd01006' ),('010023', '许知秋','女','1985-06-17 00:00:00','讲师','d01006');
(2)将teacher2表中所有出生年月在年龄超过41岁职称为讲师的教师的职称改为“副教授”。
UPDATE teacher2 SET tRank = '副教授' WHERE TIMESTAMPDIFF(YEAR, tbirth,NOW())> 41 AND tRank = '讲师';
(3)将dept2表中“d01006”号院系所有的专业名称前面加上“互联网”三个字。
UPDATE major2 SET mName = CONCAT('互联网',mName) where dNo = 'd01006';
(4)删除dept2表“d01006”号院系及其的所有相关信息。
DELETE FROM teacher2 WHERE dNO = 'd01006';
DELETE FROM major2 WHERE dNO = 'd01006';
DELETE FROM dept2 WHERE dNO = 'd01006';
注意:本报告中只要求书写SQL语句。未给定信息,请自拟。
3、请基于stuManage数据库,完成下面内容
该数据库代码为教师提供,不在网络共享源代码,仅共享题目+本人的作业代码(复习后会对代码进行一定改进)
本学期学校“陈潇潇”老师职称刚刚由“讲师”提升为“副教授”,拥有了开新课(学校从未开设过的课)的权限,为此陈老师为“0812201”班(学号前7位为班级号)的同学开设了2学分的专业必修课“金融数据挖掘”这门闭卷考试课。课程暂未安排上课时间和地点。请使用SQL语句记录上述业务结果(未定信息,请自拟)。
(1)分析““陈潇潇”老师职称刚刚由“讲师”提升为“副教授””,可知其中隐含了需要修改“陈潇潇”的职称信息,而职称信息在Teacher表中,因此设计语句为:
UPDATE teacher SET tRank = '副教授' WHERE tName = '陈潇潇';
(2)分析“开新课(学校从未开设过的课)”和“开设了2学分的专业必修课“金融数据挖掘”这门闭卷考试课”,可知增加了一门新课程,而且陈老师还开设了该课程。为此需要为Course表添加一条记录,为开课表course_class添加一条记录。设计实现的两条语句为:
INSERT INTO course VALUES('081220','金融数据挖掘',NULL);
INSERT INTO course_class VALUES('0812212345','081220','2009-2010-1','080003','专业必修','闭卷笔试',2,'教1-303','周三3-4','\0');
(3)分析“陈老师为“0812201”班(学号前位为班级号)的同学开设”,可知其中隐含了为“0812201”班的全部同学(查询student表可知具体的两位同学信息)选修该门课。为此需要在student_course表中添加记录。设计实现的两条语句为:
SELECT * FROM student WHERE SUBSTRING(sNo,1,7) = '0812201';
INSERT INTO student_course VALUES ('081220101','0812212345',NULL,NULL,88),('081220102','0812212345',NULL,NULL,84);
(4)假设本学期中间“陈潇潇”老师辞职了,为此学校新招了一位男博士“李波”老师以“讲师”身份来接替“陈潇潇”老师的课程。请使用SQL语句记录上述业务的几条语句。
INSERT INTO teacher VALUES ('080009','李波','男','1976-09-13 00:00:00','讲师','博士','100004');
UPDATE course_class SET tNO = '080009' WHERE cNO = '081220';
时间:2022年10月17日
如有错误,请于评论区指正。
刚学数据库没多久,自认能搞出来就很不错了,方法很多,我掌握自己能掌握的就满足了。