Sql server 第二課

--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 '工資',sal
1.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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容