MySQL--大一下阶段测试题及答案

一、资料题 (题数: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);

 

 

 

你可能感兴趣的:(mysql)