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

目录

关系建表

数据库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.mzph.cn/news/49747.shtml

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

相关文章

开源TTS+gtx1080+cuda11.7+conda+python3.9吊打百度TTS

一、简介 开源项目,文本提示的生成音频模型 https://github.com/suno-ai/bark Bark是由Suno创建的基于变换器的文本到音频模型。Bark可以生成极为逼真的多语种演讲以及其他音频 - 包括音乐、背景噪音和简单的声音效果。该模型还可以产生非言语沟通,如…

Android 11 Display亮灭屏

系统休眠唤醒的时候会涉及到亮灭屏,下面分析下系统(高通8155平台)Display亮灭屏流程 1. 点亮屏幕 点亮屏幕入口在framework/base/下面LightsService.java,然后通过调用SurfaceControl.java ,最终调用到framework/native下面的Sur…

【洁洁送书第五期】为什么我们要了解可观测性工程

导读 可观测性已成为一个热门话题,并广受关注。随着它的普及,“可观测性”不幸被误作“监控”或“系统遥测”的同义词。可观测性是软件系统的一个特征。而且,只有当团队采用新的实践进行持续开发时,才能在生产软件系统中有效利用这…

Day14-2-NodeJS后端开发流程

Day14-NodeJS后端工程化流程 一 apifox工具 apifox是目前最好的接口调试工具 1 环境搭建 安装登录创建项目接口里面创建对应文件夹在指定的文件夹里面创建接口2 GET请求 1 apifox发送GET请求 2 后端接收GET请求 router.get("/getUserinfo"

Azure防火墙

文章目录 什么是Azure防火墙如何部署和配置创建虚拟网络创建虚拟机创建防火墙创建路由表,关联子网、路由配置防火墙策略配置应用程序规则配置网络规则配置 DNAT 规则 更改 Srv-Work 网络接口的主要和辅助 DNS 地址测试防火墙 什么是Azure防火墙 Azure防火墙是一种用…

EndNote(四)【文献引文格式、同步、智能分组、引文报告、文献笔记导出】

参考文献格式:(官网引文格式下载文章引文格式更新-word) 官网引文格式下载 网址:Downloads | EndNote 点击output styles: 下下来之后,放在这个路径下: 双击看一下: ok. 比如我们要…

引领行业高质量发展|云畅科技参编《低代码开发平台创新发展路线图(2023)》

8月8日-9日,中国电子技术标准化研究院于北京顺利召开《低代码开发平台创新发展路线图(2023)》封闭编制会。云畅科技、浪潮、百度、广域铭岛等来自低代码开发平台解决方案供应商、用户方、科研院所等近30家相关单位的40余位专家参与了现场编制…

mybatis动态SQL的运用

一、mybatis动态SQL update 表名 set name?,age? where id? 如果我们的前台没有传参,比如没有传入我们的name值,name就会把字段值改为null,这就违背了我们编码的初衷。 许多人会使用类似于where 1 1 来作为前缀,在代码中会用i…

STL---vector

目录 1.vector的介绍及使用 2.vector接口说明及模拟实现 2.1vector定义 2.2vector迭代器的使用 2.3vector容量 2.4vector增删查改 3迭代器失效 4.使用memcpy拷贝 5.模拟实现 1.vector的介绍及使用 vector的文档介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数…

战略定位、战略咨询、战略定位咨询:一站式解决您的困惑

战略定位、战略咨询和战略定位咨询是三个密切相关但又不同的概念。它们都与企业的发展战略有关,但各自的侧重点不同。在这篇文章中,我们将详细介绍这三个词的定义,并为您提供一些实用的建议,帮助您更好地理解和应用这些概念。 战略…

ardupilot开发 --- 仿真篇

环境 安装wsl2,win11自带wsl,win10需要安装;git clone ardupilot 源码;安装 Linux下的build环境;安装 flightgear(非必须) sudo apt-get install flightgearbuild 想要仿真的载具类型&#xff…

漏洞挖掘和安全审计的技巧与策略

文章目录 漏洞挖掘:发现隐藏的弱点1. 源代码审计:2. 黑盒测试:3. 静态分析工具: 安全审计:系统的全面评估1. 渗透测试:2. 代码审计:3. 安全策略审查: 代码示例:SQL注入漏…

怎么维护自己的电脑

文章目录 我的电脑日常维护措施维护技巧键盘&屏幕清洁清理磁盘空间控制温度 电脑换电池 无论是学习还是工作,电脑都是IT人必不可少的重要武器,一台好电脑除了自身配置要经得起考验,后期主人对它的维护也是决定它寿命的重要因素&#xff0…

安防视频云平台EasyNVR视频汇聚平台硬件无法进入服务器的问题处理方法

EasyNVR是基于RTSP/Onvif协议的视频接入、处理及分发的安防视频云平台,可提供的视频能力包括:设备接入、实时视频直播、录像、云存储、录像回放与检索、告警、级联等,平台可支持将接入的视频流进行全平台、全终端的分发,分发的视频…

三、pikachu之文件上传

文章目录 1、文件上传概述2、客户端检测2.1 客户端检测原理及绕过方法2.2 实际操作之client check 3、服务端检测3.1 MIME type3.3.1 检测原理3.3.2 绕过方法3.3.3 实际操作之MIME type 3.2 文件内容检测3.2.1 检测原理3.2.2 绕过方式3.2.3 实际操作之getimagesize() 3.3 其他服…

微服务中间件--微服务保护

微服务保护 微服务保护a.sentinelb.sentinel限流规则1) 流控模式1.a) 关联模式1.b) 链路模式 2) 流控效果2.a) 预热模式2.b) 排队等待 3) 热点参数限流 c.隔离和降级1) Feign整合Sentinel2) 线程隔离2.a) 线程隔离(舱壁模式) 3) 熔断降级3.a) 熔断策略-慢…

H3C 无线网络vlan pool架构案例三层组网web配置

实验的是目标就是要实现华为vlan pool那种应用, 整个园区发一种ssid信号,但是连接的客户端可以随机连上后进入不同的vlan,在这大型园区网非常有用。 这种方法也适合同一个ssid情况下,在不同的位置关联不同的vlan 开启自动固化、…

为什么选择网络安全?为什么说网络安全是IT行业最后的红利?

一、为什么选择网络安全? 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地,网络安全行业地位、薪资随之水涨船高。 未来3-5年,是安全行业的黄金发展期,提前踏入…

SpringBoot 响应头添加版本号、打包项目后缀添加版本号和时间

文章目录 响应头添加版本号获取版本号添加响应处理器请求结果 打包项目后缀添加版本号和时间实现打包结果 响应头添加版本号 获取版本号 在 pom.xml 中,在 project.version 下定义版本号 在 application.yml 获取 pom.xml 中 project.version 中的信息 添加响应处…

JAVA结合AE(Adobe After Effects)AE模板文件解析生成视频实现类似于逗拍(视频DIY)的核心功能

最近看抖音上有很多各种视频表白生成的直播而且直播间人很多,于是就思考如何实现的视频内的文字图片内容替换的呢 ,答案需要用到类似与逗拍一样的视频DIY的功能,苦于我是java,百度了半天没有办法和思路,总不能为了一个…