【数据库】表操作 习题总结

目录

关系建表

数据库sql的执行顺序

内外连接的写法

1.设计一张商品表

2.设计一张老师表

3.设计一张图书表

4.查询练习

5.查询练习

6.设计一个考勤系统

7.设计一个学校宿舍管理系统

8.设计一个车辆违章系统

9.设计一个学校食堂管理系统

10.有一张员工表emp,字段:姓名name,性别sex,部门depart,工资salary。查询以下数据:

11.面试真题

12.面试真题


关系建表

一对多(1:n)在多的表中创建外键 (外键对应即是一的表中的主键)。

多对多 (m:n)  额外创建一个中间表,中间表至少有两个字段,分别作为外键指向多对多双方的主键。

数据库sql的执行顺序

1、一条sql语句通常包括:

 select
 from
 join
 where
 group by 
 having
 order by
 聚合函数
 limit 
 top

2、浅谈执行顺序:

1)、首先确定一点,并不是按照我们写的语句顺序,从左—>右执行的

2)、获取结果集 ----> 指定查询的某些字段 --> 按照某些内容进行排序

  • 一.首先 执行from ,join 确定表之间的关系,得到初步的----->结果集1
  • 二.where 对结果集1 进行筛选 得到–>结果集2
  • 三.group by 进行分组 -->结果集3
  • 四.对结果集3进行having筛选,得到 ---->结果集 4
  • ​ 指定查询的字段:
  • 五.select 指定需要查询的字段,也可以是聚合函数 —>结果去重
  • 六.合并分组结果集,并按照order by 的 条件进行排序
  • 七. 如果存在limit 或者top之类的话,这是在最后才会执行的

 

内外连接的写法

内连接

1.A join B on A.x = B.x;

2.A inner join B on A.x = B.x;   inner可以省略

3.where A.x = B.x;

select * A join B on A.x = B.x where...

select * from A,B where A.x = B.x...

外连接

1.A left join B on A.x = B.x;

2.A right join B on A.x = B.x;

select * A left join B on A.x = B.x where...

1.设计一张商品表

设计一张商品表,包含以下字段:商品名称、商品价格、商品库存、商品描述。

drop table if exists product;
create table product(  name varchar(20),  --商品名称  varchar() 使用字符集UTF8 一个汉字占三个字节price decimal(11,2), --商品价格  使用decimal() 比double精确storage int,       --商品库存description varchar(100) --商品描述。
);

2.设计一张老师表

设计一张老师表,包含以下字段:姓名、年龄、身高、体重、性别、学历、生日、身份证号。

drop table if exists teacher;
create table teacher(name varchar(20),age int,height double,weight double,sex bit,birthday TIMESTAMP,  timestamp 时间日期型 精确到秒 格式 2000-1-1 10:05:00id_number varchar(18)
);

3.设计一张图书表

设计一张图书表,包含以下字段:图书名称,图书作者、图书价格、图书分类

drop table if exists book;
create table book(name varchar(20),author varchar(20),price decimal(11,2),category varchar(20)
);

4.查询练习

查询article文章表中,发表日期create_date在2019年1月1日上午10点30分至2019年11月10日下午4点2分的文章。

select * from article where create_date between '2019-01-01 10:30:00' and '2019-11-10 16:02:00';

5.查询练习

查询article文章表中,文章标题title为空,或者满足发表日期create_date在2019年1月1日之后

 select * from article where title is null or create_date > '2019-01-01 00:00:00';

6.设计一个考勤系统

考勤系统,包含员工表,考勤记录表  员工与记录 一对多

-- 主要考虑记录表中的记录信息,是如何关联到员工表,员工与记录关系为1:m。create table emp(id int primary key,name varchar(20)
);create table info(id int primary key,emp_id int,info_date timestamp,foreign key (emp_id) references emp(id)
);

7.设计一个学校宿舍管理系统

学校宿舍管理系统,要求包含宿舍信息,学生信息,每日的宿舍查房记录。宿舍与学生一对多,宿舍与查房一对多

-- 主要考虑学生与宿舍的关系:m:1,宿舍的查房记录是根据宿舍来查的,与宿舍有关系,一个宿舍可以多次查房,宿舍与查房记录是1:m的关系create table dormitory(id int primary key,number varchar(20)
);create table student(id int primary key,name varchar(20),dormitory_id int,foreign key (dormitory_id) references dormitory(id)
);create table info(id int primary key,dormitory_id int,status bit,info_date timestamp,foreign key (dormitory_id) references dormitory(id)
);

8.设计一个车辆违章系统

车辆违章系统,包含用户表,车辆表,违章信息表。违章信息表中包含用户和车辆的违章信息。

-- 用户可以拥有多辆车,关系为1:m,
题目已经说明违章信息包括用户和车辆,说明违章信息表中要记录用户和车辆
,一个用户可以有多次违章记录,用户与违章记录关系为1:m,
一辆车也可以有多次违章记录,车辆与违章记录关系也为1:mcreate table user(id int primary key,name varchar(20)
);create table cars(id int primary key,name varchar(20),user_id int,foreign key (user_id) references user(id)
);create table info(id int primary key,user_id int,cars_id int,foreign key (user_id) references user(id),  --两个外键foreign key (cars_id) references cars(id)
);

9.设计一个学校食堂管理系统

学校食堂管理系统,包含食堂表,食堂仓口表,仓口收费记录表。

-- 一个食堂有多个仓口卖饭,关系为1:m,
--每个仓口卖饭可以有很多次,仓口与收费记录也是1:mcreate table hall(id int primary key,name varchar(20)
);create table hall_opening(id int primary key,name varchar(20),hall_id int,foreign key (hall_id) references hall(id)
);create table info(id int primary key,price int,info_date timestamp,hall_opening_id int,foreign key (hall_opening_id) references hall_opening(id)
);

10.有一张员工表emp,字段:姓名name,性别sex,部门depart,工资salary。查询以下数据:

1、查询男女员工的平均工资

      select sex,avg(salsry) as '平均薪资' from emp group by sex;

2、查询各部门的总薪水

     select depart,sum(salsry) from emp group by depart;

3、查询总薪水排名第二的部门

     select depart ,sum(salary) from emp group by depart order by sum(salary) desc limit 1,1;

4、查询姓名重复的员工信息

      select name from emp group by name having count(name)>1;

5、查询各部门薪水大于10000的男性员工的平均薪水

     select depart,avg(salary) from emp where sex = '男' and salary>10000 group by depart;

11.面试真题

有员工表、部门表和薪资表,根据查询条件写出对应的sql【同程艺龙2020届校招笔试题】

现在有员工表、部门表和薪资表。部门表depart的字段有depart_id, name;员工表 staff 的字段有 staff_id, name, age, depart_id;薪资表salary 的字段有 salary_id,staff_id,salary,month。

(问题a):求每个部门'2016-09'月份的部门薪水总额

   select depart.name,sum(salary) from depart,staff,salary where depart.depart_id = staff.depart_id and staff.staff_id = salary.staff_id and month between '2016-09-01 00:00:00' and '2016-09-30 23:59:59' group by depart.depart_id;

select

        depart.name,sum(salary)

from

        depart join staff on depart.depart_id = staff.depart_id 

        join salary on staff.staff_id = salary.staff_id

where 

        month between '2016-09-01 00:00:00' and '2016-09-30 23:59:59'

group by

         depart.depart_id;

(问题b):求每个部门的部门人数,要求输出部门名称和人数

   select depart.depart_id,count(staff_id) from depart,staff where depart.depart_id = staff.depart_id group by depart.depart_id;

(问题c):求公司每个部门的月支出薪资数,要求输出月份和本月薪资总数

   select depart.depart_id ,mouth,sum(salary) from depart,staff,salary where depart.depart_id = staff.depart_id and staff.staff_id = salary.staff_id group by depart.depart_id ;

12.面试真题

写出以下数据库的查询条件【交大思诺2020届校招笔试题】

有两个表分别如下:

表A(varchar(32) name, int grade)

数据:zhangshan 80, lisi 60, wangwu 84

表B(varchar(32) name, int age)

数据:zhangshan 26, lisi 24, wangwu 26, wutian 26

写SQL语句得到如下查询结果:

| NAME   | GRADE | AGE |

| --------- | ----- | ---- |

| zhangshan | 80  | 26  |

| lisi   | 60  | 24  |

| wangwu  | 84  | 26  |

| wutian  | null | 26  |

 select B.name , grade,age from B left join A on B.name = A.name;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/102646.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AWS SDK 3.x for .NET Framework 4.0 可行性测试

前言 为了应对日益增长的网络安全挑战, 越来越多的互联网厂商已经陆续开始或者已经彻底停止了对 SSL 3 / TLS 1.0 / TLS1.1 等上古加密算法的支持. 而对于一些同样拥有悠久历史的和 AWS 服务相关联的应用程序, 是否可以通过仅更新 SDK 版本的方式来适应新的环境. 本文将以 Win…

前端处理图片文件的方法

在项目开发过程中&#xff0c;有一个需求&#xff0c;需要前端对上传的图片进行处理&#xff0c;以字符串的形式传给后端&#xff0c;实现效果如下&#xff1a; 1.上传图片的组件 在该项目中&#xff0c;使用了element plus组件库 <el-uploadv-model:file-list"fileL…

2023年目标检测研究进展

综述 首先关于写这个笔记&#xff0c;我个人思考了很久关于以下几点。1&#xff1a;19年开始从做OCR用到图像和文本这种多模态联合处理的后&#xff0c;也就有意识的开始关注自然语言处理&#xff0c;这样的结果导致可能停留在前期图像上的学习和实践&#xff0c;停滞的研究如…

17万字数字化医院信息化建设大数据平台建设方案WORD

导读&#xff1a;原文《17万字数字化医院信息化建设大数据平台建设方案WORD》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 目录 第1章 医院信息化概述 1.1 国内…

【开发】视频云存储EasyCVR视频汇聚平台AI智能算法定制

安防视频集中存储EasyCVR视频汇聚平台&#xff0c;可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等功能。为了便…

2023国赛数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 最短时…

Log4j反序列化命令执行漏洞(CVE-2017-5645)Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

一.Log4j反序列化命令执行漏洞(CVE-2017-5645&#xff09; Apache Log4j是一个用于Java的日志记录库&#xff0c;其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码 环境&#xff1a;vulhub 工具下载地址&#xff1…

Oracle Database12c数据库官网下载和安装教程

文章目录 下载安装Oracle自带的客户端工具使用 下载 进入oracle官网 点击下载连接之后右上角会有一个下载 我们只需要数据库本体就够了 运行这个下载器 等待下好之后即可 出现 Complete 之后代表下载成功&#xff0c;然后我们解压即可 安装 双击 双击setup.exe 根据…

opencv进阶09-视频处理cv2.VideoCapture示例(打开本机电脑摄像头)

视频信号&#xff08;以下简称为视频&#xff09;是非常重要的视觉信息来源&#xff0c;它是视觉处理过程中经常要处理的一类信号。实际上&#xff0c;视频是由一系列图像构成的&#xff0c;这一系列图像被称为帧&#xff0c;帧是以固定的时间间隔从视频中获取的。获取&#xf…

在C中使用Socket实现多线程异步TCP消息发送

目录 基础知识开始实现主要函数说明结束语 在本篇文章中&#xff0c;我们会探讨如何在C语言中使用socket来实现多线程&#xff0c;异步发送TCP消息的系统。虽然C标准库并没有原生支持异步和多线程编程&#xff0c;但是我们可以结合使用POSIX线程&#xff08;pthread&#xff09…

【⑬MySQL | 数据类型(一)】简介 | 整数 | 浮点 | 定点类型

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL数据类型简介 | 整数 | 浮点 | 定点类型的分享✨ 目录 前言0.数据类型简介1 整数类型2 浮点类型3 定点类型4 日期/时间类型总结 0.数据类型简介 数据类型&#xff08;data_type&#xff09;是指系统中所允许的…

学会Mybatis框架:让你的代码更具灵活性、可维护性、安全性和高效性【二.动态SQL】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Mybatis的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Mybatis动态SQL如何应用 1.需求 2.…

Win解答 | 解决键盘中 字母+空格 导致的输入法弹窗导致的一系列问题

近三个月来&#xff0c;一直都有一个键盘组合键的问题影响我的电脑使用&#xff0c;不管是打字还是打游戏&#xff0c;都会出现按键盘的 字母空格 弹出一个特殊符号的候选框&#xff0c;如下图所示 图片中为 S空格 所出现的弹窗 一个看似方便&#xff0c;实则难受的功能 其实打…

针对论坛系统进行功能测试和性能测试

项目链接:飞鸽论坛 目录 一. 项目背景 二. 项目功能 三. 功能测试 注册: 登录: 更改用户信息: 发布帖子: 更新帖子信息: 点赞: 评论: 发送私信: 测试报告 四. 性能测试 Virtual User Generator Controller Analysis 测试报告: 一. 项目背景 该论坛系统采用前…

JMeter使用方法

一、基础简介 界面 打开方式 双击 jmeter.bat双击 ApacheJMeter.jsr命令行输入 java -jar ApacheJMeter.jar 目录 BIN 目录&#xff1a;存放可执行文件和配置文件 docs目录&#xff1a;api文档&#xff0c;用于开发扩展组件 printable-docs目录&#xff1a;用户帮助手册 li…

【NEW】视频云存储EasyCVR平台H.265转码配置增加分辨率设置

关于视频分析EasyCVR视频汇聚平台的转码功能&#xff0c;我们在此前的文章中也介绍过不少&#xff0c;感兴趣的用户可以翻阅往期的文章进行了解。 安防视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求&#xff0c;让平台在内网、专网、VPN、广域网、互联网等各…

C语言刷题(13)

第一题 第二题 第三题 第四题 第五题 第六题 第七题 注意 1.nsqrt(n)&#xff0c;sqrt本身不会将n开根 2.初始化已经令sumn了&#xff0c;故相加的个数为m-1次

【业务功能篇74】三高微服务项目springboot-springcloud

三高指的是&#xff1a;高性能、高并发、高可用 2.项目架构 2.1 系统架构图 整体的项目架构图如下 2.2 业务组成 整体的项目业务组成如下

【Prometheus】概述及部署

目录 Prometheus 概述 Prometheus 的生态组件 Prometheus 的工作模式 Prometheus 的工作流程 Prometheus 的局限性 部署 Prometheus Prometheust Server 端安装和相关配置 部署 Exporters 监控 MySQL 配置示例 监控 Nginx 配置示例 部署 Grafana 进行展示 部署 Pro…

Linux centos7 高频词统计

如何统计文章中高频词?是我们经常遇到的问题&#xff0c;也是多场合考察个人知识整合能力的重要手段。招聘经典问题&#xff1a;linux中命令行统计文件中前10个高频词。 在讨论此问题中&#xff0c;主要应用到的知识点有&#xff1a;排序、去重、单词查询、grep、sed和awk使用…