sql server基本

/////////////////////外鍵////////////////////////////
兩個表 dept emp表示,emp 裏面有個字段deptno,dept裏面也有
一個deptno字段,但這個是這個表的主鍵。
外鍵必須指向主鍵,外鍵必須和主鍵類型一致。
外鍵語法: deptno int foreign key references dept(deptno)//用括號括起來

////////////////////如何消除重複行/////////////////////////
select distinct 字段1,字段2 from 表名 where ?
distinct表示將會去除重複的,只給出一個
select distinct deptno from emp結果給出職員部門編號,沒有重複值。

知道每個僱員的年工資:
select ename, sal*13 '年工資' from emp
  就顯示出所有記錄的姓名和年工資,其中單引號引起來的叫列的別名,
sql server可以識別這個的。
select ename, sal*13+cmm '年工資' from emp

select *from emp where hiredate>'1982-1-1'返回入職日期在這個日期後面的

select *from emp where sal between 2000 and 2005(包括2000和2005)

/////////////////like 模糊查詢////////////////
select ename,sal from emp where ename like 's%'
  返回首字母爲s的員工名字,薪水
select ename, sal from emp where ename like '__o%'
  返回第三個字符爲o的員工名字和薪水。


查詢where裏面使用in
  select *from emp where empno in (123, 345, 800)就返回編號爲這三個的員工信息
  select *from emp where (sal>5000 or job='manager') and empname like 'j%';

////////////////////////按順序排列 order by///////////////////////////////
select *from emp order by sal    ////默認是升序排列其實默認後面還有一個asc
select *from emp order by sal desc //這就是降序排列
select *from emp order by hiredate //按入職時間先後順序排列
select *from emp order by deptno, sal desc//按照部門編號升序排列,在排好之後再
按照薪水降序排列。

統計每個人的年薪,按照升序排序:用到列別名
  select ename, (sal+isnull(comm,0))*13 年薪 from emp order by 年薪

select min(sal) from emp;//返回最低的工資
sql server執行的順序是從右到左。
select ename sal from emp where sal=(select min(sal) from emp);//先查詢出
   最小工資的記錄,再從裏面查詢工資和姓名。
select avg(sal) 平均工資,sum(sal) 總工資 from emp;
select count(*) from emp;//查詢記錄數目。
select *from emp where sal>(select avg(sal) from emp);

//////////////group by////和having子句
  group by 用於對查詢的結果分組統計
  having 子句用於限制分組顯示結果。
  select avg(sal), deptno from emp group by deptno;
    ///就返回每組的平均工資,和每組的編號
  select avg(sal), deptno,max(sal) from emp group by deptno;//也是可以的
  //每個部門的每種崗位的平均工資和最低工資
select avg(sal),min(sal) deptno, job from emp group by deptno, job order by deptno
  //按照部門裏面每種職位查詢平均工資,最小工資,職位名稱,按照部門升序排序
//顯示平均工資低於2000的部門號和它的平均工資

///////////////having 往往和group by結合使用,可以對分組查詢結果進行篩選
 select deptno, avg(sal) from emp group by deptno having avg(sal)<2000
///就是先按照部門查詢平均工資和部門編號,再篩選平均工資小於2000的,這個不能用列別名
////////////////////////////////////////////////////group-分組函數////////////
 分組函數只能出現在選擇列表,having, order by子句中,
 如果在select語句中同時包含有group by, having, order by那麼他們餓順序是group by,
 having, order by.
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章