《数据库原理与应用》实验一

题目来源学校课后作业,禁商业用途,仅用于课业学习

《数据库原理与应用》实验一

一、实验目的及要求

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日

如有错误,请于评论区指正。

刚学数据库没多久,自认能搞出来就很不错了,方法很多,我掌握自己能掌握的就满足了。

你可能感兴趣的:(数据库原理与应用,数据库,mysql,sql)