首页 > 数据库 >成长笔记二、MySQL数据库--学生管理系统数据库手写SQL实现(实践篇)

成长笔记二、MySQL数据库--学生管理系统数据库手写SQL实现(实践篇)

时间:2023-05-22 16:13:38浏览次数:49  
标签:insert -- 数据库 default values tbl student SQL into

  • 学生对象----> 学生表(student)
  • 老师对象----> 老师表(teacher)
  • 课程对象----> 课程表(course)
  • 成绩对象----> 成绩表(score)
  • 班级对象----> 班级表(前缀_class,因为user或class等英文单词是程序中的关键字.尽量不直接用)
  • 等.....

数据库设计

手写SQL实现


/*
MySQL: 手写的SQL语句.可直接执行
学生表,老师表,课程表,班级表,成绩表
*/
drop table if EXISTS  tbl_score;   -- 删除成绩(先删除外键表再删主表)
drop table if EXISTS  tbl_student; -- 删除学生
drop table if EXISTS  tbl_class;   -- 删除班级
drop table if EXISTS  tbl_teacher; -- 删除老师
drop table if EXISTS  tbl_course;  -- 删除课程

-- 班级对象(tbl_class) : 唯一标识id,班级编号,人数
create table tbl_class(
	id int primary key auto_increment,
  cname varchar(50),
  size  int # 班级人数
);

insert into tbl_class values(default,'人工智能一班',30);
insert into tbl_class values(default,'数据分析一班',30);
insert into tbl_class values(default,'爬虫一班',30);
insert into tbl_class values(default,'大数据一班',30);

-- 学生对象(student): 唯一标识id,姓名,性别,年龄,生日,电话,地址,邮箱,班级编号
create table tbl_student(
	id int primary key auto_increment,  #id自增
  sname varchar(50) not null,
  sex char(2),
  age int ,
  birthday date,
  phone VARCHAR(11),
  email varchar(50),
  addr  varchar(100),
  c_id int,
  foreign key(c_id) references tbl_class(id)

);
-- 插入数据
insert into tbl_student values(default,'张A','男',20,'1980-04-03','18888888888','[email protected]','北京',1);
insert into tbl_student values(default,'张B','男',20,'1980-04-03','18888888888','[email protected]','北京',1);
insert into tbl_student values(default,'赵C','女',21,'1980-04-03','18888888888','[email protected]','天津',1);
insert into tbl_student values(default,'赵D','女',21,'1980-04-03','18888888888','[email protected]','天津',1);
insert into tbl_student values(default,'钱E','女',21,'1980-04-03','18888888888','[email protected]','上海',1);
insert into tbl_student values(default,'钱F','男',17,'1980-04-03','18888888888','[email protected]','上海',1);
insert into tbl_student values(default,'孙G','男',16,'1980-04-03','18888888888','[email protected]','杭州',1);
insert into tbl_student values(default,'孙H','女',17,'1980-04-03','18888888888','[email protected]','杭州',2);
insert into tbl_student values(default,'李I','男',26,'1980-04-03','18888888888','[email protected]','苏州',2);
insert into tbl_student values(default,'李J','女',34,'1980-04-03','18888888888','[email protected]','苏州',2);
insert into tbl_student values(default,'周K','女',40,'1980-04-03','18888888888','[email protected]','四川',2);
insert into tbl_student values(default,'周L','男',32,'1980-04-03','18888888888','[email protected]','四川',2);
insert into tbl_student values(default,'吴M','女',16,'1980-04-03','18888888888','[email protected]','广州',2);
insert into tbl_student values(default,'吴N','女',20,'1980-04-03','18888888888','[email protected]','广州',3);
insert into tbl_student values(default,'郑O','男',22,'1980-04-03','18888888888','[email protected]','重庆',4);
insert into tbl_student values(default,'郑P','男',23,'1980-04-03','18888888888','[email protected]','重庆',4);
insert into tbl_student values(default,'王Q','女',24,'1980-04-03','18888888888','[email protected]','北京',1);
insert into tbl_student values(default,'王R','男',28,'1980-04-03','18888888888','[email protected]','天津',1);
insert into tbl_student values(default,'冯S','女',39,'1980-04-03','18888888888','[email protected]','山东',1);
insert into tbl_student values(default,'冯T','男',20,'1980-04-03','18888888888','[email protected]','山东',2);
insert into tbl_student values(default,'陈U','女',25,'1980-04-03','18888888888','[email protected]','山西',2);
insert into tbl_student values(default,'陈V','男',28,'1980-04-03','18888888888','[email protected]','山西',3);
insert into tbl_student values(default,'楚W','女',28,'1980-04-03','18888888888','[email protected]','山西',4);
insert into tbl_student values(default,'楚X','男',29,'1980-04-03','18888888888','[email protected]','河北',1);
insert into tbl_student values(default,'魏Y','女',22,'1980-04-03','18888888888','[email protected]','河北',2);
insert into tbl_student values(default,'魏Z','男',21,'1980-04-03','18888888888','[email protected]','河南',3);

#select * from tbl_student;

-- 老师对象(teacher): 唯一标识id,姓名,性别,年龄,电话
create table tbl_teacher(
	id int primary key auto_increment ,
	tname varchar(50) not null,
  sex char(2),
  age int,
  phone varchar(11)
);
insert into tbl_teacher values(default,'成龙','男',58,'1766666601');
insert into tbl_teacher values(default,'黎明','男',58,'1766666601');
insert into tbl_teacher values(default,'孙俪','女',35,'1766666601');
insert into tbl_teacher values(default,'范冰冰','女',35,'1766666601');

# select * from tbl_teacher

-- 课程对象(course): 唯一标识id,课程名,开课时间,课时数量
create table tbl_course(
	id int primary key auto_increment ,
	cname varchar(11) not null unique, #非空,唯一
	start_time datetime,
	count int 
);
insert into tbl_course values(default,'人工智能AI',now(),80);
insert into tbl_course values(default,'数据分析',now(),70);
insert into tbl_course values(default,'爬虫',now(),60);
insert into tbl_course values(default,'大数据',now(),90);

-- 成绩对象(score) : id,分数,课程名, 学生名
create table tbl_score(
	id int primary key auto_increment,
  score float(4,1),
  s_id int not null,
	c_id int not null,
	foreign key(s_id) references tbl_student(id),  #建表时指定外键
  foreign key(c_id) references tbl_course(id)  #建表时指定外键
);

# 修改表添加外键
#alter table tbl_score add constraint FK_scoreid_courseid foreign key(c_id) references tbl_course(id);
-- 第1个人,第4门课
insert into tbl_score values (default,58,1,1);
insert into tbl_score values (default,89,1,1);
insert into tbl_score values (default,78,1,2);
insert into tbl_score values (default,65,1,3);
insert into tbl_score values (default,90,1,4);
-- 第2个人4门课
insert into tbl_score values (default,90,2,1);
insert into tbl_score values (default,54,2,2);
insert into tbl_score values (default,89,2,2);
insert into tbl_score values (default,87,2,3);
insert into tbl_score values (default,92,2,4);

-- 第3个人3门课
insert into tbl_score values (default,90,3,1);
insert into tbl_score values (default,89,3,2);
insert into tbl_score values (default,87,3,3);


-- 第4个人3门课
insert into tbl_score values (default,87,4,1);
insert into tbl_score values (default,86,4,2);
insert into tbl_score values (default,90,4,3);
insert into tbl_score values (default,67,4,4);

-- 第5个人4门课
insert into tbl_score values (default,98,5,1);
insert into tbl_score values (default,90,5,2);
insert into tbl_score values (default,78,5,3);
insert into tbl_score values (default,98,5,4);
# select * from tbl_score;
-- 删除主键和外键
# alter table 表名 drop foreign key 外键(区分大小写);
# alter table 表名 drop primary key;
# alter  table tbl_score drop foreign key  FK_scoreid_courseid



基础练习题目

# 1. 查询所有学生信息
# 2. 查询所有学生的名字和年龄
# 3. 查询所有男生信息
# 4. 查询所有年龄大于20的学生资料
# 5. 查询所有年龄大于20的女生资料
# 6. 查询男人总人数
# 7. 查询男人和女人各多少人
# 8. 查询张A的名字和年龄
# 9. 查询学生名单(包含班级名)
# 10. 查询人工智能一班的学生名单
# 11. 查询人工智能一班的总人数
# 12. 查询人工智能一班的男生人数
# 13. 查询人工智能一班的男女生各多少人
# 14. 查询每个班各多少人(显示班级编号和总人数)
# 15. 查询每个班各多少人(显示班级名和总人数)
# 16. 查询姓张的所有人
# 17. 统计男生平均年龄
# 18. 统计男生和女生平均年龄
# 19. 统计每个班学生平均年龄
# 20. 统计每个班男生和女生平均年龄
# 21. 查询最大年龄的男生信息
# 22. 查询大数据一班,年龄最小人的信息
# 23. 查询各课的平均分
# 24. 查询各班的平均分
# 25. 查询各班的平均分(班级名和平均分)
# 26. 查询爬虫一班的成绩单(显示班级名,学生名)
# 27. 统计挂科人员资料(班级,名字,科目,分数)
# 28. 统计每个科目的挂科人数
# 29. 查询各课的平均分
# 30. 查询各科的最高分
# 31. 查询各科的最低分
# 32. 查询各科的最高分,最低分,平均分.一行SQL实现

注意:真实项目中数据库外键一般不创建,删除逻辑通过代码控制

标签:insert,--,数据库,default,values,tbl,student,SQL,into
From: https://www.cnblogs.com/itzixueba/p/17420893.html

相关文章

  • vscode配置远端服务器深度学习项目
    vscode配置远端服务器深度学习项目1.安装vscode官网地址:https://code.visualstudio.com/下载安装程序,运行安装即可2.连接服务器2.1安装相关插件需要安装Remote-SSH和RemoteDevelopment这两个插件2.2配置服务器连接插件安装完成后,在SSH一栏中点击OpenSSHCo......
  • 3D模型渲染引擎6大特点解读:助力AR/VR呈现惊叹的视觉效果!
    一、用于桌面、移动和AR/VR应用程序的2D和3D图形引擎HOOPSVisualize是一个3D图形SDK,可以快速开发高性能、跨平台的工程应用程序。主要特点包括:以工程为中心的高性能可视化,使用高度优化的OpenGL或DirectX驱动程序以充分利用可用的图形硬件程安全的C++和C#接口,在内部利......
  • Java调用采集拼多多根据ID获取商品详情API接口返回值说明示例,获取电商平台商品详情数
    ​     拼多多是一家基于C2B拼团营销方式主营团购的电商平台,其盈利模式由利润源、利润点、利润杠杆、利润通道和利润屏障五个要素组成的。通过锁定目标客户、关注客户价值、举办相关活动、不断拓展收入来源等经营策略,拼多多在较短的时间内得以快速成长。然而这种模式也......
  • charles 选中某个请求后,下方不展示 response 小窗口
    今天使用charles抓包,选中某个请求后,发现下方只有Request窗口,并没有Response的窗口,发现需要点击Conent之后才能看到Response窗口......
  • 【研究生学习】Batch Normalization和Layer Normalization
    本篇博客记录一下在深度学习中常用的BatchNormalization和LayerNormalization方法的基本原理,参考的资料的链接如下:独立同分布的数据可以简化常规机器学习模型的训练,提升机器学习模型的预测能力,因此把数据喂给机器学习模型之前,白化是一个重要的数据预处理步骤,......
  • 1千多求职简历写作大全ACCESS\EXCE数据库
    简历是用于应聘的书面交流材料,它向未来的雇主表明自己拥有能够满足特定工作要求的技能、态度、资质和资信。成功的简历就是一件营销武器,它向未来的雇主证明自己能够解决他的问题或者满足他的特定需要,因此确保能够得到会使自己成功的面试。数据库包含详细分类有:简历范文(250条)、简......
  • 阅读笔记9
    第九章:《构建之法》第九章介绍了软件工程中的进化式架构思想,通过历史案例和个人实践经验,讲述了如何使用架构创新、文化变革和持续重构这三个方面来实现软件架构的进化。软件架构进化的特殊性与生物演化不同:生物演化是靠基因突变和自然选择,而软件演化则更依赖于人为介入。没......
  • DDD领域驱动设计
    本文源于最近学习实践DDD相关知识的自我总结。相关内容源于网络本文部分引用1、钟敬老师极客时间的DDD课程——手把手教你落地DDD2、欧创新老师极客时间的DDD课程——DDD实战课一、DDD基本开发过程1、捕获行为需求识别需求流程、功能、参与者、功能结......
  • 如何通过Java代码将 PDF文档转为 HTML格式
    虽然PDF文件适合用于打印和发布,但不适合所有类型的文档。例如,包含复杂图表和图形的文档可能无法在PDF中呈现得很好。但是HTML文件可以在任何可运行浏览器的计算机上进行阅读并显示。并且HTML还具有占用服务器资源较小,便于搜索引擎收录的特点。那么今天这篇文章就将展示如何通过Ja......
  • kindle7插件开发笔记[2]-使用Rust重写插件
    前言上一篇笔记:kindle7插件开发笔记[1]-在折腾中入门代码地址:https://gitee.com/qsbye/kindle-plugin-touch摘要用Rust语言重写在Kindle上显示图片的插件,初步实现了图片完整显示及自动刷新屏幕的功能.说明Kindle7的屏幕信息eips-i结果:Fixedframebufferinfoi......