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

news2024/12/26 16:06:35

目录

关系建表

数据库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:00
	id_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:m

create 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:m

create 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.coloradmin.cn/o/914460.html

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

相关文章

Redis三种持久化方式详解

一、Redis持久性 Redis如何将数据写入磁盘 持久性是指将数据写入持久存储,如固态磁盘(SSD)。Redis提供了一系列持久性选项。其中包括: RDB(快照):RDB持久性以指定的时间间隔执行数据集的时间点…

wazuh初探系列二 :Wazuh功能初步探知

目录 介绍 主动响应: 监控日志 "bin"目录用途: 告警信息: etc 目录中包含了以下主要的配置文件: ruleset:自带规则库,建议不改 rules目录: 解码器: 登录日志格式&#xff1a…

使用kubeadm方式快速部署一个K8S集群

目录 一、环境准备 二、环境初始化 三、在所有主机上安装相关软件 1、安装docker 2、配置k8s的yum源 3、安装kubelet、kubeadm、kubectl 四、部署Kubernetes Master 五、加入Kubernets Node 六、部署CNI网络插件 七、测试k8s集群 一、环境准备 我的是CentOS7系统&am…

C++Qt堆叠窗体的使用案例

本博文源于笔者最近学习的Qt,内容讲解堆叠窗体QStackedWidget案例,效果是选择左侧列表框中不同的选项时,右侧显示所选的不同的窗体。 案例效果 案例书写过程 控件都是动态创建的,因此.h文件需要创建控件,.cpp书写业务…

Android NDK JNI与Java的相互调用

一、Jni调用Java代码 jni可以调用java中的方法和java中的成员变量,因此JNIEnv定义了一系列的方法来帮助我们调用java的方法和成员变量。 以上就是jni调用java类的大部分方法,如果是静态的成员变量和静态方法,可以使用***GetStaticMethodID、CallStaticObjectMethod等***。就…

[SpringBoot3]Web服务

五、Web服务 基于浏览器的B/S结构应用十分流行。SpringBoot非常适合Web应用开发,可以使用嵌入式Tomcat、Jetty、Undertow或Netty创建一个自包含的HTTP服务器。一个SpringBoot的Web应用能够自己独立运行,不依赖需要安装的Tomcat、Jetty等。SpringBoot可以…

如何在Windows、Mac和Linux操作系统上安装Protocol Buffers(protobuf)编译器

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

TLSv1.2抓包解密分析过程之RSA_WITH_AES_128_CBC_SHA

RSA_WITH_AES_128_CBC_SHA是TLSv1.2中最简单的加密协议了,非常适合用于学习TLSv1.2的握手过程。 RSA_WITH_AES_128_CBC_SHA表示 使用RSA非对称加密进行密钥协商使用AES128 CBC模式加密Hash算法使用SHA-1 参考文档:rfc5246 rfc5077 rfc7627 1. t…

Kyligence Copilot 登陆海外,斩获 Product Hunt 日榜 TOP 2

8月14日,AI 数智助理 Kyligence Copilot 在全球知名科技产品平台 Product Hunt 上线,其以出色的产品创新实力,在激烈的竞争中脱颖而出,仅仅在 24 小时内收获了超过 400 个投票和近 200 条支持评论,荣登当日产品榜排名第…

Microsoft正在将Python引入Excel

Excel和Python这两个世界正在碰撞,这要归功于Microsoft的新集成,以促进数据分析和可视化 Microsoft正在将流行的编程语言Python引入Excel。该功能的公共预览版现已推出,允许Excel用户操作和分析来自Python的数据。 “您可以使用 Python 绘图…

远程端口转发 实践 如何将物理机某一端口的服务转发到vps上,使得外网能访问到

以本机1470端口(我的sqli-labs)与vps的9023端口为例。 SSH基本的连接命令是: ssh usernamehostname这里牵扯到了两台主机,一是执行命令、运行SSH客户端的主机,我们称为本地主机A【Host A】;二是接收连接请…

记录某一次演讲

大家好,我是繁依,是一名软件工程的学生。很高兴能站在这里,与大家分享一下自己日常数据分析学习的经验。首先,我先来介绍一下自己常用的学习资源和工具,学习平台及资源有哔哩哔哩、掘金小册、和鲸社区、飞桨社区等 常…

ECharts配合Node.js爬虫实现数据可视化

数据可视化简介 可视化技术是将数据和信息以图形化的方式展示出来,以便更好地理解和分析。可视化技术通常使用各种图表、图形、动画和交互式效果来呈现数据。可视化技术有以下几个基本概念: 数据:可视化技术的基础是数据。数据可以是数字、文…

使用Kind搭建本地k8s集群环境

目录 1.前提条件 2.安装Kind 3.使用Kind创建一个K8s集群 3.1.创建一个双节点集群(一个Master节点,一个Worker节点) 3.2.验证一下新创建的集群信息 3.3.删除刚刚新建的集群 4.安装集群客户端 4.1.安装kubectl 4.1.1.验证kubectl 4.2.安…

工法到底是什么?

关于工法许多人都是感到陌生的,第一次接触会想,工法是建筑工法还是农业工法呢?其实都不是的。百度百科给的解释是:工法一词来自日本,日本《国语大辞典》将工法释为工艺方法和工程方法。在中国,工法是指以工…

ElementUI Table 翻页缓存数据

Element UI Table 翻页保存之前的数据,网上找了一些,大部分都是用**:row-key** 和 reserve-selection,但是我觉得有bug,我明明翻页了…但是全选的的个框还是勾着的(可能是使用方法不对,要是有好使的…请cute我一下…感谢) 所以自己写了一个… 思路: 手动勾选的时候,将数据保存…

JDK 核心jar之 rt.jar

一、JDK目录展示 二、rt.jar 简介 2.1.JAR释义 在软件领域,JAR文件(Java归档,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等&…

通过python在unity里调用C#接口

log: 背景 最近在做虚拟人底层驱动sdk测试,因为后端使用的是C#,我个人更倾向于python编程辅助测试工作,测试sdk需要通过开发提供的接口方法文档,通过传测试场景参数调用方法进行单元测试 技术&工具 项目语言 C# 项目工具 unity 测试…

Aspose.Tasks for .NET V23Crack

Aspose.Tasks for .NET V23Crack 改进了大型项目的内存占用。 添加了API,允许您在应用程序无法访问系统字体文件夹时指定用户的字体文件夹。 Aspose.Tasksfor.NET是处理MicrosoftProject文件的可靠的项目管理API。API支持在不依赖Microsoft Project的情况下读取、写…

CAM实现的流程--基于Pytorch实现

CAM实现的流程 CAM类激活映射CAM是什么CAM与CNN CAM类激活映射 CAM是什么 可视化CNN的工具, CAM解释网络特征变化,CAM使得弱监督学习发展成为可能,可以慢慢减少对人工标注的依赖,能降低网络训练的成本。通过可视化,就…