题目来源学校课后作业,禁商业用途,仅用于课业学习
1、掌握MySQL系统的数据库创建方式。
2、掌握MySQL系统的数据表的创建方式。
3、掌握MySQL系统的数据编辑的基本方式
要求使用MySQL5.6以后版本。
软件:Navicat 15
在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) |
(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日
如有错误,请于评论区指正。
刚学数据库没多久,自认能搞出来就很不错了,方法很多,我掌握自己能掌握的就满足了。