select *from emp where deptno=
 (select deptno from emp where ename="smith")
 这是查询出与smith同一部门的员工信息。
 -----------------------------------------------------------------------------------------------------
 select *from emp,(select avg(sal) mysal,detno from emp group by deptno) tem
 where emp.deptno=tem.deptno and emp.sal>tem.mysal
 这是查出高于对应部门平均工资的员工信息。
 ---------------------------------------------------------------------------------------------
 select *from emp where job in (select distinct job from emp where deptno=10)
这是查询与部门id为10的部门里面的工作相同的人员信息
 ---------------------------------------------------------------------------------------------
 select top*4 from emp order by hiredate 
 查出表的前四条信息
 select top6 *from emp where empno   not in (select top4 empno from emp order by hiredate)
 order by hiredate
 查出5-10的信息条,
 这里使用的是先把前4条信息的empno查询出来,然后使用not in ,来再查询前6条,
 这样达到查询出5-10的信息条
 ---------------------------------------------------------------------------------------------
 insert into 表名 (字段,字段) select 字段 ,字段 from 表名
 简单的多条数据压力测试
 ---------------------------------------------------------------------------------------------
 删除数据库表中的重复数据
 如果是查询的话,思路就是利用distict直接把不唯一的数据查询出来;
 但是如果是永久性删除重复数据的话,这就得:
 先用distict把数据库表里面的不唯一数据先查询出来,放进一个临时表里面;
 然后直接把原表里面的数据全部删除;
 最后把临时表里面的不唯一数据全部添加进原表里面,这样就达到删除数据库表中的重复数据。
   select distict * into 临时表名 from 原表名
   delect *from 原表名
   insert into 原表名  select * from 临时表名
   drop table 临时表名
 ---------------------------------------------------------------------------------------------
 select replace('XX' , 'xx') from 表名
 ----------------------------------------------------------------------------------------------
 select ename ,datepart(year,hiredate) y,datepart(month,hiredate) m from emp 
 order by m,y
 按照年和月去对职工排序,先优先对月去排序,再对年去排序,如果月相同,再对年排序
 这个给datepart取别名的操作很重要,可以用与后面的函数调用
 ----------------------------------------------------------------------------------------------
 select *from emp where sal>(select sal from emp where name='xxx')
 查出工资大于名字为‘xxx’的员工信息
 ----------------------------------------------------------------------------------------------
 select count(*),deptid from emp group by deptid having count(*)>1
 查出部门成员大于1的部门,用having count(*)>1作为条件部分
 -----------------------------------------------------------------------------------------------
 select emp.ename,boss.ename from work emp,work boss where emp.bossid=boss.eid
 查询出员工信息及其上级的信息
 在这基础上扩展,查出进入公司的时间比其上司晚的员工信息:
 select emp.ename,emp.hiredate,boss.ename ,boss.hiredate from work emp,work boss where emp.bossid=boss.eid
 and emp.hiredate>boss.hiredate
 ----------------------------------------------------------------------------------------------
 列出部门信息和部门的员工信息,同时也把没有员工的部门信息列出来
 select dep.dname,emp.ename from department dep,emp where dep.depid=emp.eid
 以上只能够查询出部门信息和部门的员工信息。
 但是那些没有员工的部门信息没列出来。
 这时候需要用到的是右外连接,就是以department表为主,右连接上emp表,
 这样部门全部都能列出来,然后员工的话看具体情况显示,没有就显示‘NULL’值。
 select dep.dname,emp.ename from department emp right  jion department dep on
 emp.depid=dep.depid
 如果是用左外连的话,那就是 emp left jion department
 ----------------------------------------------------------------------------------------------
 select name ,salary from employee where salary >
 (select max(salary) from employee where depid=2 )
  查询出工资高于某个部门员工工资的员工信息
 这边在()里面的sql语句使用max函数是必须的,因为>这个符号是不能与多条信息做比较的
 。用max的话返回数据就是一条。
 ----------------------------------------------------------------------------------------------
 select count(*) 总人数,avg(sal)平均工资,avg(datediff(year,hiredate,getdate()))平均服务年限,
 deptno from emp group by depid
 在SQL server里面给表起别名加不加as 都oK










