MySQL中显示正好为5个字符的员工的姓名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL中显示正好为5个字符的员工的姓名相关的知识,希望对你有一定的参考价值。

参考技术A 员工姓名 like '_____' 5条下划线
len(员工姓名) = 5
推荐第二种本回答被提问者采纳
参考技术B 应该是length吧。你这样没写全会对新手不熟悉的小白产生误会。

MySQL 子查询

阅读目录

MySQL子查询

子查询就是嵌套的select语句,可以理解为子查询是一张表。

在where语句中使用子查询,也就是在where语句中加入select语句。

emp 员工信息表

表名称:emp

描述:员工信息表

英文字段名称

中文描述

类型

EMPNO

员工编号

INT (4)

ENAME

员工姓名

VARCHAR(10)

JOB

工作岗位

VARCHAR(9)

MGR

上级领导

INT (4)

HIREDATE

入职日期

DATE

SAL

薪水

DOUBLE(7,2)

COMM

津贴

DOUBLE (7,2)

DEPTNO

部门编号

INT(2)

CREATE TABLE `emp` (
  `EMPNO` int(4) NOT NULL,
  `ENAME` varchar(10) DEFAULT NULL,
  `JOB` varchar(9) DEFAULT NULL,
  `MGR` int(4) DEFAULT NULL,
  `HIREDATE` date DEFAULT NULL,
  `SAL` double(7,2) DEFAULT NULL,
  `COMM` double(7,2) DEFAULT NULL,
  `DEPTNO` int(2) DEFAULT NULL,
  PRIMARY KEY (`EMPNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7369', 'SMITH', 'CLERK', '7902', '1980-12-17', '800.00', NULL, '20');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7499', 'ALLEN', 'SALESMAN', '7698', '1981-02-20', '1600.00', '300.00', '30');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7521', 'WARD', 'SALESMAN', '7698', '1981-02-22', '1250.00', '500.00', '30');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7566', 'JONES', 'MANAGER', '7839', '1981-04-02', '2975.00', NULL, '20');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7654', 'MARTIN', 'SALESMAN', '7698', '1981-09-28', '1250.00', '1400.00', '30');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7698', 'BLAKE', 'MANAGER', '7839', '1981-05-01', '2850.00', NULL, '30');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7782', 'CLARK', 'MANAGER', '7839', '1981-06-09', '2450.00', NULL, '10');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7788', 'SCOTT', 'ANALYST', '7566', '1987-04-19', '3000.00', NULL, '20');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7839', 'KING', 'PRESIDENT', NULL, '1981-11-17', '5000.00', NULL, '10');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7844', 'TURNER', 'SALESMAN', '7698', '1981-09-08', '1500.00', '0.00', '30');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7876', 'ADAMS', 'CLERK', '7788', '1987-05-23', '1100.00', NULL, '20');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7900', 'JAMES', 'CLERK', '7698', '1981-12-03', '950.00', NULL, '30');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7902', 'FORD', 'ANALYST', '7566', '1981-12-03', '3000.00', NULL, '20');
INSERT INTO `bjpowernode`.`emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES ('7934', 'MILLER', 'CLERK', '7782', '1982-01-23', '1300.00', NULL, '10');

salgrade 薪水等级信息表

表名称:salgrade

描述:薪水等级信息表

英文字段名称

中文描述

类型

GRADE

等级

INT

LOSAL

最低薪水

INT

HISAL

最高薪水

INT

CREATE TABLE `salgrade` (
  `GRADE` int(11) DEFAULT NULL,
  `LOSAL` int(11) DEFAULT NULL,
  `HISAL` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `bjpowernode`.`salgrade` (`GRADE`, `LOSAL`, `HISAL`) VALUES ('1', '700', '1200');
INSERT INTO `bjpowernode`.`salgrade` (`GRADE`, `LOSAL`, `HISAL`) VALUES ('2', '1201', '1400');
INSERT INTO `bjpowernode`.`salgrade` (`GRADE`, `LOSAL`, `HISAL`) VALUES ('3', '1401', '2000');
INSERT INTO `bjpowernode`.`salgrade` (`GRADE`, `LOSAL`, `HISAL`) VALUES ('4', '2001', '3000');
INSERT INTO `bjpowernode`.`salgrade` (`GRADE`, `LOSAL`, `HISAL`) VALUES ('5', '3001', '9999');

dept 部门信息表

表名称:dept

描述:部门信息表

英文字段名称

中文描述

类型

DEPTNO

部门编号

INT(2)

DNAME

部门名称

VARCHAR(14)

LOC

位置

VARCHAR(13)

CREATE TABLE `dept` (
  `DEPTNO` int(2) NOT NULL,
  `DNAME` varchar(14) DEFAULT NULL,
  `LOC` varchar(13) DEFAULT NULL,
  PRIMARY KEY (`DEPTNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `bjpowernode`.`dept` (`DEPTNO`, `DNAME`, `LOC`) VALUES ('10', 'ACCOUNTING', 'NEW YORK');
INSERT INTO `bjpowernode`.`dept` (`DEPTNO`, `DNAME`, `LOC`) VALUES ('20', 'RESEARCH', 'DALLAS');
INSERT INTO `bjpowernode`.`dept` (`DEPTNO`, `DNAME`, `LOC`) VALUES ('30', 'SALES', 'CHICAGO');
INSERT INTO `bjpowernode`.`dept` (`DEPTNO`, `DNAME`, `LOC`) VALUES ('40', 'OPERATIONS', 'BOSTON');

查询员工信息,查询哪些人是管理者,要求显示出其员工编号和员工姓名

实现思路:

1、首先取得管理者的编号,去除重复的

distinct 去除重复行

select distinct mgr from emp where mgr is not null;

2、查询员工编号包含管理者编号的

select empno, ename from emp 
where empno in(select mgr from emp where mgr is not null);

查询哪些人的薪水高于员工的平均薪水,需要显示员工编号,员工姓名,薪水实现思路

1、取得平均薪水

select avg(sal) from emp;

2、取得大于平均薪水的员工

select empno, ename, sal from emp where sal > (select avg(sal) from emp);

在 from 语句中使用子查询,可以将该子查询看做一张表

查询员工信息,查询哪些人是管理者,要求显示出其员工编号和员工姓名

1、首先取得管理者的编号,去除重复的

select distinct mgr from emp where mgr is not null;

2、将以上查询作为一张表,放到 from 语句的后面

第一种语法

SELECT e.empno, e.ename
FROM emp e, (
		SELECT DISTINCT mgr
		FROM emp
		WHERE mgr IS NOT NULL
	) m
WHERE e.empno = m.mgr;

第二种语法

SELECT e.empno, e.ename
FROM emp e
	JOIN (
		SELECT DISTINCT mgr
		FROM emp
		WHERE mgr IS NOT NULL
	) m
	ON e.empno = m.mgr;

查询各个部门的平均薪水所属等级,需要显示部门编号,平均薪水,等级编号

1、首先取得各个部门的平均薪水

select deptno, avg(sal) avg_sal from emp group by deptno;

2、将部门的平均薪水作为一张表与薪水等级表建立连接,取得等级

select deptno,avg(sal) avg_sal from emp group by deptno;
select * from salgrade;
SELECT a.deptno, a.avg_sal, g.grade
FROM (
	SELECT deptno, avg(sal) AS avg_sal
	FROM emp
	GROUP BY deptno
) a
	JOIN salgrade g ON a.avg_sal BETWEEN g.losal AND hisal;

以上是关于MySQL中显示正好为5个字符的员工的姓名的主要内容,如果未能解决你的问题,请参考以下文章

用一条SQL语句查询出所有员工姓名的字母前三位

MySQL单表查询(分组-筛选-过滤-去重-排序)

Mysql 练习题10道(11-20题)

MySQL之多表查询练习

MySQL之多表查询练习

对数据进行限定和排序