首页 > 数据库 >任务卡_05-数据库_数据库基础

任务卡_05-数据库_数据库基础

时间:2022-11-08 22:32:28浏览次数:46  
标签:INSERT 01 05 INTO id 任务 score VALUES 数据库


目录

​​一,数据库训练任务​​

​​1,任务概述​​

​​2,参考代码​​

​​2.1 建表及插入数据​​

​​2.2 检索​​

​​3,参考资料​​

​​MySQL数据库中int,bigint,smallint和tinyint区别​​

 


一,数据库训练任务

1,任务概述

新入职的程序员冯帅被公司安排去跟一个学生管理系统的项目,项目组长 安排他去主要负责数据库部分的所有操作,日常数据的维护和根据需求进行数 据查询。可冯帅之前并没有接触过数据库,那就抓紧时间学习一下数据库,把 组长安排的 sql 补充一下吧!

数据表: 

  • 年级表:年级 id(主键),年级名称 
  • 成绩表:id(主键),学员编号,科目 id,分数,考试时间 
  • 学生表:学生编号(主键),学生姓名,登录密码,性别,年级 id,电话, 地址,出生日期,email 
  • 科目表:科目 id(主键),科目名称,学时,年级 id

 需求

  • 1. grade 表增加一个阶段,“就业期” 
  • 2.将第三阶段的学生的 gradeid 改为就业期的 id 
  • 3.查询所有得了 100 分的学号 
  • 4.查询所有 1989 年出生的学生(1989-1-1~1990-1-1) 
  • 5.查询学生姓名为“金蝶”的全部信息 
  • 6.查询 subjectid 为 8 的科目考试未及格(60 分)的学号和成绩 
  • 7.查询第 3 阶段课时大于 50 的课程全部信息
  • 8.查询 S1101001 学生的考试信息 
  • 9.查询所有第二阶段的女生信息 
  • 10.“基于.NET 平台的软件系统分层开发”需要多少课时 
  • 11.查询“设计 MySchool 数据库”和“面向对象程序设计”的课时(使用 in) 
  • 12 查询所有地址在山东的学生信息 
  • 13 查询所有姓凌的单名同学 
  • 14.查询 gradeid 为 1 的学生信息,按出生日期升序排序 
  • 15.查询 subjectid 为 3 的考试的成绩信息,用降序排序 
  • 16.查询 gradeid 为 2 的课程中课时最多的课程信息 
  • 17.查询北京的学生有多少个 
  • 18.查询有多少个科目学时小于 50 
  • 19.查询 gradeid 为 2 的阶段总课时是多少
  •  20.查询 subjectid 为 8 的课程学生平均分 
  • 21.查询 gradeid 为 3 的课程中最多的学时和最少的学时 
  • 22.查询每个科目有多少人次考试 
  • 23.每个阶段课程的平均课时 
  • 24.查询每个阶段的男生和女生个数(group by 两列)

2,参考代码

主要难点在建表和插入数据的过程(╯‵□′)╯︵┻━┻

2.1 建表及插入数据

grade年级表

/*
Navicat Premium Data Transfer

Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 80017
Source Host : localhost:3306
Source Schema : test

Target Server Type : MySQL
Target Server Version : 80017
File Encoding : 65001

Date: 20/01/2021 22:48:40
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for grade
-- ----------------------------
DROP TABLE IF EXISTS `grade`;
CREATE TABLE `grade` (
`grade_id` tinyint(5) UNSIGNED NOT NULL,
`grade_name` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`grade_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of grade
-- ----------------------------
INSERT INTO `grade` VALUES (1, '初级');
INSERT INTO `grade` VALUES (2, '中级');
INSERT INTO `grade` VALUES (3, '高级');
INSERT INTO `grade` VALUES (4, '就业期');

SET FOREIGN_KEY_CHECKS = 1;

任务卡_05-数据库_数据库基础_数据库基础


score成绩表

/*
Navicat Premium Data Transfer

Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 80017
Source Host : localhost:3306
Source Schema : test

Target Server Type : MySQL
Target Server Version : 80017
File Encoding : 65001

Date: 20/01/2021 22:48:50
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
`score_id` int(10) NOT NULL COMMENT '成绩id',
`student_id` char(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学员编号',
`course_id` int(11) NOT NULL COMMENT '科目id',
`score` tinyint(4) NOT NULL COMMENT '成绩',
`exam_time` date NULL DEFAULT NULL,
PRIMARY KEY (`score_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES (1, 'S1101001', 1, 90, '2021-01-01');
INSERT INTO `score` VALUES (2, 'S1101001', 2, 96, '2021-01-01');
INSERT INTO `score` VALUES (3, 'S1101001', 3, 99, '2021-01-01');
INSERT INTO `score` VALUES (4, 'S1101002', 1, 95, '2021-01-01');
INSERT INTO `score` VALUES (5, 'S1101002', 2, 100, '2021-01-01');
INSERT INTO `score` VALUES (6, 'S1101002', 3, 100, '2021-01-01');
INSERT INTO `score` VALUES (7, 'S1101003', 1, 80, '2021-01-01');
INSERT INTO `score` VALUES (8, 'S1101003', 2, 59, '2021-01-01');
INSERT INTO `score` VALUES (9, 'S1101003', 3, 60, '2021-01-01');
INSERT INTO `score` VALUES (10, 'S1101004', 1, 88, '2021-01-01');
INSERT INTO `score` VALUES (11, 'S1101004', 2, 90, '2021-01-01');
INSERT INTO `score` VALUES (12, 'S1101004', 3, 100, '2021-01-01');
INSERT INTO `score` VALUES (13, 'S1102001', 4, 89, '2021-01-02');
INSERT INTO `score` VALUES (14, 'S1102001', 5, 63, '2021-01-02');
INSERT INTO `score` VALUES (15, 'S1102001', 6, 99, '2021-01-02');
INSERT INTO `score` VALUES (16, 'S1102002', 4, 100, '2021-01-02');
INSERT INTO `score` VALUES (17, 'S1102002', 5, 99, '2021-01-02');
INSERT INTO `score` VALUES (18, 'S1102002', 6, 60, '2021-01-02');
INSERT INTO `score` VALUES (19, 'S1102003', 4, 78, '2021-01-02');
INSERT INTO `score` VALUES (20, 'S1102003', 5, 90, '2021-01-02');
INSERT INTO `score` VALUES (21, 'S1102003', 6, 56, '2021-01-02');
INSERT INTO `score` VALUES (22, 'S1102004', 4, 99, '2021-01-02');
INSERT INTO `score` VALUES (23, 'S1102004', 5, 99, '2021-01-02');
INSERT INTO `score` VALUES (24, 'S1102004', 6, 99, '2021-01-02');
INSERT INTO `score` VALUES (25, 'S1103001', 7, 56, '2021-01-03');
INSERT INTO `score` VALUES (26, 'S1103001', 8, 59, '2021-01-03');
INSERT INTO `score` VALUES (27, 'S1103001', 9, 100, '2021-01-03');
INSERT INTO `score` VALUES (28, 'S1103002', 7, 89, '2021-01-03');
INSERT INTO `score` VALUES (29, 'S1103002', 8, 100, '2021-01-03');
INSERT INTO `score` VALUES (30, 'S1103002', 9, 99, '2021-01-03');
INSERT INTO `score` VALUES (31, 'S1103003', 7, 66, '2021-01-03');
INSERT INTO `score` VALUES (32, 'S1103003', 8, 90, '2021-01-03');
INSERT INTO `score` VALUES (33, 'S1103003', 9, 98, '2021-01-03');
INSERT INTO `score` VALUES (34, 'S1103004', 7, 100, '2021-01-03');
INSERT INTO `score` VALUES (35, 'S1103004', 8, 100, '2021-01-03');
INSERT INTO `score` VALUES (36, 'S1103004', 9, 100, '2021-01-03');

SET FOREIGN_KEY_CHECKS = 1;

任务卡_05-数据库_数据库基础_新职课开课吧_02


student学生表

/*
Navicat Premium Data Transfer

Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 80017
Source Host : localhost:3306
Source Schema : test

Target Server Type : MySQL
Target Server Version : 80017
File Encoding : 65001

Date: 20/01/2021 22:48:59
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`student_id` char(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`student_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`pwd` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`sex` char(5) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`grade_id` tinyint(5) NULL DEFAULT NULL,
`phone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`address` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`birthday` date NULL DEFAULT NULL,
`email` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`student_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('S1101001', '金蝶', '123456', '女', 1, '18866660001', '北京', '1999-09-01', '[email protected]');
INSERT INTO `student` VALUES ('S1101002', '甄姬', '123456', '女', 1, '18866660002', '河南', '1997-08-03', '[email protected]');
INSERT INTO `student` VALUES ('S1101003', '白起', '123456', '男', 1, '18866660003', '河北', '1990-07-09', '[email protected]');
INSERT INTO `student` VALUES ('S1101004', '狄仁杰', '123456', '男', 1, '18866660004', '山东', '2000-06-06', '[email protected]');
INSERT INTO `student` VALUES ('S1102001', '凌晨', '123456', '女', 2, '18866660005', '江苏', '2001-01-01', '[email protected]');
INSERT INTO `student` VALUES ('S1102002', '小乔', '123456', '女', 2, '18866660006', '四川', '1998-06-06', '[email protected]');
INSERT INTO `student` VALUES ('S1102003', '廉颇', '666666', '男', 2, '18866660007', '陕西', '1998-09-09', '[email protected]');
INSERT INTO `student` VALUES ('S1102004', '凌云天', '123321', '男', 2, '18866660008', '江苏', '1998-09-16', '[email protected]');
INSERT INTO `student` VALUES ('S1103001', '钟馗', '888888', '男', 4, '18866660009', '北京', '1989-06-01', '[email protected]');
INSERT INTO `student` VALUES ('S1103002', '露娜', '123456', '女', 4, '18866660010', '海南', '1997-01-01', '[email protected]');
INSERT INTO `student` VALUES ('S1103003', '后羿', '123455', '男', 4, '18866660011', '湖北', '1996-08-08', '[email protected]');
INSERT INTO `student` VALUES ('S1103004', '嫦娥', '123456', '女', 4, '18866660012', '月亮', '1999-09-01', '[email protected]');

SET FOREIGN_KEY_CHECKS = 1;

任务卡_05-数据库_数据库基础_新职课开课吧_03


course科目表

/*
Navicat Premium Data Transfer

Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 80017
Source Host : localhost:3306
Source Schema : test

Target Server Type : MySQL
Target Server Version : 80017
File Encoding : 65001

Date: 20/01/2021 22:48:29
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
`course_id` int(11) NOT NULL,
`course_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`period` tinyint(4) NULL DEFAULT NULL,
`grade_id` tinyint(4) NULL DEFAULT NULL,
PRIMARY KEY (`course_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES (1, '语文', 30, 1);
INSERT INTO `course` VALUES (2, '数学', 40, 1);
INSERT INTO `course` VALUES (3, '英语', 50, 1);
INSERT INTO `course` VALUES (4, '政治', 30, 2);
INSERT INTO `course` VALUES (5, '历史', 50, 2);
INSERT INTO `course` VALUES (6, '地理', 70, 2);
INSERT INTO `course` VALUES (7, '基于.NET 平台的软件系统分层开发', 60, 3);
INSERT INTO `course` VALUES (8, '设计 MySchool 数据库', 55, 3);
INSERT INTO `course` VALUES (9, '面向对象程序设计', 50, 3);

SET FOREIGN_KEY_CHECKS = 1;

任务卡_05-数据库_数据库基础_新职课开课吧_04

任务卡_05-数据库_数据库基础_数据库基础_05

 

2.2 检索

1. grade 表增加一个阶段,“就业期” 

insert into grade (grade_id, grade_name) values (4,"就业期");

 

任务卡_05-数据库_数据库基础_新职课开课吧_06


2.将第三阶段的学生的 gradeid 改为就业期的 id 

update student set grade_id=4 where grade_id=3;

 

任务卡_05-数据库_数据库基础_数据库基础_07


3.查询所有得了 100 分的学号 

select distinct student_id from score where score=100;

 

任务卡_05-数据库_数据库基础_Java开发工程师_08


4.查询所有 1989 年出生的学生(1989-1-1~1990-1-1) 

select student_id,student_name,birthday 
from student
where birthday>'1989-01-01' and birthday<'1990-01-01';

 

任务卡_05-数据库_数据库基础_新职课开课吧_09

5.查询学生姓名为“金蝶”的全部信息 

select * from student where student_name='金蝶';

任务卡_05-数据库_数据库基础_数据库_10


6.查询 subjectid 为 8 的科目考试未及格(60 分)的学号和成绩 

select student_id,score from score where course_id=8 and score<60;

 

任务卡_05-数据库_数据库基础_Java开发工程师_11


7.查询第 3 阶段课时大于 50 的课程全部信息

select * from course where grade_id=3 and period>50;

 

任务卡_05-数据库_数据库基础_新职课开课吧_12


8.查询 S1101001 学生的考试信息 

select * from score where student_id='S1101001';

任务卡_05-数据库_数据库基础_Java开发工程师_13


9.查询所有第二阶段的女生信息 

select * from student where grade_id=2 and sex='女';

任务卡_05-数据库_数据库基础_数据库_14


10.“基于.NET 平台的软件系统分层开发”需要多少课时 

select period from course where course_name='基于.NET 平台的软件系统分层开发';

任务卡_05-数据库_数据库基础_Java开发工程师_15


11.查询“设计 MySchool 数据库”和“面向对象程序设计”的课时(使用 in) 

select period from course where course_name in ('设计 MySchool 数据库','面向对象程序设计');

任务卡_05-数据库_数据库基础_数据库基础_16


12 查询所有地址在山东的学生信息 

select * from student where address='山东';

 

任务卡_05-数据库_数据库基础_数据库基础_17


13 查询所有姓凌的单名同学 

select * from student where student_name like '凌_';

通配符下划线表示匹配任意单个字符。 

 

任务卡_05-数据库_数据库基础_数据库_18


14.查询 gradeid 为 1 的学生信息,按出生日期升序排序 

select * from student where grade_id=1 order by birthday;

任务卡_05-数据库_数据库基础_新职课开课吧_19


15.查询 subjectid 为 3 的考试的成绩信息,用降序排序 

select * from score where course_id=3 order by score desc;

 

任务卡_05-数据库_数据库基础_任务卡_20


16.查询 gradeid 为 2 的课程中课时最多的课程信息 

select * 
from course
where period=(
select max(period)
from course);

任务卡_05-数据库_数据库基础_数据库基础_21


17.查询北京的学生有多少个 

select count(*) from student where address='北京';

任务卡_05-数据库_数据库基础_Java开发工程师_22


18.查询有多少个科目学时小于 50 

select count(*) from course where period<50;

任务卡_05-数据库_数据库基础_数据库_23

任务卡_05-数据库_数据库基础_新职课开课吧_24


19.查询 gradeid 为 2 的阶段总课时是多少

select sum(period) as sum_period from course where grade_id=2;

 

任务卡_05-数据库_数据库基础_Java开发工程师_25


 20.查询 subjectid 为 8 的课程学生平均分 

select avg(score) from score where course_id=8;

 

任务卡_05-数据库_数据库基础_新职课开课吧_26


21.查询 gradeid 为 3 的课程中最多的学时和最少的学时 

select max(period),min(period) from course where grade_id=3;

任务卡_05-数据库_数据库基础_Java开发工程师_27


22.查询每个科目有多少人次考试 

select course_id,count(*) from score group by course_id;

 

任务卡_05-数据库_数据库基础_Java开发工程师_28


23.每个阶段课程的平均课时 

select grade_id,avg(period) from course group by grade_id;

 

任务卡_05-数据库_数据库基础_数据库_29


24.查询每个阶段的男生和女生个数(group by 两列)

select grade_id,sex,count(*) from student group by grade_id,sex;

任务卡_05-数据库_数据库基础_Java开发工程师_30

3,参考资料

MySQL数据库中int,bigint,smallint和tinyint区别

参考​​@虚镜【MySQL数据库中int,bigint,smallint和tinyint区别】​​

bigint

  • 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
  • P.S. bigint已经有长度了,在mysql建表中的length,只是用于显示的位数

int

  • 从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。

smallint

  • 从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。

tinyint

  • 从 0 到 255 的整型数据。存储大小为 1 字节。

注释

  • 在支持整数值的地方支持 bigint 数据类型。但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。在 SQL Server 中,int 数据类型是主要的整数数据类型。
  • 在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。
  • 只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。SQL Server 不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。
  • int(M) 在 integer 数据类型中,M 表示最大显示宽度。在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。和数字位数也无关系 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。

章节汇总在这里(づ ̄3 ̄)づ╭❤~​​@&再见萤火虫&【05-数据库】​​

对学习Java感兴趣的同学欢迎加入QQ学习交流群:1126298731

有问题欢迎提问,大家一起在学习Java的路上打怪升级!(o゜▽゜)o☆[BINGO!]

 

 

标签:INSERT,01,05,INTO,id,任务,score,VALUES,数据库
From: https://blog.51cto.com/u_15849465/5835013

相关文章

  • 实验一———个人项目:任务2
    一、回顾你过去将近三年的经历1、当初报考的时候,是真正喜欢计算机这个专业吗?我本人从初中开始就很喜欢计算机专业,一是我姐就是计算机专业的,二是我觉得敲代码真的很帅,以至......
  • SpringBoot05(内部加载配置顺序)
    1-优先级小结:每个文件里面的配置都会被解析,但是会根据1-4的优先级而选取......
  • 数据库编程——Oracle MySQL SQL
    在学习数据库编程总结了笔记,并分享出来。09-数据库编程day03(oraclemysqlsql)  一、学习目标1.oracle创建和管理表2.oracle的视图,索引,同义词,序列(了解作用和创建方式......
  • 数据库编程——Oracle环境配置
    ​系统:win10x64目录:一、上节扩展——CP/UDPSocket调试工具v2.2二、数据库Oracle环境配置1、安装配置》常用Linux系统下载及学习网址2、linux-oracle服务器启动 一、上......
  • 数据库项目实战中的一些细节
    在结构体中,都用字符串表示,因为整数,浮点数不能表示为NULL;在表中,浮点数据都用int类型表示,例如:1.25元,在数据库中,应表示为125分。/project/idc1/c/obtmindtodb2.cpp......
  • 数据库冗余是否必要
    我们在这里假设认为遵守数据库设计的范式,不要冗余的为正方:认为设计数据库设计需要设计一些适当冗余的为反方:希望大家能结合自己设计经验,展开积极的讨论:下面是我举的一个......
  • 分析型数据库
    软件简介TBase具备高性能可扩展的分布式事务能力,支持RC和RR两种隔离级别;通过安全、管理、审计三权分立体系,提供全方位的数据安全保证机制;支持高性能分区表,可使得数据检......
  • mysql 5.7安装及使用binlog日志恢复数据库
    目录mysql5.7安装及使用binlog日志恢复数据库binlog日志介绍安装mysql5.7开启Binlog日志查看binlog日志状态和内容通过Binlog恢复数据清理MySQL的binlog日志自动删除手动......
  • Python 生成MySQL数据库的表结构到word文档
    原理:读取系统表的数据,调用python-docx库生成word文档。importpymysqlfromdocximportDocumentfromdocx.sharedimportInchesdocument=Document()document.a......
  • 【AGC】云数据库Server调用接口报错“2016”问题分析
     问题背景: 开发者在服务器端的服务中集成云数据库服务的ServerSDK就可以在服务器上直接管理云侧数据库中的数据,调用它提供的接口,完成相关服务功能开发。可是有些开发者......