sql server基本

来源:互联网 发布:mac ssh连接服务器 编辑:程序博客网 时间:2024/05/17 22:23

/////////////////////外键////////////////////////////
两个表 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.
  

原创粉丝点击