create database test
use test

--部门表
create table department(
dept_id int not null identity primary key,--主键
dept_no char(4) not null unique, --编号
dept_name varchar(20) not null --名称
)
insert into department values('D001','财务部')
insert into department values('D002','研发部')
insert into department values('D003','业务部')
--职位表
create table job(
job_id int not null identity primary key,--主键
job_no char(4) not null unique, --编号
job_name varchar(20) not null, --名称
job_salary float not null --工资
)
insert into job values('J001','web前端',5000)
insert into job values('J002','java开发',8000)
insert into job values('J003','c#开发',6000)
insert into job values('J004','财务管理',7000)
insert into job values('J005','业务管理',7000)
--员工表
create table employee(
emp_id int not null identity primary key,--主键
emp_no char(4) not null unique, --编号
emp_name varchar(20) not null, --姓名
emp_sex nchar(1) not null, --性别
emp_phone char(11) not null, --手机号
emp_date date not null, --入职日期

job_no char(4) foreign key references job(job_no), --职位编号,外键管理职位表的职位编号
dept_no char(4) foreign key references department(dept_no)--部门编号,外键管理部门表的部门编号
)
insert into employee values('E001','张三','男','11111111111','2017-01-01','J001','D002')
insert into employee values('E002','莉莉','女','45341321324','2017-01-01','J001','D002')
insert into employee values('E003','李四','男','22222222222','2017-01-01','J002','D002')
insert into employee values('E004','张凯','男','11212121212','2017-01-01','J002','D002')
insert into employee values('E005','王丹','女','35453155125','2017-01-01','J002','D002')
insert into employee values('E006','王五','男','33333333333','2017-01-01','J003','D002')
insert into employee values('E007','孙迪','男','47651215451','2017-01-01','J003','D002')
insert into employee values('E008','赵六','男','44444444444','2017-01-01','J004','D001')
insert into employee values('E009','唐舞','女','83212133200','2017-01-01','J005','D003')

--内连接
--1.查询所有职员的:职员编号,姓名,职位名称,工资,部门名称
--select 字段 from 表1 inner join 表2 on 条件匹配
select a.emp_no,a.emp_name,b.job_name,b.job_salary,c.dept_name
from employee a inner join job b on a.job_no=b.job_no inner join department c
on a.dept_no=c.dept_no
where a.dept_no=c.dept_no
--2.查询性别是女的职员的:职员编号,姓名,职位名称,工资,部门名称,性别
select a.emp_no,a.emp_name,b.job_name,b.job_salary,c.dept_name
from employee a inner join job b on a.job_no=b.job_no
inner join department c on a.dept_no=c.dept_no
where a.emp_sex='女'
--3.查询每个部门的:部门名称,人数,平均工资,最大工资,最小工资,工资总和
select c.dept_name,
COUNT(*) as 人数,
avg(b.job_salary) as 平均工资,
max(b.job_salary) as 最大工资,
min(b.job_salary) as 最小工资,
sum(b.job_salary) as 工资总和
from employee a inner join job b on a.job_no=b.job_no
inner join department c on a.dept_no=c.dept_no
group by c.dept_name
--子查询
--1.查询部门是 研发部 的所有职员的:职员编号,姓名,职位名称,工资,部门名称
select a.emp_no,a.emp_name,b.job_name,b.job_salary,c.dept_name
from employee a inner join job b on a.job_no=b.job_no inner join department c
on a.dept_no=c.dept_no
where a.dept_no=(select dept_no from department where dept_name='研发部')

--2.查询职位是 web前段 的所有职员的:职员编号,姓名,职位名称,工资,部门名称
select a.emp_no,a.emp_name,b.job_name,b.job_salary,c.dept_name
from employee a inner join job b on a.job_no=b.job_no inner join department c
on a.dept_no=c.dept_no
where a.job_no=(select job_no from job where job_name='web前端')

--3.查询工资大于等于7000的所有职员的:职员编号,姓名,职位名称,工资,部门名称
select a.emp_no,a.emp_name,b.job_name,b.job_salary,c.dept_name
from employee a inner join job b on a.job_no=b.job_no inner join department c
on a.dept_no=c.dept_no
where a.job_no in(select job_no from job where job_salary>=7000)

--外连接
--1.将三张表做一个全链接关联查询全部信息
select * from employee a full join department b on a.dept_no=b.dept_no full join job c on a.job_no=c.job_no

--集合操作
--1.部门 财务部和业务部 并集查询:职员编号,姓名,职位名称,工资,部门名称
select a.emp_no,a.emp_name,b.job_name,b.job_salary,c.dept_name
from employee a inner join job b on a.job_no=b.job_no inner join department c
on a.dept_no=c.dept_no
where a.dept_no=(select dept_no from department where dept_name='财务部')
union all
select a.emp_no,a.emp_name,b.job_name,b.job_salary,c.dept_name
from employee a inner join job b on a.job_no=b.job_no inner join department c
on a.dept_no=c.dept_no
where a.dept_no=(select dept_no from department where dept_name='业务部')

--2.职位 java开发和c#开发 差集查询:职员编号,姓名,职位名称,工资,部门名称
select a.emp_no,a.emp_name,b.job_name,b.job_salary,c.dept_name
from employee a inner join job b on a.job_no=b.job_no inner join department c
on a.dept_no=c.dept_no
where a.job_no=(select job_no from job where job_name='java开发')
except
select a.emp_no,a.emp_name,b.job_name,b.job_salary,c.dept_name
from employee a inner join job b on a.job_no=b.job_no inner join department c
on a.dept_no=c.dept_no
where a.job_no=(select job_no from job where job_name='c#开发')
--3.职员表 id<=3和id<=7 交集查询:职员编号,姓名,职位名称,工资,部门名称
select a.emp_no,a.emp_name,b.job_name,b.job_salary,c.dept_name
from employee a inner join job b on a.job_no=b.job_no inner join department c
on a.dept_no=c.dept_no
where a.emp_id<=3
intersect
select a.emp_no,a.emp_name,b.job_name,b.job_salary,c.dept_name
from employee a inner join job b on a.job_no=b.job_no inner join department c
on a.dept_no=c.dept_no
where a.emp_id<=7

随记sqlserver学习笔记(一)的更多相关文章

  1. 随记sqlserver学习笔记

    create database libraryDBgouse libraryDBgo--读者信息表create table ReaderInfo( ReaderId int not null prim ...

  2. SQLServer学习笔记系列6

    一.写在前面的话 时间是我们每个人都特别熟悉的,但是到底它是什么,用什么来衡量,可能很多人会愣在那里.时间可以见证一切,也可以消磨一切,那些过往的点点滴滴可思可忆.回想往年清明节过后,在家乡的晚上总能 ...

  3. SQLServer学习笔记系列5

    一.写在前面的话 转眼又是一年清明节,话说“清明时节雨纷纷”,武汉的天气伴随着这个清明节下了一场暴雨,整个城市如海一样,朋友圈渗透着清明节武汉看海的节奏.今年又没有回老家祭祖,但是心里依然是怀念着那些 ...

  4. SQLServer学习笔记系列3

    一.写在前面的话 今天又是双休啦!生活依然再继续,当你停下来的时候,或许会突然显得不自在.有时候,看到一种东西,你会发现原来在这个社会上,优秀的人很多,默默 吃苦努力奋斗的人也多!星期五早上按时上班, ...

  5. SQLServer学习笔记系列2

    一.写在前面的话 继上一次SQLServer学习笔记系列1http://www.cnblogs.com/liupeng61624/p/4354983.html以后,继续学习Sqlserver,一步一步 ...

  6. SQLServer学习笔记<>相关子查询及复杂查询

    二.查询缺少值的查询 在这里我们加入要查询2008年每一天的订单有多少?首先我们可以查询下订单表的订单日期在2008年的所有订单信息. 1 select distinct orderdate,coun ...

  7. SQLServer 学习笔记之超详细基础SQL语句 Part 12(The End)

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 11------------------- 现在,我们希望从 " ...

  8. SQLServer 学习笔记之超详细基础SQL语句 Part 11

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 10------------------- DECLARE @myavg ...

  9. SQLServer 学习笔记之超详细基础SQL语句 Part 10

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 9------------------- 删除约束的语法 ALTER T ...

随机推荐

  1. Nginx介绍和使用

    Nginx介绍和使用 一.介绍 Nginx是一个十分轻量级并且高性能HTTP和反向代理服务器,同样也是一个IMAP/POP3/SMTP代理服务器. 二.特性 HTTP服务器 反向代理服务器 简单的负载 ...

  2. 【多线程与并发】Java并发工具类

    主要有两类 ①并发流程控制相关:CountDownLatch.CyclicBarrier.Semaphore ②线程间交换数据相关:Exchanger: CountDownLatch 作用:允许一个或 ...

  3. Python操作excel工具

    python操作excel的工具类有很多,下面举几个常见的工具类: 一. 1.xlrd 只能读取excel操作,支持xls和xlsx两种格式的 2.xlwt 只能写入excel操作,只支持 xls格式 ...

  4. 什么是epistatic effects | 上位效应

    epistatic与interaction之间的区别与联系? genetic上的interaction是如何定义的? Epistasis is the phenomenon where the eff ...

  5. C++ atof 函数

    腾讯云:https://cloud.tencent.com/developer/article/1391966 atof函数: 功能:将字串转换成浮点型数 相关函数 atoi,atol,strtod, ...

  6. 批量管理工具:pssh/ansible

    ssh 免密码 批量管理1.创建用户useradd user1echo “123456”| passwd --stdin user12.创建秘钥ssh-keygen -t dsa然后一直回车 非交互式 ...

  7. Linux Nginx naxsi

    nginx naxsi 模块 - 简书https://www.jianshu.com/p/8492da04b3ba naxsi compile · nbs-system/naxsi Wikihttps ...

  8. iptables保存规则(ubuntu和centos)

    1.Ubuntu 首先,保存现有的规则: iptables-save > /etc/iptables.rules 然后新建一个bash脚本,并保存到/etc/network/if-pre-up. ...

  9. APP:目录

    ylbtech-APP:目录 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部     7.返回顶部   8.返回顶部   9.返回顶部   ...

  10. Vue路由编程式导航以及hash模式

    import Vue from 'vue'; import App from './App.vue'; //引入公共的scss 注意:创建项目的时候必须用scss import './assets/c ...