首页 > 代码库 > SQL 简单练习

SQL 简单练习

USE study;SELECT * FROM EMP 

--查询雇员姓名的最后三个字母

SELECT ename,right(ename,3) FROM EMP ;

--查询10部门雇员进入公司的星期数

SELECT ename,datename(month,hiredate) from EMP where deptno =10

--1 查询部门30中的所有员工

SELECT * FROM EMP WHERE deptno=30

--2 列出所有办事员(CLERK)的姓名,编号和部门编号

SELECT ename,empno,deptno FROM EMP where job=clerk

--3 找出佣金高于薪金的员工

SELECT ename from EMP where sal >comm

--求出每个雇员的年薪

SELECT ename,sal*12 FROM EMP ;

--4 找出佣金高于薪金的60%的员工

SELECT ename ,sal,comm FROM EMP WHERE sal>comm*0.6

--5 找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料

SELECT *FROM EMP WHERE (job =MANAGERAND deptno =10) OR (job =MANAGERAND deptno =20)

--6 找出部门10中所有经理(MANAGER),部门20中的所有办事员(CLEAK),
-- 既不是经理又不是办事员但薪金大于或等于2000的所有员工的详细资料

SELECT *FROM EMP WHERE (job =MANAGERAND deptno =10) OR (job =CLEAKAND deptno =20)OR(job<>MANAGERAND job<>CLEAKAND sal >=2000) 

--7 找出收取佣金的员工的不同工作

SELECT DISTINCT job FROM EMP WHERE comm is not null

--8 找出不收取佣金或收取佣金低于100的员工

SELECT *FROM EMP where comm IS NULL OR comm<100

--9 找出各月倒数第3天受雇的所有员工

SELECT * FROM EMP WHERE month (dateadd (day,3,hiredate))=month(dateadd(month,1,hiredate))

--10 找出早于12年前受雇的员工

SELECT * FROM EMP WHERE datediff (year,hiredate ,getdate())>12

--11 以首字母大写的方式显示所有员工的姓名

SELECT upper(substring(ename,1,1))+lower(substring (ename,2,len(ename)))from emp

--12 显示正好为5个字符的员工的姓名

SELECT ename FROM EMP WHERE len(ename)=5 ;

--13 显示不带有"R"的员工的姓名

SELECT ename FROM EMP WHERE ename NOT LIKE R

--14 显示所有员工的姓名的前三个字符

SELECT ename,right(ename,3) FROM EMP 

--15 显示所有员工的姓名,用"a"代替所有的"A"

SELECT replace(ename,A,a)from EMP 

--16 显示满10年服务年限的员工的姓名和受雇日期

SELECT ename,hiredate FROM EMP WHERE datediff(year,hiredate,getdate())>10 

--17 显示员工详细信息,按姓名排序

SELECT * FROM EMP ORDER BY ename

--18 显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在前面

SELECT ename,hiredate FROM EMP ORDER BY datediff(year ,hiredate ,getdate())DESC    

--19 显示所有员工的姓名,工作和薪金,按工作的降序排序,若工作相同则薪金排序

SELECT ename,job,sal from EMP ORDER BY job DESC,sal

--20 显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将
--最早年份的员工排在前面

SELECT ename,year(hiredate)年份,month(hiredate)月份FROM EMP ORDER BY 月份,年份 

--21 显示在一个月为30天的情况,所有员工的日薪金,忽略余数

SELECT ename,floor(sal/30) FROM EMP 

--22 找出在(任何年份的)2月受雇的所有员工

SELECT ename FROM EMP WHERE month(hiredate)=2

--23 对于每个员工,显示其加入公司的天数

SELECT ename,datediff (day,hiredate ,getdate()) FROM EMP

--24 显示姓名字段的任何位置包含"A"的所有员工的姓名

SELECT ename FROM EMP WHERE ename LIKE %A%;

--25 以年月日的方式显示所有员工的服务年限(大概)

SELECT ename, floor(datediff(day,hiredate ,getdate())/365),floor(floor(datediff(day,hiredate ,getdate()))-floor(datediff(day,hiredate ,getdate())/365)*365)/12 from EMP