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

目录

关系建表

数据库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;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV笔记之solvePnP函数和calibrateCamera函数对比

OpenCV笔记之solvePnP函数和calibrateCamera函数对比 文章目录 OpenCV笔记之solvePnP函数和calibrateCamera函数对比1.cv::solvePnP2.cv::solvePnP函数的用途和工作原理3.cv::solvePnP背后的数学方程式4.cv::SOLVEPNP_ITERATIVE、cv::SOLVEPNP_EPNP、cv::SOLVEPNP_P3P5.一个固定…

RNN模型简单理解和CNN区别

目录 神经网络:水平方向延伸,数据不具有关联性 ​ RNN:在神经网络的基础上加上了时间顺序,语义理解 ​RNN: 训练中采用梯度下降,反向传播 ​ 长短期记忆模型 ​输出关系:1 toN,N to N 单入…

python 各种疑难杂包安装方法与踩坑记录

常用招数: 网络问题:切换网络线路/开关科学、启用/不用国内镜像 包找不到:启用/不用国内镜像、尝试conda、pip、source等多种安装方式 gdal、rasterio 参考链接: python rasterio库安装具体流程 - 知乎 Python安装gdal,raster…

MySQL——基础——外连接

一、外连接查询语法:(实际开发中,左外连接的使用频率要高于右外连接) 左外连接 SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件...; 相当于查询表1(左表)的所有数据 包含 表1和表2交集部分的数据 右外连接 SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN …

前端处理图片文件的方法

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

函数式编程

函数式编程&#xff08;lambda&#xff09; 哈喽&#xff0c;大家好&#xff0c;又到了技术成长的一天。今天向大家分享一个编程利器-函数式编程之lambda。Lambda函数式编程在前端后端编程中使用非常广泛&#xff0c;我们现在就一起去深入了解一下它是什么&#xff0c;怎么用。…

飞天使-k8s基础组件分析-pod

文章目录 pod介绍pod 生命周期init 容器容器handlerpod中容器共享进程空间sidecar 容器共享 参考链接 pod介绍 最小的容器单元 为啥需要pod? 答: 多个进程丢一个容器里&#xff0c;会因为容器里个别进程出问题而出现蝴蝶效应&#xff0c;pod 是更高级的处理方式pod 如何共享相…

C语言学习系列-->【关于qsort函数的详解以及它的模拟实现】

文章目录 一、概述二、qsort函数参数介绍三、qsort实现排序3.1 qsort实现整型数组排序3.2 qsort实现结构体数组排序 四、模拟实现qsort函数 一、概述 对数组的元素进行排序 对数组中由 指向的元素进行排序&#xff0c;每个元素字节长&#xff0c;使用该函数确定顺序。 此函数使…

使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。

目录 一.拉取镜像 二.运行镜像生成容器实例 三.登录 环境&#xff1a;centos7 一.拉取镜像 使用docker pull命令来拉取MySQL和own cloud的镜像 [rootlocalhost ~]# docker pull mysql:5.6 [rootlocalhost ~]# docker images [rootlocalhost ~]# docker images REPOSITORY…

Vue Element upload组件和Iview upload 组件上传文件

今天要分享的是使用这俩个UI组件库的upload组件分别实现调用组件本身的上传方法实现和后台交互。接下来就是开车的时间&#xff0c;请坐稳扶好~ 一、element upload组件传送门 1、html文件 <el-upload ref"uploadRef" :action"uploadUrl" :data"…

【校招VIP】前端校招考点之行内/块级元素

考点介绍&#xff1a; 行内元素会在一条直线上排列&#xff08;默认宽度只与内容有关&#xff09;&#xff0c;都是同一行的&#xff0c;水平方向排列。块级元素各占据一行&#xff08;默认宽度是它本身父容器的100%&#xff08;和父元素的宽度一致&#xff09;&#xff0c;与内…

02.案列项目Demo

1.创建项目 1. 创建项目 用pycharm 选择对应的编译器&#xff0c;输入对应的文件名&#xff0c;点击创建项目。删除默认外层生成的template和DIRS 配置项&#xff1a; 2. 创建App 创建appo1的命令&#xff1a; python manage.py startapp app01 如果使用pycharm>tool>…

Hi-TRS:骨架点视频序列的层级式建模及层级式自监督学习

论文题目&#xff1a;Hierarchically Self-Supervised Transformer for Human Skeleton Representation Learning 论文下载地址&#xff1a;https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136860181.pdf 代码地址&#xff1a;https://github.com/yuxiaochen1103…

私有化部署即时通讯平台,30分钟替换钉钉和企业微信

随着企业对即时通讯和协作工具的需求不断增长&#xff0c;私有化部署的即时通讯平台成为企业的首选。WorkPlus作为有10余年行业深耕经验与技术沉淀品牌&#xff0c;以其安全高效的私有化部署即时通讯解决方案&#xff0c;帮助企业在30分钟内替换钉钉和企业微信。本文将深入探讨…

iOS17 widget Content margin

iOS17小组件有4个新的地方可以放置分别是&#xff1a;Mac桌面、iPad锁屏界面、 iPhone Standby模式、watch的smart stack Transition to content margins iOS17中苹果为widget新增了Content margin, 使widget的内容能够距离边缘有一定的间隙&#xff0c;确保内容显示完整。这…

HTTPS证书如何申请?只需这五个步骤

在如今的互联网时代&#xff0c;网络安全变得愈发重要。为了保障网站内数据的安全&#xff0c;许多网站都开始使用HTTPS协议来进行数据传输。而谷歌、百度等搜索巨擘启用全站HTTPS加密服务&#xff0c;更是掀起了网站HTTPS加密的浪潮。那么申请HTTPS证书都需要什么&#xff1f;…

React(7)

1.React Hooks 使用hooks理由 1. 高阶组件为了复用&#xff0c;导致代码层级复杂 2. 生命周期的复杂 3. 写成functional组件,无状态组件 &#xff0c;因为需要状态&#xff0c;又改成了class,成本高 1.1 useState useState();括号里面处的是初始值&#xff1b;返回的是一个…

接口自动化框架(Pytest+request+Allure)

前言&#xff1a; 接口自动化是指模拟程序接口层面的自动化&#xff0c;由于接口不易变更&#xff0c;维护成本更小&#xff0c;所以深受各大公司的喜爱。 接口自动化包含2个部分&#xff0c;功能性的接口自动化测试和并发接口自动化测试。 本次文章着重介绍第一种&#xff0c…

Python Opencv实践 - 直方图显示

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape)#图像直方图计算 #cv.calcHist(images, channels, mask, histSize, ranges, hist, accumulate) #images&…

爱校对发布全新PDF校对工具,为用户带来更为便捷的校正体验

随着数字化文档使用的普及&#xff0c;PDF格式已经成为最为广泛使用的文件格式之一。为满足广大用户对于高效、准确PDF文档校对的需求&#xff0c;爱校对团队经过深入研发&#xff0c;正式推出全新的PDF校对工具&#xff01; 这一全新工具针对PDF文件格式进行了深度优化&#…