一、资料题 (题数:6,共 100.0 分)
一、创建数据库(2分)
使用SQL语句或者Navicat工具创建一个学生管理系统数据库,要求:数据库名为 myschool+学号最后两位,例如01号同学创建的数据库名应为myschool01。(2.0分)
正确答案
第一空:
create database myschool01;
二、创建数据表(15分)
创建数据表,表的结构如下图表所示:
表1 Student(学生信息表)
字段名
字段说明
字段类型
长度
属性
Snumber
学号
varchar
10
非空
Sname
姓名
varchar
20
非空
sex
性别
char
2
非空
sid
身份证号码
varchar
20
非空
birthday
出生日期
datetime
允许空
address
住址
varchar
30
允许空
表2 Course(课程信息表)
字段名
字段说明
字段类型
长度
属性
Cnumber
课程号
varchar
20
非空
Cname
课程名称
varchar
20
非空
hours
学时
int
允许空
credit
学分
decimal(3,1)
允许空
表3 Score(学生成绩表)
字段名
字段说明
字段类型
长度
属性
Snumber
学号
varchar
10
非空
Cnumber
课程号
varchar
20
非空
total
成绩
decimal(4,1)
非空
(15.0分)
正确答案
第一空:
create table `student` (
`snumber` varchar(10) not null,
`sname` varchar(20) not null,
`sex` char(2) not null,
`sid` varchar(20) null default null,
`birthday` datetime null default null,
`address` varchar(30) null default null
);
create table `course` (
`cnumber` varchar(20) not null,
`cname` varchar(20) not null,
`hours` int(11) null default null,
`credit` decimal(3, 1) null default null
);
create table `score` (
`snumber` varchar(10) not null,
`cnumber` varchar(20) not null,
`total` decimal(4, 1) not null
);
三、修改表和添加约束(28分)
1、 使用SQL语句,为student添加national(民族)字段,char(10),允许为空。(5分)
2、 使用SQL语句,将student表的birthday字段的字段类型改为date。(5分)
3、 分析以上三张表,确定三张表的主键,分别为三张表添加主键约束。(5分)
4、 请为student表添加默认约束DF_student_national和唯一约束IX_sid。(说明:民族默认值为“汉族”;身份证为唯一值)。(8分)
5、 请为score表添加外键约束FK_snumber、FK_cnumber。(5分)
正确答案
第一空:
alter table student add national char(10) null;
第二空:
alter table student modify birthday date;
第三空:
alter table student add primary key(snumber);
alter table course add primary key(cnumber);
alter table score add primary key(snumber,cnumber);
第四空:
-- 修改默认值
alter table student modify national char(10) character set utf8;
alter table student alter national set default '汉';
-- 添加唯一约束
alter table student modify sid varchar(20) unique;
或者
alter table student add unique(sid);
-- 删除唯一约束
alter table student drop index sid;
第五空:
alter table score add constraint FK_snumber FOREIGN key(snumber) references student(snumber);
alter table score add constraint FK_cnumber FOREIGN key(cnumber) references course(cnumber);
四、添加数据(15分)
请使用SQL语句为三张表添加以下数据。
student表数据
Snumber
Sname
Sex
Sid
Birthday
Address
National
0102202001
朱三贵
男
440121199911022354
1999-11-1
21栋207
壮族
0102202002
夏怡芳
男
440121200010022224
2000-10-2
21栋209
彝族
0102202003
周敏浩
女
440223199911280026
1999-11-28
20栋606
汉族
0102202004
李萌萌
女
440222199909281124
1999-9-28
20栋606
回族
course表数据
Cnumber
Cname
Hours
Credit
001
java面向对象程序设计
54
3
002
应用数学1
74
4
003
大学英语
54
3
004
数据库应用基础
54
3
005
网页设计基础
72
4
score表数据
Snumber
Cnumber
Total
0102202001
001
90
0102202001
002
85
0102202001
003
88
0102202002
001
85
0102202002
003
96
0102202003
002
88
0102202004
001
78
0102202004
002
90
正确答案
第一空:
insert into `student` values ('0102202001', '朱三贵', '男', '440121199911022354', '1999-11-01', '21栋207', '壮族');
insert into `student` values ('0102202002', '夏怡芳', '男', '440121200010022224', '2000-10-02', '21栋209', '彝族');
insert into `student` values ('0102202003', '周敏浩', '女', '440223199911280026', '1999-11-28', '20栋606', '汉族');
insert into `student` values ('0102202004', '李萌萌', '女', '440222199909281124', '1999-09-28', '20栋606', '回族');
第二空:
insert into `course` values ('001', 'java面向对象程序设计', 54, 3.0);
insert into `course` values ('002', '应用数学1', 74, 4.0);
insert into `course` values ('003', '大学英语', 54, 3.0);
insert into `course` values ('004', '数据库应用基础', 54, 3.0);
insert into `course` values ('005', '网页设计基础', 72, 4.0);
第三空:
insert into `score` values ('0102202001', '001', 90.0);
insert into `score` values ('0102202001', '002', 85.0);
insert into `score` values ('0102202001', '003', 88.0);
insert into `score` values ('0102202002', '001', 85.0);
insert into `score` values ('0102202002', '003', 96.0);
insert into `score` values ('0102202003', '002', 88.0);
insert into `score` values ('0102202004', '001', 78.0);
insert into `score` values ('0102202004', '002', 90.0);
五、数据导出(5分)
1、 把student表的数据导出到txt文件(路径任意),设置字段间用逗号隔开,字段的值用“”括起来,每一行记录都换行(5.0分)
正确答案
第一空:
select * from myschool01.student
into outfile 'C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\bak_myschool_student.txt' character set gbk
fields
terminated by ','
enclosed by '\"'
lines
terminated by '\r\n';
------------------- 或者 ---------------------------
mysqldump -u root -p -T "C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads" myschool01 student --fields-terminated-by=, --fields-optionally-enclosed-by=\" --lines-terminated-by=\r\n
六、SQL语句(35分)
1、创建视图v_stuInfo,显示所有学生的学号、课程名称和成绩(只返回前5行记录)。(5分)
2、查询与“周敏浩”同性别的同学,显示姓名和性别。(5分)
3、查询所有课程的总学分和总学时数。(5分)
4、查询参加了课程号为“001”或“002”考试的学生姓名。(5分)
5、查询每个学生共修了多少学分。(5分)
6、删除学号为“0102202004”的学生成绩。(5分)
7、为course表的字段“cname”创建索引idx_CName,该索引为唯一索引。(5分)
正确答案
第一空:
create view v_stuinfo as select student.snumber,cname,total
from student,course,score
where student.snumber = score.snumber and course.cnumber = score.cnumber limit 5;
第二空:
select sname,sex from student
where sex = (select sex from student where sname = '周敏浩');
第三空:
select sum(credit),sum(hours) from course;
第四空:
select sname
from student where snumber in(select distinct snumber from score where cnumber = '001' or cnumber = '002');
第五空:
select student.snumber,sname,sum(credit)
from student,score,course
where student.snumber = score.snumber and score.cnumber = course.cnumber
group by student.snumber;
第六空:
delete from score where snumber = '0102202004';
第七空:
create unique index idx_cname on course(cname);