本文主要是介绍数据库高级查询(员工部门表)示例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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!