--c查询3000-6000员工编号 薪水 姓名 奖金
select * from emp
select empno,ename,sal,comm from emp where sal <=6000 and sal >=3000
-- between and xx 到XX之间
-- 查询薪水在 3000-6000 之间的员工的编号 薪水 姓名 奖金
select empno,sal,ename,comm from emp where sal between 3000 and 6000
-- 查询2013年入职的员工信息
select * from emp where hiredate between '2013-01-01' and '2013-12-31'
-- 查询2012年入职的员工信息
select *from emp where hiredate between '2012-01-01' and '2012-12-31'
-- 查询2012年入职的工资在3000到6000之间员工信息
select * from emp where (hiredate between '2012-01-01' and '2012-12-31') and (sal between 3000 and 6000)
-- 查询部门编号为 2 3 4 5 的员工信息
select * from emp where deptno = '2'or deptno = '3' or deptno = '4' or deptno = '5'
-- in (XXX,XXX)
select * from emp where deptno in(2,3,4,5)
--查询2、3、5号员工信息
select * from emp where empno in (2,3,5)
--查询开发和财务岗位的员工信息
select * from emp where job in ('开发','财务')
--like
-- 查询姓名为王芳的员工的信息
select * from emp where ename like '王芳'
select * from emp where ename = '王芳'
-- 查询姓名中包含 芳 字的员工信息 %通配符
select * from emp where ename like '%芳%'
-- 查询姓王的员工的信息
select * from emp where ename like '王%'
-- 查询名字中第二个字 为 明 的员工的信息 占一个字符
select * from emp where ename like '明%'
-- 查询第三个字为明的员工信息
select * from emp where ename like '__明%'
--查询计算
--查询员工的姓名,年薪,岗位
select ename '姓名' , sal*12 '年薪',job '岗位' from emp;
--查询员工的姓名,年收入,岗位
select ename '姓名', sal12+comm12 '年收入',sal ,comm ,job '岗位' from emp;
--查询员工的姓名,工资和提升10%后的工资
select ename '姓名',sal,sal*1.1 '提升后工资' from emp
-- isnull
--查询员工的姓名,年收入,岗位
select ename '姓名', isnull(sal,0)12+isnull(comm,0)12 '年收入',sal ,comm ,job '岗位' from emp;
--查询人员姓名,工资和提升10%后的工资,如果为空,则设置为3000
select ename,sal,isnull(sal,3000)*1.1 '提升' from emp
-- 排序 order by xxx asc 升序 desc 降
-- 查询人员信息,按照工资的高低排序
select * from emp order by sal desc;
-- 查询开发人员信息 按照奖金从低到高排序
select * from emp where job like '开发' order by comm asc;
--查询按照姓名升序排序
select * from emp order by ename asc
-- 查询开发人员信息 按照奖金从低到高排序 奖金相同的 按照工资从低到高排序
select * from emp where job like '开发' order by comm asc , sal asc
--查询员工信息按照薪水的降序排序,相同的按照入职时间排序
select * from emp order by sal desc,hiredate asc
--查询名字中有明或者小的员工,薪水在5000到9000之间的员工信息,按照薪水降序排序,相同的按照编号的降序排序
select * from emp where (ename like '%小%' or ename like '%明%') and (sal between 1000 and 9000) order by sal desc,empno desc
-- select 字段名 '别名', 字段名1运算 '别名' from 表名 where 条件 order by 排序
-- lower、upper、charindex(sub,str)、left、right、substring(s,start,length)、len、replace(s,from,to)
--lower 大写转小写
select lower('ASaa')
-- upper 小写转大写
select upper('assss')
-- charindex(sub,str) sub 在 str中的位置
select charindex('s','asdef');
-- left 从左边截取三个字符
select left('asdfassss',3);
-- right 从右边截取三个字符
select right('asdfghjk',3);
-- substring 从指定位置截取指定长度的字符
select substring('asdffghdf',2,4);
--len 字符串的长度
select len('2222123');
-- replace(s,from,to) 在字符串s 中 将from 换成 to
select replace('asdfghjk','sd','');
--查询每个人名字,名字的第一个字,最后一个字,和第二个字
select ename,left(ename,1),right(ename,1),substring(ename,2,1) from emp
--查询姓李的员工信息
select * from emp where ename like '李%';
select * from emp where left(ename,1) like '李';
select * from emp where substring(ename,1,1) like '李'
--查询最后名字为明的员工信息
select * from emp where right(ename,1) like '明'
--查询每个人的名字以及名字的长度
select ename,len(ename) from emp
--查询员工的姓名将刚替换成*
select ename,replace (ename,'刚','') from emp
select * from emp
--作业:
--题目: 从人员表表中查询出工资大于1600的员工的姓名和工资。
select ename,sal from emp where sal > 1600
--题目: 从人员表表中查询出员工号为8的员工的姓名和部门号。
select ename,deptno,empno from emp where empno = 8
--题目: 从人员表表中查询出在2和3号部门工作的员工姓名和员工号。
select ename,empno,deptno from emp where deptno in (2,3)
--题目: 从人员表表中查询出员工姓名的第三个字母是A的员工姓名。
select ename from emp where substring(ename,3,1) like 'a'
--题目: 查询人员表表中员工号人员编号,姓名ename,工资sal,以及工资提高百分之20%后的结果。
select empno '编号',ename '姓名',sal '工资',sal1.2 '提高' from emp
--题目: 将人员表表中的员工按姓名排序,并显示出姓名的长度。
select len(ename),ename from emp order by ename asc
--题目: 从人员表表中查询出所有员工的姓名ename,人员编号,以及他的管理者mgr的姓名ename和编号,并按照员工编号升序排序。
select * from emp;
select e.empno,e.ename,m.ename '管理者姓名', e.mgr from emp e,emp m where e.mgr = m.empno
--题目: 从人员表表中查询出员工的姓名ename和工资数sal,条件限定为工资数必须大于1200,并对查询结果按雇用日期以降序方式进行排列。
select ename '姓名',sal '工资数',hiredate from emp where sal > 1200 order by hiredate desc
--题目:查询名字中有'小'的员工
select ename from emp where ename like '%小%'
--教师:round(x,精度)、abs、ceiling、floor、power(a,b)、rand()、round()
--教师:abs:绝对值、ceiling:向上取整、floor:向下取整、power(a,b):a的b次方,rand():随机数
select round(123.456,2)
--公司按工资的三分之一缴纳保险,查询编号,姓名,工资,缴纳保险数,保留两位小数
select empno,ename,sal,round(sal/3,2) from emp
select abs(-100)
select ceiling (899.567)
select floor (899.567)
c
--查询8-18的随机数
c
--查询22-35的随机数
--select ceiling(rand()10+12)
select rand()
select rand()10
select ceiling(rand()*13+22)
--教师:日期类
--getdate()、datepart(yy,getdate())、datediff(dd,startday,endday)
select getdate()
select datepart(yy,getdate())
select datepart(mm,getdate())
select datepart(dd,getdate())
select datepart(hh,getdate())
select datepart(mi,getdate())
select datediff(hh,'2000-10-01','2017-3-26')
--查询在12年5月份入职的员工
select * from emp where datepart(yy,hiredate) like '%12' and datepart(mm,hiredate)=5
--查询公司中工龄在5年以上的员工,按照入职顺序升序排序
select * from emp where datediff(yy,hiredate,getdate()) > 5 order by hiredate asc