首页 > 编程语言 >Javaweb-多表查询案例

Javaweb-多表查询案例

时间:2024-09-08 21:27:56浏览次数:1  
标签:多表 Javaweb -- 查询 dept job emp NULL id

数据准备

DROP TABLE IF EXISTS emp;
DROP TABLE IF EXISTS dept;
DROP TABLE IF EXISTS job;
DROP TABLE IF EXISTS salarygrade;

-- 部门表
CREATE TABLE dept (
id INT PRIMARY KEY PRIMARY KEY, -- 部门id
dname VARCHAR(50), -- 部门名称
loc VARCHAR(50) -- 部门所在地
);

-- 职务表,职务名称,职务描述
CREATE TABLE job (
id INT PRIMARY KEY,
jname VARCHAR(20),
description VARCHAR(50)
);

-- 员工表
CREATE TABLE emp (
id INT PRIMARY KEY, -- 员工id
ename VARCHAR(50), -- 员工姓名
job_id INT, -- 职务id
mgr INT , -- 上级领导
joindate DATE, -- 入职日期
salary DECIMAL(7,2), -- 工资
bonus DECIMAL(7,2), -- 奖金
dept_id INT, -- 所在部门编号
CONSTRAINT emp_jobid_ref_job_id_fk FOREIGN KEY (job_id) REFERENCES job (id),
CONSTRAINT emp_deptid_ref_dept_id_fk FOREIGN KEY (dept_id) REFERENCES dept (id)
);
-- 工资等级表
CREATE TABLE salarygrade (
grade INT PRIMARY KEY, -- 级别
losalary INT, -- 最低工资
hisalary INT -- 最高工资
);

-- 添加4个部门
INSERT INTO dept(id,dname,loc) VALUES
(10,'教研部','北京'),
(20,'学工部','上海'),
(30,'销售部','广州'),
(40,'财务部','深圳');

-- 添加4个职务
INSERT INTO job (id, jname, description) VALUES
(1, '董事长', '管理整个公司,接单'),
(2, '经理', '管理部门员工'),
(3, '销售员', '向客人推销产品'),
(4, '文员', '使用办公软件');

-- 添加员工
INSERT INTO emp(id,ename,job_id,mgr,joindate,salary,bonus,dept_id) VALUES
(1001,'孙悟空',4,1004,'2000-12-17','8000.00',NULL,20),
(1002,'卢俊义',3,1006,'2001-02-20','16000.00','3000.00',30),
(1003,'林冲',3,1006,'2001-02-22','12500.00','5000.00',30),
(1004,'唐僧',2,1009,'2001-04-02','29750.00',NULL,20),
(1005,'李逵',4,1006,'2001-09-28','12500.00','14000.00',30),
(1006,'宋江',2,1009,'2001-05-01','28500.00',NULL,30),
(1007,'刘备',2,1009,'2001-09-01','24500.00',NULL,10),
(1008,'猪八戒',4,1004,'2007-04-19','30000.00',NULL,20),
(1009,'罗贯中',1,NULL,'2001-11-17','50000.00',NULL,10),
(1010,'吴用',3,1006,'2001-09-08','15000.00','0.00',30),
(1011,'沙僧',4,1004,'2007-05-23','11000.00',NULL,20),
(1012,'李逵',4,1006,'2001-12-03','9500.00',NULL,30),
(1013,'小白龙',4,1004,'2001-12-03','30000.00',NULL,20),
(1014,'关羽',4,1007,'2002-01-23','13000.00',NULL,10);

-- 添加5个工资等级
INSERT INTO salarygrade(grade,losalary,hisalary) VALUES
(1,7000,12000),
(2,12010,14000),
(3,14010,20000),
(4,20010,30000),
(5,30010,99990);


1. select emp.id,emp.ename,salary,job.jname,job.description from emp left join job on emp.job_id=job.id;
2. select emp.id,emp.ename,salary,job.jname,job.description,dept.dname,dept.loc from job,emp,dept where job.id=emp.job_id and emp.dept_id=dept.id;
3. select emp.ename,emp.salary,(select grade from salarygrade where emp.salary BETWEEN losalary and hisalary),(select losalary from salarygrade where emp.salary BETWEEN losalary and hisalary),(select hisalary from salarygrade where emp.salary BETWEEN losalary and hisalary) from emp;
4. select emp.ename,salary,job.jname,job.description,dept.dname,dept.loc,(select grade from salarygrade where emp.salary BETWEEN losalary and hisalary) from emp,dept,job where job.id=emp.job_id and dept.id=emp.dept_id;
5. select id,dname,loc,count(*) from (select emp.ename,dept.id,dept.dname,dept.loc from emp left join dept on emp.dept_id=dept.id) t1 GROUP BY id;

标签:多表,Javaweb,--,查询,dept,job,emp,NULL,id
From: https://www.cnblogs.com/yesung0824/p/18403501

相关文章

  • JavaWeb学习笔记,关于HTML的入门标签及属性
    一.HTML入门结构标签以及特点   以上标签即为HTML的入门标签,包括了HTML的基本框架结构标签以及部分常用标签,需要注意的是,HTML的语法松散,但我们更要严格要求自己,使用正常符合要求的代码格式,以免后期出现错误而无法及时发现问题,值得提起的还有,<h1>到<h6>是HTML中预定义好......
  • Javaweb-子查询
    select*fromempwheresalary>(selectsalaryfromempwherename='猪八戒');1.select*fromempwheredep_idin(selectdidfromdeptwherednamein('财务部','市场部'));2.select*fromempwheredep_id=(selectdidfromd......
  • Python中如何实现字符串的查询和替换?
    在Python中,字符串的查询和替换是字符串处理中的基础且常用的操作。Python提供了多种方法来实现这些功能,包括使用内置的方法、正则表达式等。一、字符串的查询字符串的查询通常指的是在字符串中查找子串的位置、出现的次数,或者检查子串是否存在等。Python的字符串对象提供了多......
  • 基于Javaweb实现的物流管理系统设计与实现(源码+数据库+论文+部署+文档+讲解视频等)
    文章目录1.前言2.详细视频演示3.论文参考4.项目运行截图5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue6.可行性分析7.系统测试7.1系统测试的目的7.2系统功能测试8.数据库表设计9.代码参考10.数据库脚本11.作者推荐项目12.为什么选择我?13.获取源......
  • Javaweb-连接查询-内连接和外连接
    selectemp.name,emp.gender,dept.dnamefromemp,deptwhereemp.dep_id=dept.did;selectt1.name,t1.gender,t2.dnamefromempt1,deptt2wheret1.dep_id=t2.did;--为了防止表名过长,还可以给表取别名select*fromempINNERJOINdeptonemp.dep_id=dept.did;1......
  • Javaweb-多表查询
    1.createtabledept( didintprimarykeyauto_increment, dnamevarchar(20));2.createtableemp( idintprimarykeyauto_increment, namevarchar(10), genderchar(1), salarydouble, join_datedate, dep_idint, FOREIGNkey(dep_id)REFERENCESde......
  • MySQL 函数查询返回NULL
    createtableuser(idbigintprimarykeyauto_increment,ageint);gorm使用函数查询时,通过IFNULL来确保查询不到记录时有默认值。max函数selectmax(age)fromuser;selectIFNULL(max(age),0)fromuser;sum函数count函数默认是0。......
  • 基于JavaWeb在线文件管理系统的设计与实现-计算机毕业设计源码+LW文档
    摘 要在当今信息时代,随着数字化和网络化的发展,文件管理成为各个领域中不可或缺的一部分。企业、学校、个人等各类组织和用户都需要有效地组织、存储和分享大量的电子文件。传统的文件管理方式已经不能满足快速发展的需求,因此,基于JavaWeb的在线文件管理系统的开发成为迫切需要的......
  • 京东物流查询|开发者调用API接口实现
    快递聚合查询的优势1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:https://www.tanshuapi.com/market/detail-68以下示例是参考的示例代码:impor......
  • Mysql高级篇(中)——七种常见的 join 查询图
    注意:MySQL是不支持FULLOUTERJOIN这种语法的,因此要实现图中6、7的查询结果,可以使用UNION关键字结合LEFTJOIN、RIGHTJOIN实现,UNION可以实现去重的效果;参考如下代码:--MySQL中图标6的实现方式SELECT*FROMtableAALEFTJOINtableBBONA.key=B.ke......