MySQL课后作业、MySQL查询语句练习45题、MySQL50道题目练习

导读:本篇文章讲解 MySQL课后作业、MySQL查询语句练习45题、MySQL50道题目练习,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

MySQL课后作业、MySQL查询语句练习45题、MySQL50道题目练习

1.MySQL课后作业 0718 第三章

在这里插入图片描述
代码如下:

#创建客户信息表(customer)
create table customer
(
	cid int primary key auto_increment, #客户编号
	cname varchar(20) #名称
);

#查看表结构(表中数据类型信息)
desc customer;

#插入数据 #错误写法:insert table customer... 
insert customer #insert [into](可省略) customer...
(cname)
values 
('李四'),
('王五'),
('张三');

#查看表中数据
select * from customer;

#创建种类表(kind)
create table kind
(
	kid int primary key auto_increment, #种类编号
	kname varchar(20) not null#名称
);

desc kind;

insert kind
(kname)
values
('汉堡'),
('小食'),
('饮品');

select * from kind;

#创建食物表(food)
create table food
(
	fid int primary key auto_increment, #食物编号
	fname varchar(20), #名字
	price decimal(5,2), #单价
	kid int, #食品种类(外键)
	foreign key(kid) references kind(kid) 
);

desc food;

insert food
(fname,price,kid)
values 
('鸡翅',9.502,2),
('鸡腿堡',5.00,1),
('可乐',5.00,3),
('奶茶',5.00,3),
('牛肉堡',6.50,1),
('薯条',8.00,2),
('香辣堡',4.51,1);

select * from food;

#创建点餐明细表
create table details
(
	detailsId int primary key auto_increment, #点餐编号
	cid int not null, #客户编号(外键)
	foreign key(cid) references customer(cid), #注意 , 的存在
	fid int not null, #食物编号(外键)
	foreign key(fid) references food(fid),
	qty int #点餐数量
);

desc details;

insert details
(cid,fid,qty)
values 
(1,1,1),
(1,2,2),
(1,4,1),
(2,5,1),
(2,6,2),
(3,3,2),
(3,7,1);

select * from details;

-- 题目:	1.每种分类都有哪些食品(分类名称,食品名称,分类价格)
-- 			2.使用点餐明细表,查询点餐客人名称,食品名称,食品价格,数量
-- 			3.查询每个客人点餐的总金额
-- 			4.查询每种食品分类的,点餐总金额

#1.每种分类都有哪些食品(分类名称,食品名称,分类价格)
select k.kname 分类名称,
				f.fname 食物名称,
				f.price 分类价格
from kind k
join food f
on k.kid=f.kid;
				
#2.使用点餐明细表,查询点餐客人名称,食品名称,食品价格,数量
select c.cname 点餐客人名称,
				f.fname 食品名称,
				f.price 食品价格,
				d.qty 点餐数量
from details d
join food f on d.fid=f.fid  #注意这里不加 , !!!
join customer c on d.cid=c.cid;

#3.查询每个客人点餐的总金额
#select c.cname 点餐客人名称,
#				((f.price)*(d.qty)) 每项点餐金额
#from details d
#join food f on d.fid=f.fid  #注意这里不加 , !!!
#join customer c on d.cid=c.cid; 

select c.cname 点餐客人名称,
				sum((f.price)*(d.qty)) 点餐总金额	  #注意sum() 在分组group by时使用!!!
from details d
join food f on d.fid=f.fid  #注意这里不加 , !!!
join customer c on d.cid=c.cid
group by c.cname; #注意group by的位置,在join..c on..之后

#4.查询每种食品分类的,点餐总金额(解法和上题3同理)
select k.kname 食品种类名称,
				sum((f.price)*(d.qty)) 点餐总金额	  
from kind k
join food f on k.kid=f.kid 
join details d on f.fid=d.fid #这里与上题3不同,这里需要是中间表连接的
group by k.kname; 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.MySQL查询语句练习45题

参考:MySQL查询语句练习题45题版
https://blog.csdn.net/weixin_39718665/article/details/78161013
本文仅为学习总结,方便自己查看,如有侵权请联系删除
表关系分析:
在这里插入图片描述
查询操作思路:
在这里插入图片描述

#写完之后备注 及对应的知识点
#创建表
create table student
(
	sno varchar(20) primary key not null,
	sname varchar(20) not null,
	ssex varchar(20) not null,
	sbirthday date, ##1974-06-03 #这里我们使用date,显示年月日信息足以满足我们的需要
	#sbirthday datetime, #1974-06-03 00:00:00
	class varchar(20)
);

desc student;

create table teacher
(
	tno varchar(20) primary key not null,
	tname varchar(20) not null,
	tsex varchar(20) not null,
	tbirthday date,
	prof varchar(20),
	depart varchar(20) not null
);

desc teacher;

create table course
(
	cno varchar(20) primary key not null,
	#con varchar(20) not null,
	cname varchar(20) not null,
	tno varchar(20) not null,
	#注意,有一个外码必须有一个主码与之对应。亦即从表的外码对应主表的主码
	foreign key(tno) references teacher(tno) 
);

desc course;

create table score
(
	sno varchar(20) not null,
	foreign key(sno) references student(sno),
	cno varchar(20) not null,
	foreign key(cno) references course(cno), 
	degree decimal(4,1)
);

desc score;

#添加信息

#添加学生信息
insert into student 
values
('108','曾华','男','1977-09-01','95033'),
('105','匡明','男','1975-10-02','95031'),
('107','王丽','女','1976-01-23','95033'),
('101','李军','男','1976-02-20','95033'),
('109','王芳','女','1975-02-10','95031'),
('103','陆君','男','1974-06-03','95031');

#查看数据
select * from student; 

#添加教师表
insert into teacher
 values
('804','李诚','男','1958-12-02','副教授','计算机系'),
('856','张旭','男','1969-03-12','讲师','电子工程系'),
('825','王萍','女','1972-05-05','助教','计算机系'),
('831','刘冰','女','1977-08-14','助教','电子工程系');

select * from teacher; 

#添加课程表
insert into course
values
('3-105','计算机导论','825'),
('3-245','操作系统','804'),
('6-166','数字电路','856'),
('9-888','高等数学','831');

select * from course;

#添加成绩表
insert into score 
values
('103','3-245','86'),
('105','3-245','75'),
('109','3-245','68'),
('103','3-105','92'),
('105','3-105','88'),
('109','3-105','76'),
('103','3-105','64'),
('105','3-105','91'),
('109','3-105','78'),
('103','6-166','85'),
('105','6-166','79'),
('109','6-166','81');

select * from score;

#查询表中数据

-- 1.查询student表中所有记录的sname,ssex,class列。
select sname 学生姓名,
				ssex 性别,
				class 班级
from student;

-- 2.查询教师所在的所有的部门(不重复),即depart列。
select distinct depart 部门
from teacher;

#select distinct depart as 部门
#from teacher;

-- 3.查询student表中的所有信息。
select
	*
from student;

-- 4.查询score表中成绩在60到80之间的所有记录。
select degree
from score
where degree>60 and degree<80;

-- 5.查询score表中成绩为85,86或88的记录。
select 
	*
from score
where degree in (85,86,88);

-- 5.1查询score表中成绩为85,86或88的学生记录。(扩展)
select stu.sname 姓名,
				c.cname 科目,
				s.degree 成绩
from score s
join student stu on s.sno=stu.sno
join course c on s.cno=c.cno
where degree in (85,86,88);

-- 6.查询student表中'95031'班或性别为'女'的同学记录。
select
	*
from student
where class='95031' or ssex='女';

-- 7.以class降序查询student表中的所有记录。
select 
	*
from student
order by class desc;

-- 8.以cno升序,degree降序查询score表中的所有记录。
select 
	*
from score
#order by cno asc,degree desc;
order by cno,degree desc;

-- 9.查询'95031'班的学生人数。
select count(*)
from student
where class='95031';

-- 10.查询score表中的最高成绩的学生学号和课程号。
#排序实现
select stu.sno 学号,
				c.cno 课程号,
				degree 最高成绩
from score s
join student stu on s.sno=stu.sno
join course c on s.cno=c.cno
order by s.degree desc #排序(倒序)
limit 0,1; #分页



#子查询实现
select stu.sno 学号,
				c.cno 课程号,
				degree 最高成绩
from score s
join student stu on s.sno=stu.sno
join course c on s.cno=c.cno
where degree=(select max(degree)from score); #子查询

-- 校验
select * from score;
select * from student;

3.MySQL50道题目练习

参考:MySQL50道题目练习
https://zhuanlan.zhihu.com/p/52173860
本文仅为学习总结,方便自己查看,如有侵权请联系删除

// A code block
var foo = 'bar';

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118107.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!