MySQL每日一练--校园教务系统
一丶数据库名称:SchoolDB
二丶数据库表信息:角色信息表
表名: | t_role | ||||||
主键: | r_id | ||||||
序号 | 字段名称 | 字段说明 | 类别 | 位数 | 属性 | 备注 | |
1 | r_id | 角色编号 | int |
|
| 主键 自动增长 | |
2 | r_name_EN | 角色名(英文) | varchar | 20 | 非空 | 不能重复 | |
3 | r_name_CH | 角色名(中文) | varchar | 20 | 非空 | 不能重复 | |
4 | r_remark | 说明简介 | nvarchar | 500 | 非空 | 默认为“男” |
数据库表信息:班级信息表
表名: | t_class | ||||||
主键: | c_id | ||||||
序号 | 字段名称 | 字段说明 | 类别 | 位数 | 属性 | 备注 | |
1 | c_id | 班级编号 | int |
|
| 主键 自动增长 | |
2 | c_classname | 班级名 | varchar | 20 | 非空 | 不能重复 |
数据库表信息:用户信息表
表名: | t_user | ||||||
主键: | u_id | ||||||
序号 | 字段名称 | 字段说明 | 类别 | 位数 | 属性 | 备注 | |
1 | u_id | 用户编号 | int |
|
| 主键 自动增长 | |
2 | u_username | 用户登陆名 | varchar | 20 | 非空 | 不能重复 | |
3 | u_password | 用户登陆密码 | varchar | 20 | 非空 |
| |
4 | u_name | 用户名 | varchar | 20 | 非空 |
| |
5 | u_sex | 性别 | char | 2 | 非空 | 默认为“男” 只能是男或女 | |
6 | u_age | 年龄 | int |
| 非空 | 年龄只能0~100区间 | |
7 | u_phoneNum | 电话号码 | varchar | 20 | 非空 | 长度必须是11位 | |
8 | u_address | 家庭住址 | varchar | 50 |
|
| |
9 | u_type | 状态 是否禁用 | int |
| 非空 | 只能是0或1 1 正常 0 禁用 | |
10 | r_id | 角色 | int |
| 非空 | 外键 | |
11 | c_id | 班级 | int |
| 非空 | 外键 |
三丶实现步骤
1、向角色信息表、班级信息表、用户信息表添加对数据 分别使用单行或多行插入数据的方式完成。并使用全查询分别查询出三张表的数据。
如下图1~ 图3所示:
图1
图2
图3
要求:
角色信息表使用单行数据插入的方式完成对数据的插入
班级信息表和用户信息表使用多行插入的方式完成对数据的插入
2、查询用户信息表 如下图4所示:
图4
要求:
给字段起别名,显示用户信息表
3、按照下列需求完成所有条件查询:
-- 一, 创建数据库SchoolDB
-- 1,删除数据库DROP DATABASE IF EXISTS SchoolDB;
-- 2,创建数据库CREATE DATABASE SchoolDB;
-- 3,修改数据库编码方式和字符集排列顺序ALTER DATABASE SchoolDB CHARACTER SET utf8 COLLATE utf8_bin;
-- 4,使用数据库USE SchoolDB;
-- 二, 在数据库SchoolDB中创建3张表
-- 1, 角色信息表(t_role)
DROP TABLE IF EXISTS t_role;
CREATE TABLE t_role(
r_id INT PRIMARY KEY AUTO_INCREMENT, -- 角色编号
r_name_EN VARCHAR(20) NOT NULL UNIQUE, -- 角色名(英文)
r_name_CH VARCHAR(20) NOT NULL UNIQUE, -- 角色名(中文)
r_remark NVARCHAR(500) NOT NULL DEFAULT '男' -- 说明简介
);
-- 2, 班级信息表(t_class)
DROP TABLE IF EXISTS t_class;
CREATE TABLE t_class(
c_id INT PRIMARY KEY AUTO_INCREMENT, -- 班级编号
c_classname VARCHAR(20) NOT NULL UNIQUE -- 班级名
);
-- 3, 用户信息表(t_user)
DROP TABLE IF EXISTS t_user;
CREATE TABLE t_user(
u_id INT PRIMARY KEY AUTO_INCREMENT, -- 用户编号
u_username VARCHAR(20) NOT NULL UNIQUE, -- 用户登陆名
u_password VARCHAR(20) NOT NULL, -- 用户登陆密码
u_name VARCHAR(20) NOT NULL, -- 用户名
u_sex CHAR(2) NOT NULL DEFAULT '男', -- 性别
u_age INT NOT NULL, -- 年龄
u_phoneNum VARCHAR(11) NOT NULL, -- 电话号码
u_address VARCHAR(50), -- 家庭住址
u_type INT NOT NULL DEFAULT 1, -- 状态是否禁用
r_id INT NOT NULL, -- 角色,外键
c_id INT, -- 班级,外键
FOREIGN KEY (r_id) REFERENCES t_role(r_id),
FOREIGN KEY (c_id) REFERENCES t_class(c_id)
);
-- 三添加数据
-- 1,添加角色信息表(t_role)数据
INSERT INTO t_role VALUES(DEFAULT,'boss','超级管理员','可以管理所有数据操作');
INSERT INTO t_role VALUES(DEFAULT,'admin','管理员','可以管理大部分数据操作');
INSERT INTO t_role VALUES(DEFAULT,'stu','学生','说明');
INSERT INTO t_role VALUES(DEFAULT,'teacher','老师','说明');
SELECT * FROM t_role;
-- 2,添加班级信息表(t_class)数据
INSERT INTO t_class VALUES(DEFAULT,'物联网201401班');
INSERT INTO t_class VALUES(DEFAULT,'物联网201402班');
INSERT INTO t_class VALUES(DEFAULT,'物联网201403班');
INSERT INTO t_class VALUES(DEFAULT,'物联网201404班');
INSERT INTO t_class VALUES(DEFAULT,'物联网201405班');
SELECT * FROM t_class;
-- 3,添加用户信息表(t_user)数据
INSERT INTO t_user VALUES(1001,'abc','abc','abc','男',70,110,'武汉湖北科职',1,1,NULL);
INSERT INTO t_user VALUES(1002,'admin','admin','admin','男',0,120,'武汉湖北科职',1,2,NULL);
INSERT INTO t_user VALUES(1003,'huangba','huang66ba','黄八','男',20,15122535477,'北京东城',0,3,3);
INSERT INTO t_user VALUES(1004,'jack','jklove','杰克','男',19,15011982675,'湖南长沙',1,3,4);
INSERT INTO t_user VALUES(1005,'lisi',123456,'李四','男',20,15002726555,'湖北武汉',1,3,1);
INSERT INTO t_user VALUES(1006,'tom','tomandjack','汤姆','女',20,13002766545,'湖南韶山',1,3,5);
INSERT INTO t_user VALUES(1007,'wangwu','wangwu520','王五','男',34,13645267654,'湖北黄冈',1,4,NULL);
INSERT INTO t_user VALUES(1008,'yanqi','yanyan112','燕七','女',28,13288625642,'北京海淀',1,4,NULL);
INSERT INTO t_user VALUES(1009,'zhangsan',123,'张三','女',19,13017656783,'湖北武汉',1,3,2);
INSERT INTO t_user VALUES(10010,'zhaoliu','01234567...','赵六','女',54,15524786722,'湖北黄冈',0,4,1);
SELECT * FROM t_user;
-- 查询用户信息表 如下图4所示: 要求:给字段起别名,显示用户信息表
SELECT u_id AS '用户编号', u_username AS '用户名',u_name AS '姓名', u_sex AS '性别', u_age AS '年龄', u_phoneNum AS '电话', u_address AS '地址', CASE u_type WHEN 0 THEN '禁用' ELSE '正常' END AS '状态', b.r_name_CH AS '角色名称',c.c_classname AS '班级名称'
FROM t_user a
INNER JOIN t_role b ON a.r_id = b.r_id
LEFT JOIN t_class c ON a.c_id = c.c_id;
-- 四,完成如下查询题目
-- 3、按照下列需求完成所有条件查询:
-- -------- 1,过滤重复记录(distinct) --------------
-- 过滤用户表重复的地址
SELECT DISTINCT u_address 家庭住址 FROM t_user;
-- 过滤用户表重复的年龄
SELECT DISTINCT u_age 年龄 FROM t_user
-- --- 2,显示若干条(top)---------------
-- 显示班级表前3条记录
SELECT * FROM t_class LIMIT 3;
-- 显示用户表前5条记录
SELECT * FROM t_user LIMIT 5;
-- --- 3,简单条件查询(where)---------------
-- 显示用户表所有"男"性的信息
SELECT * FROM t_user WHERE u_sex = '男';
-- 显示用户表中是 学生的信息
SELECT * FROM t_user WHERE u_type = 1;
-- 显示用户表中年龄在24到60岁之间的人的信息(提示:between and)
SELECT * FROM t_user WHERE u_age BETWEEN 24 AND 60;
-- 显示用户表中年龄不在24到60岁之间的人的信息
SELECT * FROM t_user WHERE u_age NOT BETWEEN 24 AND 60;
-- 显示角色表中 角色名(中文)为"管理员’、"学生"、"老师"的信息
SELECT * FROM t_role WHERE r_name_CH IN ('管理员', '学生', '老师');
-- 显示角色表中 角色名(中文)为"超级管理员"的信息
SELECT * FROM t_role WHERE r_name_CH = '超级管理员';
-- 显示用户表 班级为空的信息
SELECT * FROM t_user WHERE c_id IS NULL;
-- 显示用户表 班级不为空的信息
SELECT * FROM t_user WHERE c_id IS NOT NULL;
-- 4,模糊杳询(like /not like)
-- 查询用户表 电话号码是以15开头的所有人信息
SELECT * FROM t_user WHERE u_phoneNum LIKE '15%';
-- 查询用户表 地址是湖北或湖南的所有人信息
SELECT * FROM t_user WHERE u_address LIKE '%湖北%' OR u_address LIKE '%湖南%';
-- 查询用户表 地址除湖北或湖南之外的所有人信息
SELECT * FROM t_user WHERE u_address NOT LIKE '%湖北%' AND u_address NOT LIKE '%湖南%';
-- -----5,杳询排序(order by)
-- 对用户表 用户年龄升序排序
SELECT * FROM t_user ORDER BY u_age ASC;
-- 对用户表 用户年龄降序排序
SELECT * FROM t_user ORDER BY u_age DESC;
-- -----6,对查询结果进行计算(求和sum 求平均数avg统计行数count)---------------
-- 求用户表用户年龄的总和
SELECT SUM(u_age) 年龄的总和 FROM t_user;
-- 求用户表 用户年龄的平均数
SELECT AVG(u_age) 年龄的平均数 FROM t_user;
-- 求用户表 有多少个用户
SELECT COUNT(*) 用户人数 FROM t_user;
-- 求用户表 有多少个老师
SELECT COUNT(*) 老师人数 FROM t_user WHERE r_id=4;
-- ---7,分组(group by/having) ------
-- 求各个角色的人数
SELECT r_name_CH 角色名(中文),COUNT(*) 人数 FROM t_user INNER JOIN t_role ON t_user.r_id = t_role.r_id GROUP BY t_role.r_id;
-- 求各个角色中 所有人总年龄超过100的角色有哪些
SELECT r_name_CH 角色名(中文) FROM t_role WHERE r_id IN (SELECT DISTINCT r_id FROM t_user GROUP BY r_id HAVING SUM(u_age) > 100);
-- 4、按照下列需求完成所有链接查询:
-- ---8,联接查询----
-- (1)内连接(inner join)
-- 查询所有用户信息显示用户信息及对应的角色名(中文)
SELECT t_user.*,r_name_CH 角色名(中文) FROM t_user INNER JOIN t_role ON t_user.r_id = t_role.r_id;
-- 查询所有用户信息显示用户信息及对应的班级名称
SELECT t_user.*,c_classname 班级名称 FROM t_user INNER JOIN t_class ON t_user.c_id = t_class.c_id;
-- 查询所有用户信息显示用户信息及对应的角色名(中文)和班级名称
SELECT t_user.*,r_name_CH '角色名(中文)',c_classname 班级名称
FROM t_user
INNER JOIN t_role ON t_user.r_id = t_role.r_id
INNER JOIN t_class ON t_user.c_id = t_class.c_id;
-- 查询所有"男,用户并且年龄在10到24的信息显示用户信息及对应的角色名(中文)和班级名称
SELECT t_user.*,r_name_CH '角色名(中文)',c_classname 班级名称
FROM t_user
INNER JOIN t_role ON t_user.r_id = t_role.r_id
INNER JOIN t_class ON t_user.c_id = t_class.c_id
WHERE u_sex= '男' AND u_age BETWEEN 10 AND 24;
-- (2)内联接的where写法
-- 查询所有"男’用户并且年龄在10到24的信息显示用户信息及对应的角色名(中文)和班级名称
SELECT t_user.*,r_name_CH '角色名(中文)',c_classname 班级名称
FROM t_user
INNER JOIN t_role ON t_user.r_id = t_role.r_id
INNER JOIN t_class ON t_user.c_id = t_class.c_id
WHERE u_sex= '男' AND u_age BETWEEN 10 AND 24;
-- (3)外联接(left/right [outer] join)
-- 查询所有用户信息显示用户信息及对应的角色名(中文)和班级名称,以主表为主
SELECT t_user.*,r_name_CH '角色名(中文)',c_classname 班级名称
FROM t_user
LEFT JOIN t_role ON t_user.r_id = t_role.r_id
LEFT JOIN t_class ON t_user.c_id = t_class.c_id;
-- 查询所有用户信息显示用户信息及对应的角色名(中文)和班级名称,以副表为主
SELECT t_user.*,r_name_CH,c_classname
FROM t_role
RIGHT JOIN t_user ON t_user.r_id = t_role.r_id
LEFT JOIN t_class ON t_user.c_id = t_class.c_id;
相关文章:

MySQL每日一练--校园教务系统
一丶数据库名称:SchoolDB 二丶数据库表信息:角色信息表 表名: t_role 主键: r_id 序号 字段名称 字段说明 类别 位数 属性 备注 1 r_id 角色编号 int 主键 自动增长 2 r_name_EN 角色名(英…...

9.阿里Sentinel哨兵
1.Sentinel Sentinel(哨兵)是由阿里开源的一款流量控制和熔断降级框架,用于保护分布式系统中的应用免受流量涌入、超载和故障的影响。它可以作为微服务架构中的一部分,用于保护服务不被异常流量冲垮,从而提高系统的稳定…...

设计模式之工厂方法模式
目录 工厂方法模式 简介 优缺点 结构 使用场景 实现 1.抽象产品 2.具体产品 3.抽象工厂 4.具体工厂 5.调用 总结 抽象工厂模式 简介 结构 实现 区别 工厂方法模式 简介 提供一个用于创建对象的接口(工厂接口),让其实现类(工厂实现类)决定实例化哪…...
【案例教程】基于R语言的物种气候生态位动态量化与分布特征模拟
在全球气候快速变化的背景下,理解并预测生物种群如何应对气候变化,特别是它们的地理分布如何变化,已经变得至关重要。利用R语言进行物种气候生态位动态量化与分布特征模拟,不仅可以量化描述物种对环境的需求和适应性,预…...

Moonbeam生态跨链互操作项目汇总
立秋已过,今年的夏天已经接近尾声,即将迎来凉爽的秋天。Moonbeam生态一同以往持续成长,在8月也举办了不少活动、完成集成合作以及协议更新。让我们一同快速了解Moonbeam生态项目近期发生的大小事件吧! Moonwell Moonwell是一个建…...

基于社会群体算法优化的BP神经网络(预测应用) - 附代码
基于社会群体算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于社会群体算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.社会群体优化BP神经网络2.1 BP神经网络参数设置2.2 社会群体算法应用 4.测试结果:5…...
208. 实现 Trie (前缀树)
题目描述 Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。 请你实现 Trie 类: Trie() 初始化前缀树对…...

adb使用总结
adb连接到模拟器 adb devices 打开模拟器,找到设置。 多次点击版本号,切换到开发者模式 搜索进入开发者选项 开启USB调试 此时在终端输入adb devices就连接上了 使用adb查看安卓手机架构 adb shell getprop ro.product.cpu.abi 进入安卓手机的shell …...

go:正确引入自己编写的包(如何在 Go 中正确引入自己编写的包)
前言 目录如下: 具体教程 1. 工作空间(我的是根目录)新建 go.work 文件 文件内容如下: go 1.21.0use (./tuchuang./tuchuang/testm ) 2. 添加go.mod文件 1. 包文件夹下 进入testm目录执行 go mod init testModule 2. 引用目…...

cortex-A7核PWM实验--STM32MP157
实验目的:驱动风扇,蜂鸣器,马达进行工作 目录 一,PWM相关概念 有源蜂鸣器和无源蜂鸣器 二,分析电路图,框图 三,分析RCC章节 1,确定总线连接 2,根据总线内容确定基…...

电工-学习电工有哪些好处
学习电工有哪些好处?在哪学习电工? 学习电工有哪些好处?在哪学习电工?学习电工可以做什么?优势有哪些? 学习电工可以做什么?学习电工有哪些好处? 就业去向:可在企业单位…...
Redis内存空间预估与内存优化策略:保障数据安全与性能的架构实践AIGC/AI绘画/chatGPT/SD/MJ
推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间 https://dr…...
Pandas数据分析教程-数据处理
pandas-02-数据清洗&预处理 B. 数据处理1. 重复值处理2. map逐元素转换3. 值替换4. 改变索引值5. 离散化与分箱6. 检测过滤异常值7. 排列与随机采样8. 根据类别生成one-hot向量,向量化文中用S代指Series,用Df代指DataFrame 数据清洗是处理大型复杂情况数据必不可少的步骤…...

php 多维数组排序,根据某一列排序(array_multisort()和array_column()联用)
array_multisort()和array_column()联用效果直接叠满,11>100 先来看下两个函数的介绍和用法 array_column(): 一般模式,不需要其中字段作为id,只需要提取val值 <?php // 可能从数据库中返回数组 $a [[id > 5698, first_name > Peter, last_name > G…...

框架分析(5)-Django
框架分析(5)-Django 专栏介绍Django核心概念以及组件讲解模型(Model)视图(View)模板(Template)路由(URLconf)表单(Form)后台管理&…...

常见前端面试之VUE面试题汇总七
20. 对 vue 设计原则的理解 1.渐进式 JavaScript 框架:与其它大型框架不同的是,Vue 被设计 为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上 手,还便于与第三方库或既有项目整合。另一方面,当与现代化的…...

空时自适应处理用于机载雷达——空时处理基础知识(Matla代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

磁盘阵列/视频集中存储/安防监控视频智能分析平台新功能:安全帽/反光衣/安全带AI识别详解
人工智能技术已经越来越多地融入到视频监控领域中,近期我们也发布了基于AI智能视频云存储/安防监控视频AI智能分析平台的众多新功能,该平台内置多种AI算法,可对实时视频中的人脸、人体、物体等进行检测、跟踪与抓拍,支持口罩佩戴检…...

23款奔驰GLE450轿跑升级原厂外观暗夜套件,战斗感满满的
升级的方案基本都是替换原来车身部位的镀铬件,可能会有人问:“难道直接用改色膜贴黑不好吗?”如果是贴膜的话,第一个是颜色没有那么纯正,这些镀铬件贴黑的技术难度先抛开不说,即使贴上去了,那过…...

win10系统rust串口通信实现
一、用cargo创建新工程 命令:cargo new comport use std::env; use std::{thread, time}; use serialport::{DataBits, StopBits, Parity, FlowControl}; use std::io::{self, Read, Write}; use std::time::Duration;fn main() -> io::Result<()> {let m…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...

MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...