上机实验:MySQL的库、表与记录相关的操作
实验名称 MySQL的库、表与记录相关的操作
实验目的
1、掌握MySQL中的建库、建表基本操作;
2、掌握MySQL中各种数据增、删、改、查的相关操作。
上机重、难点
重点
1、掌握MySQL中的建库、建表基本操作;
2、掌握MySQL中各种数据增、删、改、查的相关操作。
难点
1、跨表查询;
2、分组查询;
上机要求
1、提前熟悉本次上机内容;
2、在做的过程中,务请记录下自己发现的一些问题及采取的解决办法;
3、上机后请大家完成本份上机实验报告并上传学习通,完成其中的上机内容、上机步骤操作记录及最后的收获与心得部分。
实验设备与
软件 设备 PC电脑或笔记本一台
软件 Wamp、ZendStudio
上机内容
任务1:创建学生成绩管理数据库score;
任务2:在score数据库中创建表1~表3,如下所示
表1 student表的表结构
字段名称 | 数据类型 | 长度 | 是否允许NULL值 | 说明 |
---|---|---|---|---|
sno | char | 10 | 否 | 主键 |
sname | varchar | 8 | 是 | |
ssex | char | 2 | 是 | 取值:男或女 |
sbirthday | date | 是 | ||
saddress | varchar | 50 | 是 |
表2 course表(课程名称表)的表结构
字段名称 | 数据类型 | 长度 | 是否允许NULL值 | 说明 |
---|---|---|---|---|
cno | char | 5 | 否 | 主键 |
cname | varchar | 20 | 否 |
表3 sc表(成绩表)的表结构
字段名称 | 数据类型 | 长度 | 是否允许NULL值 | 说明 |
---|---|---|---|---|
sno | char | 10 | 否 | 组合主键,外键 |
cno | char | 5 | 否 | 组合主键,外键 |
degree | int | 是 | 取值1~100 |
任务3:向表1~表3插入数据记录(自拟)
任务4:对任意一张表中的数据进行修改(自拟)
任务5:删除某张表中的记录(自拟)
任务6:数据查询
(1)查询学生表中所有男生信息
(2)统计学生表中男、女生人数
(3)查询选修了某门课程的学生的学号及其成绩,查询结果按分数降序排列(自拟)
(4)查询选修了某门课程的学生学号和姓名(自拟)
实操记录
此处完整写下任务1—任务6的SQL代码,并将运行结果截图粘贴到相应任务下。
任务1:创建学生成绩管理数据库score;
create database if not exists score;
use score;
select database();
任务2:在score数据库中创建表1~表3
drop table if exists tbl_student;
create table tbl_student(
sno char(10) not null comment '学生学号',
sname varchar(8) null comment '学生名字',
ssex char(2) null comment '性别',
sbirthday date null comment '出生日期',
saddress varchar(50) null comment '地址',
constraint chk_ssex check (ssex in ('男','女')),
primary key (sno)
);
drop table if exists tbl_course;
create table tbl_course(
cno char(5) not null comment '课程号',
cname varchar(20) not null comment '课程名',
primary key (cno)
);
drop table if exists tbl_sc;
create table tbl_sc(
sno char (10) not null comment '学生编号',
cno char (5) not null comment '课程号',
degree int null check (degree between 1 and 100) comment '成绩',
primary key (sno, cno),
foreign key (sno) references tbl_student(sno),
foreign key (cno) references tbl_course(cno)
);
show tables;
desc tbl_student;
desc tbl_course;
desc tbl_sc;
任务3:向表1~表3插入数据记录(自拟)
insert into tbl_student (sno, sname, ssex, sbirthday, saddress) values
('2302150601', 'ZD', '男', '2001-01-01', '广东省珠海市'),
('2302150602', 'LQT', '男', '2001-01-01', '广东省珠海市'),
('2302150603', 'DRB', '男', '2001-01-01', '广东省汕尾市'),
('2302150604', 'LJJ', '男', '2001-01-01', '广东省梅州市');
insert into tbl_course (cno, cname) values
('23001', '计算机系统'),
('23002', '数据结构'),
('23003', 'Java');
insert into tbl_sc (sno, cno, degree) values
('2302150601', '23001', '99'),
('2302150601', '23002', '95'),
('2302150601', '23003', '90'),
('2302150602', '23001', '90'),
('2302150602', '23002', '98'),
('2302150602', '23003', '100'),
('2302150603', '23001', '97'),
('2302150603', '23002', '90'),
('2302150603', '23003', '96'),
('2302150604', '23001', '91'),
('2302150604', '23002', '97'),
('2302150604', '23003', '96');
select sno, sname, ssex, sbirthday, saddress from tbl_student;
select cno, cname from tbl_course;
select sno, cno, degree from tbl_sc;
任务4:对任意一张表中的数据进行修改(自拟)
update tbl_student set sbirthday='2024-01-01' where sno='2302150601';
update tbl_student set sbirthday='2024-01-03' where sno='2302150602';
update tbl_student set sbirthday='2024-01-04' where sno='2302150603';
update tbl_student set sbirthday='2024-01-05' where sno='2302150604';
select sno,sname, ssex, sbirthday, saddress from tbl_student;
任务5:删除某张表中的记录(自拟)
delete from tbl_sc where sno='2302150601' and cno='23001';
delete from tbl_sc where sno='2302150601' and cno='23002';
select sno, cno, degree from tbl_sc;
任务6:数据查询
(1)查询学生表中所有男生信息
select * from tbl_student where ssex like '男';
(2)统计学生表中男、女生人数
select ssex,
count(*) as student_count
from tbl_student
where ssex in ('男', '女')
group by ssex;
(3)查询选修了某门课程的学生的学号及其成绩,查询结果按分数降序排列(自拟)
select tbl_student.sno, degree
from tbl_student
join tbl_sc on tbl_student.sno = tbl_sc.sno
where tbl_sc.cno = '23003'
order by tbl_sc.degree desc;
(4)查询选修了某门课程的学生学号和姓名(自拟)
select tbl_student.sno, tbl_student.sname
from tbl_student
join tbl_sc on tbl_student.sno = tbl_sc.sno
where tbl_sc.cno = '23002';