MySQL———作业实验

发布于:2025-03-31 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、创建数据库表

1.创建数据库

mysql> create database mydb11_stu;

mysql> use mydb11_stu;

2.建表

(1)创建student表

mysql> create table student (
    ->     id int(10) not null unique primary key,
    ->     name varchar(20) not null,
    ->     sex varchar(4),
    ->     birth_year int,
    ->     department varchar(20),
    ->     address varchar(50)
    -> );

2)创建score表

mysql> create table score (
    ->     id int(10) not null unique primary key auto_increment,
    ->     stu_id int(10) not null,
    ->     c_name varchar(20),
    ->     grade int(10)
    -> );

二、插入数据

1.向student表插入记录如下:

mysql> insert into student values (901, '张三丰', '男', 2002, '计算机系', '北京海淀区');

mysql> insert into student values (902, '李四平', '男', 2000, '中文系', '北京顺义区');

mysql> insert into student values (903, '王小明', '男', 2003, '英语系', '北京朝阳区');

mysql> insert into student values (904, '李白', '男', 1999, '英语系', '辽宁省鞍山市');

mysql> insert into student values (905, '赵云', '男', 2004, '艺术系', '湖南省衡阳市');

mysql> insert into student values (906, '黄蓉', '女', 1998, '计算机', '湖南省常德市');

2.向score表插入记录如下:

mysql> insert into score values (null, 901, '计算机', 98);

mysql> insert into score values (null, 901, '英语', 80);

mysql> insert into score values (null, 902, '计算机', 65);

mysql> insert into score values (null, 902, '中文', 88);

mysql> insert into score values (null, 903, '中文', 94);

mysql> insert into score values (null, 904, '计算机', 78);

mysql> insert into score values (null, 905, '英语', 85);

mysql> insert into score values (null, 906, '计算机', 94);

mysql> insert into score values (null, 906, '英语', 83);

三、查询

1.分别查询student表和score表的所有记录
mysql> select * from student;

mysql> select * from score;

2.查询student表的第2条到5条记录

mysql> select * from student limit 1, 4;

3.从student表中查询计算机系和英语系的学生的信息

mysql> select * from student where department in ('计算机系', '英语系');

4.从student表中查询年龄小于22岁的学生信息

mysql> select * from student where (year(curdate()) - birth_year) < 22;

5.从student表中查询每个院系有多少人

mysql> select department, count(*) as student_count from student group by department;

6.从score表中查询每个科目的最高分

mysql> select c_name, max(grade) as highest_grade from score group by c_name;

7.查询李广昌的考试科目(c_name)和考试成绩(grade)

mysql> select c_name, grade from score where stu_id = (select id from student where name = '李广昌');

8.用连接的方式查询所有学生的信息和考试信息

mysql> select s.*, sc.c_name, sc.grade
    -> from student s
    -> join score sc on s.id = sc.stu_id;

9.计算每个学生的总成绩

mysql> select stu_id, sum(grade) as total_grade from score group by stu_id;

10.计算每个考试科目的平均成绩

mysql> select c_name, avg(grade) as average_grade from score group by c_name;

11.查询计算机成绩低于95的学生信息

mysql> select s.* from student s join score sc on s.id = sc.stu_id where sc.c_name = '计算机' and sc.grade < 95;

12.将计算机考试成绩按从高到低进行排序

mysql> select * from score where c_name = '计算机' order by grade desc;

13.从student表和score表中查询出学生的学号,然后合并查询结果

mysql> select id as stu_id from student union select stu_id from score;

14.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

mysql> select s.name, s.department, sc.c_name, sc.grade from student s join score sc on s.id = sc.stu_id where s.name like '张%' or s.name like '王%';

15.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩

mysql> select s.name, (year(curdate()) - s.birth_year) as age, s.department, sc.c_name, sc.grade from student s join score sc on s.id = sc.stu_id where s.address like '湖南%';