查询同时参加计算机和英语考试的学生的信息,运维技术指导【3】MySQL语句练习...

题目:按下列要求定义Student表和Score表,为 student 表和 score 表增加记录,按照下列各要求写出 SQL 语句以及在数据库上执行的结果。

1、Student 表的定义

字段名

字段描述

数据类型 (主键 外键 非空 唯一 自增)

Id

学号

INT(10) 是 否 是 是 是

Name

姓名

VARCHAR(20)

Sex

性别

VARCHAR(4) 否 否 否 否 否

Birth

出生年份

YEAR 否 否 否 否 否

Department

院系

VARCHAR(20) 否否是否否

Address

家庭住址

VARCHAR(50) 否否否否否

2、Score 表的定义

字段名

字段描述

数据类型 (主键 外键 非空 唯一 自增)

Id

编号

INT(10) 是 否 是 是 是

Stu_id

学号

INT(10) 否 否 是 否 否

C_name

课程名

VARCHAR(20) 否 否 否 否 否

Grade

分数

INT(10) 否 否 否 否 否

3、向 student 表插入记录的 INSERT 语句如下:

'张老大', '男',1985,'计算机系', '北京市海淀区'

'张老二', '男',1986,'中文系', '北京市昌平区'

'张三', '女',1990,'中文系', '湖南省永州市');

李四', '男',1990,'英语系', '辽宁省阜新市');

王五', '女',1991,'英语系', '福建省厦门市');

王六', '男',1988,'计算机系', '湖南省衡阳市');

4、向 score 表插入记录的 INSERT 语句如下:

张老大,'计算机',98);

张老大,'英语', 80);

张老二, '计算机',65);

张老二, '中文',88);

张三, '中文',95);

李四, '计算机',70);

李四, '英语',92);

王五, '英语',94);

王五, '计算机',90);

王六, '英语',85);

答案:

1.写出创建 student 和 score 表的 SQL 语句,并在自己数据库上执行

create table student (id int(10) primary key not null unique auto_increment, name varchar(20) not null,sex varchar(4),birth year,department varchar(20) not null,address varchar(50)) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

查看student表结构

355910bd60e054fdc4db4a28ad03efb6.png

create table score (id int(10) primary key not null unique auto_increment,stu_id int(10) not null,c_name varchar(20),grade int(10)) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

查看score 表结构

85e3b82b5d0b9d36e2686a5fe4f7ec8e.png

2.为 student 表和 score 表增加记录,写出 SQL 语句以及在自己的数据库上执行

<1>向student 表插入数据

insert into student(id,name,sex,birth,department,address)values('801','张老大', '男',1985,'计算机系', '北京市海淀区');

insert into student(id,name,sex,birth,department,address)values('802','张老二', '男',1986,'中文系', '北京市昌平区');

insert into student(id,name,sex,birth,department,address)values('803','张三', '女',1990,'中文系', '湖南省永州市');

insert into student(id,name,sex,birth,department,address)values('804','李四', '男',1990,'英语系', '辽宁省阜新市');

insert into student(id,name,sex,birth,department,address)values('805','王五', '女',1991,'英语系', '福建省厦门市');

insert into student(id,name,sex,birth,department,address)values('806','王六', '男',1988,'计算机系', '湖南省衡阳市');

查询student表全部内容

6a9cb26a3423aeee72d6384de503de88.png

<2>向score表插入数据

insert into score(stu_id,c_name,grade)values(801,'计算机',98);

insert into score(stu_id,c_name,grade)values(801,'英语', 80);

insert into score(stu_id,c_name,grade)values(802, '计算机',65);

insert into score(stu_id,c_name,grade)values(802, '中文',88);

insert into score(stu_id,c_name,grade)values(803, '中文',95);

insert into score(stu_id,c_name,grade)values(804, '计算机',70);

insert into score(stu_id,c_name,grade)values(804, '英语',92);

insert into score(stu_id,c_name,grade)values(805, '英语',94);

insert into score(stu_id,c_name,grade)values(805, '计算机',90);

insert into score(stu_id,c_name,grade)values(806, '英语',85);

查询score表全部内容

11c1391046e6bc426d2fa3d761461953.png

3.查询 student 表的所有记录

select * from student;

f80fc4eea56be552533275d0159ca452.png

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

select * from student limit 2,4;

3566383f80c671e08d7f77276eb43731.png

5.从 student 表查询所有学生的学号(id)、姓名(name)和院系(department)的信息

select id,name,department from student;

6447594bb7aba802edcf61c26ab6805d.png

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

select * from student where department='计算机系' or department='英语系';

b8f81d1f60b8e51537b9c56bac576343.png

7.从 student 表中查询年龄 28~32 岁的学生信息

select * from student where (2020-birth)<=32 and 28<=(2020-birth);

ad54b63487abb435594f17ee110a2de5.png

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

select department,count(1) from student group by department;

4ce0653eab104fbbccbb2ba6ce883e36.png

巩固练习:查询score表学习每个课程的人数

select c_name,count(1) from score group by c_name;

e85c9add5db4224419a0bddb85f6825e.png

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

select c_name 科目,max(grade) 最高分 from score group by c_name;

8154318420d66efeb98dc974339040ef.png

10.查询李四的考试科目(c_name)和考试成绩(grade)

select name,c_name,grade from student e,score r where e.id=r.stu_id and e.name='李四';

46ed566841544aa335fd47bf031eefb0.png

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

select * from student e,score r where e.id=r.stu_id;

f242f5280975ab294077035b82b2af5d.png

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

select stu_id,sum(grade) from score group by stu_id;

d7df1a9d6f2f30c6566e780f58ee95ba.png

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

select c_name,avg(grade) from score group by c_name;

df0221a29606b557f86a17f296eac967.png

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

select * from student e,score r where r.grade<95 and e.id=r.stu_id and r.c_name='计算机';

d8fde5e5e0fa415c063f9fbdc7cc9425.png

15.查询同时参加计算机和英语考试的学生的信息

select * from student a,score b,score c where a.id=b.stu_id and b.c_name='计算机' and a.id=c.stu_id and c.c_name='英语';

9ddef684c251542d9663f226397e2675.png

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

select c_name,grade from score where c_name='计算机' order by grade desc;

c7b345cbc6703a543577b44c1883aaf0.png

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

select * from student e,score r where e.id=r.stu_id;

bf45ad9bf5a4d4a08830966848535a1f.png

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

select name,department,c_name,grade from student e inner join score r on e.id=r.stu_id where name like '张%' or name like '王%';

d956f7083b72dd121492a17e9b49db19.png

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

select name,(2020-birth),department,c_name,grade from student e,score r where e.address like '%湖南%' and e.id=r.stu_id;

0bebd01dd164bea68a3584784f7eae24.png

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysql常用查询测试及答案: 参考链接: http://blog.sina.com.cn/s/blog_767d65530101861c.html -------------------创建如下表---------------------- 1.创建表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4), birth YEAR, department VARCHAR(20), address VARCHAR(50) ); 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) ); 2.为student表和score表增加记录向student表插入记录的INSERT 语句如下: INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区'); INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区'); INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市'); INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市'); INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市'); INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市'); 向score表插入记录的INSERT语句如下: INSERT INTO score VALUES(NULL,901, '计算机',98); INSERT INTO score VALUES(NULL,901, '英语', 80); INSERT INTO score VALUES(NULL,902, '计算机',65); INSERT INTO score VALUES(NULL,902, '中文',88); INSERT INTO score VALUES(NULL,903, '中文',95); INSERT INTO score VALUES(NULL,904, '计算机',70); INSERT INTO score VALUES(NULL,904, '英语',92); INSERT INTO score VALUES(NULL,905, '英语',94); INSERT INTO score VALUES(NULL,906, '计算机',90); INSERT INTO score VALUES(NULL,906, '英语',85); --------练习及答案---------- -- 3.查询student表的所有记录 -- SELECT * FROM student -- 4.查询student表的第2条到4条记录 -- SELECT * from student LIMIT 1,4 -- 5.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息 -- SELECT s.id,s.name,s.department FROM student s -- 6.从student表中查询计算机系和英语系的学生信息 -- SELECT * FROM student s WHERE s.department in ('英语系','计算机系') -- 7.从student表中查询年龄18~22岁的学生信息 -- SELECT *,2015-s.birth AS age FROM student s WHERE 2015-s.birth BETWEEN 20 and 25; -- SELECT *,2015-birth AS age FROM student s WHERE 2015-birth>=18 AND 2015-birth<=2 -- 8.从student表中查询每个院系有多少人 -- SELECT department, COUNT(1) FROM student s GR

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值