数据库的查询练习

选择部门30中的所有职工

a)          SELECT *FROM T_emp  WHERE deptno = ‘30’

列出所有业务员(CLERK)的姓名,编号,和部门编号

b)          SELECT  ename,empno,deptno FROM T_emp  WHERE job = 'CLERK'

找出奖金高于薪金的员工

c)         SELECT  ename FROM T_emp WHERE comm > sal

找出奖金高于薪金的60%的员工

d)         SELECT  ename FROM T_emp WHERE comm > sal*0.6

找出部门10中所有经理(MANAGER)和部门20中所有业务员(CLERK)的详细资料

e)         SELECT  *FROM T_emp WHERE (deptno = 10 AND job = 'MANAGER') OR (deptno = 20 AND job ='CLERK')

找出部门10中所有经理(MANAGER),部门20中所有业务员(CLERK),既不是经理又不是业务员但其薪水大于等于2000的所有员工的详细资料

f)          SELECT *FROM T_emp WHERE (deptno = 10 AND job = 'MANAGER') OR (deptno = 20 AND job ='CLERK') OR (job <> 'MANAGER' AND job <> 'CHERK'  AND sal >= 2000)

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

g)         SELECT  DISTINCT( job)  FROM T_emp WHERE comm>0 

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

h)         SELECT  ename FROM T_emp WHERE comm < 100 OR comm IS NULL

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

i)           SELECT  ename FROM T_emp WHERE  DAY(DATE(DD,3,hierdata))=1

                           

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

j)           SELECT *FROM T_emp  WHERE hierdata < DATEADD(YY,-12,GETDATE())

             

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

k)         SELECT  UPPER(SUBSTRING(ename,1,1)) + SUBSTRING(ename,2,LEN(ename)-1)  FROM T_emp

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

l)           SELECT ename  FROM T_emp WHERE LEN(ename)=5

             

显示不带有”R”的员工姓名

m)       SELECT ename FROM T_emp WHERE ename not like '%R%'

n)         SELECT  ename FROM T_emp  WHERE PATINDEX('%R%',ename)=0

             

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

  • o)         SELECT  SUBSTRING(ename,1,3)  FROM T_emp

   

显示所有员工的姓名,并用’a’替换所有’A’

p)         SELECT  REPLACE(ename,'A','a')  FROM T_em

        

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

q)          SELECT  ename ,hierdata FROM T_emp  WHERE  DATEADD(YY,10,hierdata)<GETDATE()

                           

显示员工的详细资料,按姓名由大到小排序

r)          SELECT *FROM T_emp ORDER BY ename DESC

                           

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

s)         SELECT  ename , hierdata FROM T_emp ORDER BY hierdata

          

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

t)          SELECT ename , job,sal  FROM T_emp  ORDER BY  job DESC, sal ASC

             

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

u)         SELECT ename , hierdata  FROM T_emp ORDER BY MONTH(hierdata),YEAR(hierdata)

                           

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

v)         SELECT ename,ROUND(sal/30,0) FROM T_emp

        

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

w)       SELECT *FROM T_emp WHERE DATEPART(MM,hierdata)=2

                                    

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

x)         SELECT ename, DAY(GETDATE() - hierdata) FROM T_emp 

        

显示姓名中任意位置包含“A”的所有员工姓名

y)         SELECT ename FROM T_emp WHERE enme LIKE ‘%A%’

             

以年月日方式显示所有员工的服务年限

SELECT  ename , “服务年限”= DATEDIFF( YY,GETDATA()-hierdata)) +”年” +DATEDIFF(MM,GETDATE()-hierdata) +”月” + DATEDIFF(DD,GETDATE()-hierdata) +”天”  FROM  T_emp

         求每个雇员的姓名,工资,工资等级

 

SELECT  ename,sal,Grade FROM T_emp  JOIN  T_salgrade ON T_emp.empno = T_salgrade.empno

         求每个员工的姓名,部门名,部门号

SELECT ename,dname,loc FROM T_emp JOIN T_dept ON T_emp.deptno = T_dept.deptno

 

         求公司中谁的薪水最高

SELECT E TOP 1 ename  FROM T_emp ORDER BY sal  DESC

         雇员中有哪些人是经理人

SELECT  ename FROM T_emp WHERE  job = ‘MANAGER’

         求比普通员工的最高薪水还要高的经理人名称

SELECT  ename FROM T_emp WHERE job = ‘MANAGER’ AND sal > (SELECT MAX(sal) FROM Temp  WHERE job <>’MANAGER’)

         求薪水最高的前5名雇员

SELECT TOP 5  *FROM T_emp ORDER BY sal  DESC

         求薪水最高的第6到第10名雇员(重点掌握)

SELECT TOP 5 *FROM (SELECT  TOP 10 *FROM T_emp  ORDER BY sal DESC)  ORDER  BY sal ASC

         求最后入职的5名员工

SELECT  TOP 5 *FROM T_emp ORDER BY hierdata  DESC 

posted on 2012-02-11 09:25  雨 落  阅读(1464)  评论(0)    收藏  举报