sql语句的查询语句基本大全
2016-08-24 07:53
477 查看
--创建dept表 create table dept (deptno int primary key, dname nvarchar(30), loc nvarchar(30) ) insert into dept (deptno, dname, loc) values (10, 'ACCOUNTING', 'NEW YORK'); insert into dept (deptno, dname, loc) values (20, 'RESEARCH', 'DALLAS'); insert into dept (deptno, dname, loc) values (30, 'SALES', 'CHICAGO'); insert into dept (deptno, dname, loc) values (40, 'OPERATIONS', 'BOSTON'); --创建emp表 create table emp (empno int primary key, ename nvarchar (30), job nvarchar (30), mgr int, hiredate datetime, sal numeric (10,2), comm numeric (10,2), deptno int foreign key references dept(deptno) --因为depyno我们根据需要要做成外键 ) --针对外键,注意: --1、外键只能只想主键 --2、外键和主键的数据类型要一致 insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values (7369,'SMITH','CLERK',7902,'1980-12-17',800.00,NULL,20); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values (7499,'ALLEN','SALESMAN',7698,'1981-2-20',1600,300,30); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values ( 7521, 'WARD', 'SALESMAN', 7698, '1981-2-22', 1250, 500, 30); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values ( 7566, 'JONES', 'MANAGER', 7839, '1981-4-2', 2975, null, 20); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values ( 7654, 'MARTIN', 'SALESMAN', 7698, '1981-9-28', 1250, 1400, 30); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values ( 7698, 'BLAKE', 'MANAGER', 7839, '1981-5-1', 2850, NULL, 30); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values ( 7782, 'CLARK', 'MANAGER', 7839, '1981-6-9', 2450, NULL, 10); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values ( 7788, 'SCOTT', 'ANALYST', 7566, '1987-4-19', 3000, NULL, 20); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values ( 7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values ( 7844, 'TURNER', 'SALESMAN', 7698, '1981-9-8', 1500, 0, 30); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values (7876, 'ADAMS', 'CLERK', 7788, '1987-5-23', 1100, NULL, 20); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values (7900, 'JAMES', 'CLERK', 7698, '1981-12-3', 950, NULL, 30); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values ( 7902, 'FORD', 'ANALYST', 7566, '1981-12-3', 3000, NULL, 20); insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values (7934, 'MILLER', 'CLERK', 7782, '1982-1-23', 1300, NULL, 10); ------------------- select * from dept --查询指定列 --select 字段1 字段2 from 表名 where 条件 select sal,job,deptno from emp where ename='smith' --取消重复行(distinct只能消除完全一样的行,保留一行) --select distinct 字段 from 表名 where 条件 select distinct deptno from emp --显示每个雇员的年工资 --‘年工资’就是别名+奖金 select ename ,sal*13+ISNULL(comm,0) '年工资' from emp --如何查找1982.1.1后入职的员工 select *from emp where hiredate>'1982-1-1' --显示工资在2000在2500之间的 select *from emp where sal>2000 and sal<2500 select *from emp where sal between 2000 and 2500 --如何显示首字母符为S的员工姓名和工资 select ename ,sal from emp where ename like 'S%' --如何显示第三个字符为o的所有员工的姓名和工资 select ename,sal from emp where ename like '__o%' --如何显示empno为123,345,800...的雇员情况 select * from emp where empno=123 or empno=345 or empno=800 --一般我们使用in这个关键字,效率更高 select * from emp where empno in(123,345,800) --如何显示没有上级的雇员的情况 select *from emp where mgr is null --如何按照工资从低到高的顺序显示雇员的信息 --asc 升序 --desc 降序 select * from emp order by sal asc --按照部门升序而雇员的工资降序排列 --order by 可以根据不同的字段排序 select *from emp order by deptno , sal desc --使用别名排序,统计每个人的年薪并按照从低到高的顺序排列 select ename,(sal*13+isnull(comm,0)*13) '年薪' from emp order by '年薪' --如何显示所有员工中最高工资和最低工资 --如何显示最低工资和该雇员的名字 --SQL语句是从右往左读的,优化:筛选最多的放最右边 select min(sal) from emp select ename,sal from emp where sal=(select min(sal) from emp) --显示所有员工的平均工资和工资总和 --把高于平均工资的雇员的名字和他的工资显示 select avg(sal) '平均工资',sum(sal) '总工资' from emp select* from emp where sal>(select avg(sal) from emp) --统计共有多少员工 select count(*) from emp --显示每个部门的平均工资和最高工资 并显示部门名称(多表查询) select avg(sal) '平均工资',max(sal) '最高工资',deptno from emp group by deptno --显示每个部门的各种岗位的平均工资和最低工资 select avg(sal) '平均工资',min(sal) '最低工资',deptno,job from emp group by deptno,job order by deptno --显示平均工资低于2000的部门号和它的平均工资 --having 往往和 gourp by 结合使用,可以对分组查询结果进行筛选 select avg(sal) '平均工资',deptno from emp group by deptno having avg(sal)<2000 select * from emp --显示雇员的名字,雇员的工资和所在部门的名称 --如果两张表都有相同名字的字段,则需要带表名 select ename,sal,loc,emp.deptno from emp,dept where dept.dname='sales' and emp.deptno=dept.deptno --如何显示部门号为10的部门名,员工名和工资 select dept.dname,emp.ename,emp.sal from emp,dept where dept.deptno=10 and emp.deptno=10 select emp.ename,emp.sal,dept.dname from emp,dept where dept.deptno = emp.deptno order by dept.dname --显示公司员工和他上级的名字 --分析:把emp表看成两张表,分别为 worker,boss select worker.ename,boss.ename '上级' from emp worker,emp boss where worker.mgr=boss.empno --单行子查询 select * from emp where deptno = (select deptno from emp where ename = 'smith') --多行子查询 select * from emp where job in (select distinct job from emp where deptno = 10) --显示部门的平均工资的员工姓名,工资,和所在部门的平均工资 --1.首先知道各个部门的平均工资 select avg(sal) myavg , deptno from emp group by deptno --2.把上面的查询结果当做一个临时表 select emp.ename,emp.sal ,emp.deptno from emp , (select avg(sal) myavg, deptno from emp group by deptno ) temp where emp.deptno = temp.deptno and emp.sal>temp.myavg --请显示第五个到第十个入职的雇员(按照时间先后) --1.显示第一个到第四个入职的雇员 select top 4 * from emp order by hiredate select top 6 * from emp where empno not in (select top 4 empno from emp order by hiredate) order by hiredate --显示第十一个到第十三个入职的人的信息 select top 3 * from emp where empno not in (select top 10 empno from emp order by hiredate) order by hiredate --如何删除表中重复记录 select distinct * into #temp from cat --把cat表非重复的记录放入临时表temp delete from cat --把cat表清空 insert into cat select * from #temp --把temp(没有重复记录)表的数据放入cat drop table #temp --删除临时表 --左外连接和右外链接 --显示公司每个员工和它的上级的名字 --内连接 select w.ename,b.ename from emp w,emp b where w.mgr = b.empno --显示公司每个员工和它的上级的名字,要求没有上级人,名字也要显示 --左外链接:左边的表的记录全部显示,如果没有匹配的记录,就用null来填 select w.ename,b.ename from emp w left join emp b on w.mgr = b.empno --右外链接:右边的表的记录全部显示,如果没有匹配的记录,就用null来填 --约束 : not null,unique,primary key, foreign key,check
相关文章推荐
- sql 语句大全 (基本查询,子查询,各种链接,和统计)
- 数据库基本----SQL语句大全
- SQL查询语句大全
- 数据库基本----SQL语句大全
- SQL 分页查询语句大全即(查找第N到M条记录的方法)
- sql查询语句大全
- 数据库基本SQL语句大全
- SQL查询语句大全 T-SQL
- SQL查询语句精华大全
- SQL查询语句大全
- SQL查询语句大全集锦
- SQL 查询语句语法结构大全+【SQL 复制表】
- 数据库基本----SQL语句大全
- Linq To SQL基本语句(查询)
- SQL查询语句大全
- 数据库基本----SQL语句大全[zt]
- 数据库基本----SQL语句大全
- 数据库基本----SQL语句大全
- 数据库基本----SQL语句大全
- linq to sql 语句基本查询(3):Select和Count/Sum/Min/Max/Avg