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