Java教程

数据库高级查询(员工部门表)示例1

本文主要是介绍数据库高级查询(员工部门表)示例1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
/*数据库部分*/
-- 删除数据库
DROP DATABASE IF EXISTS employee;
-- 创建数据库
CREATE DATABASE employee DEFAULT CHARACTER SET utf8;
-- 切换数据库
USE employee;

/*数据表部分*/
-- 删除数据表
DROP TABLE  IF EXISTS t_employee;
DROP TABLE  IF EXISTS t_department;

-- 创建部门表
CREATE TABLE t_department (
    d_id INT PRIMARY KEY AUTO_INCREMENT  #部门编号
    ,d_dept VARCHAR(20) NOT NULL UNIQUE  #部门名
);


-- 创建员工表
CREATE TABLE t_employee (
    e_id INT PRIMARY KEY AUTO_INCREMENT #员工编号 
    ,e_name VARCHAR(20) NOT NULL UNIQUE #用户名
    ,e_nickName VARCHAR(20) NOT NULL    #昵称
    ,e_password VARCHAR(20) NOT NULL    #密码
    ,e_birthday DATETIME NOT NULL       #生日 
    ,e_gender TINYINT NOT NULL          #性别
    ,e_phone VARCHAR(13) NOT NULL       #电话
    ,e_address VARCHAR (100) NOT NULL   #地址
    ,e_dept INT NOT NULL                #所属部门
    ,e_mgr INT NOT NULL                 #直属领导
    ,e_power INT NOT NULL               #职务/权限
    ,FOREIGN KEY (e_dept) REFERENCES t_department(d_id)  #所属部门外键
    ,FOREIGN KEY (e_mgr) REFERENCES t_employee(e_id)     #直属领导外键  
    
);

/*
3. 为员工表和部门表自增长
	1) 员工编号从1000 0001开始
	2) 部门编号从1001开始

4. 为员工表和部门表插入数据
	1) 员工职务/权限, 分为超级管理员0, 经理1, 部门经理2, 主管3, 员工4
	2) 添加四个部门
	3) 添加超级管理员1名, 经理2名, 部门经理4名, 主管6名, 员工12名
	4) 各级员工所属部门自行决定, 每个部门至少需要主管或以上级别1名, 普通员工1名
*/
-- 部门测试数据 
INSERT INTO t_department VALUES (1001,'业务部');
INSERT INTO t_department (`d_dept`) VALUES ('财务部'); 
INSERT INTO t_department (`d_dept`) VALUES ('人事部');
INSERT INTO t_department (`d_dept`) VALUES ('技术部');


-- 员工测试数据
#超级管理员
INSERT INTO t_employee VALUES (10000001,'用户名1','昵称1','0000','1990-10-10',1,
			      '13555555555','地址1',1001,10000001,0);
#部门经理1 /1001部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名2','昵称2','0000','1990-6-10',1, '13555555555','地址2',1001,10000001,2);
#主管1/1001部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名3','昵称3','0000','1991-9-10',1, '13333333333','地址3',1001,10000002,3);
#员工1/1001部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名4','昵称4','0000','1992-9-10',1, '13666666666','地址4',1001,10000003,4);	       
 #员工2/1001部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名5','昵称5','0000','1993-9-10',0, '13888888888','地址5',1001,10000003,4);	
#员工3/1001部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名6','昵称6','0000','1994-9-10',0, '13777777777','地址6',1001,10000002,4);
#经理1/1002部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名7','昵称7','0000','1990-5-10',1, '13555555555','地址7',1002,10000001,1);
#部门经理2/1002部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名8','昵称8','0000','1991-6-10',1, '13555555555','地址8',1002,10000007,2);
#主管2/1002部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名9','昵称9','0000','1995-9-10',0, '13555555555','地址9',1002,10000008,3);		
#员工4/1002部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名10','昵称10','0000','1995-09-10',0, '13555555555','地址10',1002,10000009,4);	
#员工5/1002部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名11','昵称11','0000','1992-10-10',0, '13555555555','地址11',1002,10000009,4);	
#员工6/1002部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名12','昵称12','0000','1990-06-10',0, '13555555555','地址12',1002,10000009,4);
#部门经理3/1003部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名13','昵称13','0000','1993-11-10',1, '13555555555','地址13',1003,10000007,2);
#主管3/1003部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名14','昵称14','0000','1994-10-10',0, '13555555555','地址14',1003,10000013,3);
#主管4/1003部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名15','昵称15','0000','1996-05-10',1, '13555555555','地址15',1003,10000013,3);
#员工7/1003部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名16','昵称16','0000','1998-11-10',1, '13555555555','地址16',1003,10000014,4);		
#员工8/1003部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名17','昵称17','0000','1998-05-10',1, '13555555555','地址17',1003,10000014,4);
#员工9/1003部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名18','昵称18','0000','1998-08-10',1, '13555555555','地址18',1003,10000015,4);
#经理2/1004部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名19','昵称19','0000','1988-05-10',0, '13555555555','地址19',1004,10000001,1);
#部门经理4/1004部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名20','昵称20','0000','1992-08-10',1, '13555555555','地址20',1004,10000019,2);
#主管5/1004部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名21','昵称21','0000','1993-06-10',0, '13555555555','地址21',1004,10000020,3);
#主管6/1004部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名22','昵称22','0000','1992-05-10',1, '13555555555','地址22',1004,10000020,3);
#员工10/1004部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名23','昵称23','0000','1996-07-10',0, '13555555555','地址23',1004,10000021,4);
#员工11/1004部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名24','昵称24','0000','1997-06-10',1, '13555555555','地址24',1004,10000021,4);
#员工12/1004部门
INSERT INTO t_employee (`e_name`,`e_nickName`,`e_password`,`e_birthday`,`e_gender`,`e_phone`,`e_address`,`e_dept`,`e_mgr`,`e_power`) 
	VALUES ('用户名25','昵称25','0000','1995-06-10',0, '13555555555','地址25',1004,10000022,4);	


/*
    基础查询语句 
    SELECT * FROM `t_employee`;
*/



/*
	1)查询所有员工信息, 按照部门分组, 按照职务升序排列 
		a.显示所有字段内容	  	
		b.性别和职务要显示相应的字符串, 部门要显示部门名
*/

/*
	
SELECT d.d_dept 所属部门,e.e_id 员工编号
       ,e.e_name 用户名,e.e_nickName 昵称
       ,e.e_password 密码,e.e_birthday 生日
       ,case e.e_gender when 1 then '男' when 0 then '女' end 性别
       ,e.e_phone 电话 ,e.e_address 地址
       ,m.e_name 直属领导
       ,case e.e_power when 0 then '超级管理员'
		       when 1 then '经理'
		       when 2 then '部门经理'
		       when 3 then '主管'
		       when 4 then '员工'
	end 职务      
FROM `t_employee` e 
LEFT JOIN `t_department` d ON e.`e_dept` =d.`d_id`
left join `t_employee` m on e.e_mgr =m.`e_id`
ORDER BY d.d_dept ,e.e_power;
	
*/

/*
	2)查询所有员工, 按照生日降序排列
		a.显示所有字段内容	  	
		b.性别和职务要显示相应的字符串, 部门要显示部门名
		INSERT INTO t_post VALUES (0,'超级管理员');

*/  
 
/*

SELECT d.d_dept 所属部门,e.e_id 员工编号
       ,e.e_name 用户名,e.e_nickName 昵称
       ,e.e_password 密码,e.e_birthday 生日
       ,case e.e_gender when 1 then '男' when 0 then '女' end 性别
       ,e.e_phone 电话 ,e.e_address 地址
       ,m.e_name 直属领导
       ,case e.e_power when 0 then '超级管理员'
		       when 1 then '经理'
		       when 2 then '部门经理'
		       when 3 then '主管'
		       when 4 then '员工'
	end 职务      
FROM `t_employee` e 
LEFT JOIN `t_department` d ON e.`e_dept` =d.`d_id`
left join `t_employee` m on e.e_mgr =m.`e_id`
ORDER BY e.e_birthday DESC;

*/

/*
	3)查询指定员工的上司和下属信息, 根据权限升序排列
		a.显示所有字段信息 
		b.性别和职务要显示相应的字符串, 部门要显示部门名
*/

/*
SELECT d.d_dept 所属部门,e.e_id 员工编号
       ,e.e_name 用户名,e.e_nickName 昵称
       ,e.e_password 密码,e.e_birthday 生日
       ,case e.e_gender when 1 then '男' when 0 then '女' end 性别
       ,e.e_phone 电话 ,e.e_address 地址
       ,m.e_name 直属领导
       ,case e.e_power when 0 then '超级管理员'
		       when 1 then '经理'
		       when 2 then '部门经理'
		       when 3 then '主管'
		       when 4 then '员工'
		end 职务      
FROM `t_employee` e 
LEFT JOIN `t_department` d ON e.`e_dept` =d.`d_id`
LEFT JOIN t_employee m ON e.e_mgr=m.e_id
WHERE e.e_mgr=10000003 
    or e.e_id =(select e_mgr from t_employee
        where e_id=10000003)
ORDER BY e.e_power;

*/

这篇关于数据库高级查询(员工部门表)示例1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!