sqlserver查询(子查询,全连接,等值连接,自然连接,左右连,交集,并集,差集)
--部门表 create table dept( deptno int primary key,--部门编号 dname nvarchar(30),--部门名 loc nvarchar(30)--地址 ); --雇员表 create table emp( empno int primary key,--雇员号 ename nvarchar(30),--员工姓名 job nvarchar(30),--雇员工作 mrg int,--雇员上级 hiredate datetime,--入职时间 sal numeric(10,2),--薪水 comm numeric(10,2),--奖金 deptno int foreign key references dept(deptno)--设置外键 ); insert into dept values (10,'ACCOUNTING','NEW YORK'); insert into dept values (20,'RESEARCH','DALLAS'); insert into dept values (30 ,'SALES','CHICAGO'); insert into dept values (40, 'OPERATIONS','BOSTON'); insert into emp values (7369,'SMITH','CLERK',7902,'1980-12-17',800.00,null,20); insert into emp values(7499,'ALLEN','SALESMAN',7698,'1981-2-20',1600.00,300.00,30); insert into emp values(7521,'WARD','SALESMAN',7698,'1981-2-22',1250.00,500.00,30); insert into emp values(7566,'JONES','MANAGER',7839,'1981-4-2',2975.00,null,20); insert into emp values(7654,'MARTIN','SALESMAN',7698,'1981-9-28',1250.00,1400.00,30); insert into emp values(7698,'BLAKE','MANAGER',7839,'1981-5-1',2850.00,null,30); insert into emp values(7782,'CLARK','MANAGER',7839,'1981-6-9',2450.00,null,10); insert into emp values(7788,'SCOTT','ANALYST',7566,'1987-4-19',3000.00,null,20); insert into emp values(7839,'KING','PRESIDENT',null,'1981-11-17',5000.00,null,10); insert into emp values(7844,'TURNER','SALESMAN',7698,'1981-9-8',1500.00,0.00,30); insert into emp values(7876,'ADAMS','CLERK',7788,'1987-5-23',1100.00,null,20); insert into emp values(7900,'JAMES','CLERK',7698,'1981-12-3',950.00,null,30); insert into emp values(7902,'FORD','ANALYST',7566,'1981-12-3',3000.00,null,20); insert into emp values(7934,'MILLER','CLERK',7782,'1982-1-23',1300.00,null,10);
子查询
■什么是子查询
子查询是指嵌入在其它sql语句中的select语句,也叫嵌套查询
■单行子查询
单行子查询是指只返回一行数据的子查询语句
请思考:如何显示与SMITH同一部门的所有员工?
select * from emp where deptno=(select deptno from emp where ename=’SMITH’);
多行子查询
多行子查询指返回多行数据的子查询
请思考:如何查询和部门的工作相同的雇员的名字、岗位、工资、部门号
1,先查询10 号部门有哪些岗位
select distinct job from emp where deptno=10;
2,显示和他的岗位有一个相同的员工
select ename,job,sal,deptno from emp where job in(select distinct job from emp where deptno=10)
全连接
select * from emp,dept;
自然查询
自然连接:将等值连接中的重复列去掉 select student.sno,sname,ssex,sage,sdept,cno,grade from student,sc where student.sno=sc.sno;
左连接和右连接
左连接:left on, 依次遍历左边这个表,查询在右表中是否有对应的记录,如果有对应记录,则匹配,否则显示null select student.sno,sname,ssex,sage,sdept,cno,grade from student left join sc on(student.sno=sc.sno); 右连接:rigth on,以右边的表为参照 select student.sno,sname,ssex,sage,sdept,cno,grade from student right join sc on(student.sno=sc.sno);
union并集
该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中重复行。
select ename,sal,job from emp where sal>2500 union select ename,sal,job from emp where job='MANAGER';
select * from student where sage>20 union select * from student where sage<22

对两个结果集进行“union”,"intersecrt","except"运算这两个结果集的列数必须相同.
intersect交集
使用该操作符用于取得两个结果集的交集。
select ename,sal,job from emp where sal>2500 intersect select ename,sal,job from emp where job='manager';
select * from student where sage>20 intersect select * from student where sage<22

except差集
使用该操作符用于取得两个结果集的差集,它只会显示存在第一个集合中,而不存在第二个集合中的数据。
select ename,sal,job from emp where sal>2500 minus select ename,sal,job from emp where job='manager';
select * from student where sage>20 except select * from student where sage>22

sqlserver查询(子查询,全连接,等值连接,自然连接,左右连,交集,并集,差集)的更多相关文章
- Python-select 关键字 多表查询 子查询
sql 最核心的查询语句!!!! 增删改 单表查询 select语句的完整写法 关键字的书写顺序 执行顺序 多表查询 笛卡尔积 内连接 左外连接 右外连接 全外连接 通过合并左外连接和右外连接 子查询 ...
- 【知识库】-数据库_MySQL之基本数据查询:子查询、分组查询、模糊查询
简书作者:seay 文章出处: 关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询 回顾:[知识库]-数据库_MySQL常用SQL语句语法大全示例 Learn [已经过测试校验] 一.简单查询 ...
- oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by
select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...
- 【数据库】SQL经典面试题 - 数据库查询 - 子查询应用二
上节课我们通过子查询,完成了查询的最高分学生的需求,今天我们来学习子查询的分类,以及通过子查询来完成工作中经常遇到一些个性化需求. 子查询概念: 一个SELECT语句嵌套在另一个SELECT语句中,子 ...
- ylb: SQL表的高级查询-子查询
ylbtech-SQL Server: SQL Server- SQL表的高级查询-子查询 SQL Server 表的高级查询-子查询. 1,ylb:表的高级查询-子查询返回顶部 --======== ...
- MYSQL 查询方法 统计查询 链接查询 子查询
mysql表格查询方法: 查询: 1.简单查询 select * from Info --查所有数据select Code,Name from Info --查指定列的数据select Code as ...
- MySQL的查询,子查询,联结查询,联合查询
MySQL的查询,子查询,联结查询,联合查询 一.mysql查询的五种子句where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) 二 ...
- Oracle的查询-子查询
--子查询 --子查询返回一个值 --查询出工资和scott一样的员工信息 select * from emp where sal in (select sal from emp where enam ...
- coding++:mybatis 嵌套查询子查询column传多个参数描述
mybatis 嵌套查询子查询column传多个参数如下: 2.代码示例 备注:注意,相同颜色的单词都是有关联的 <resultMap id="blogResult" typ ...
- sql ,内连接,外连接,自然连接等各种连接
1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和c ...
随机推荐
- Stringbuilder常用方法
一.创建Stringbuilder对象StringBuilder strB = new StringBuilder(); 1.append(String str)/append(Char c):字符串 ...
- node留言板
这是一个nodejs + mongodb 的小项目,对数据库的增删改查 1. 引入项目依赖 "art-template": "^4.13.2", "b ...
- Java 生成在线二维码 以Base64返回前端、或者写入到本地磁盘
思路 现阶段遇到这样一个问题,在原有的产品上加入线下优惠券模式,用户领取优惠券以后,获取到一个唯一的ID作为领取凭证,但是在线下用扫码枪进行扫码的时候,总不能让人手动输入吧 于是乎就想出了一个办法,后 ...
- DB2中的MQT优化机制详解和实践
MQT :物化查询表.是以一次查询的结果为基础 定义创建的表(实表),以量取胜(特别是在百万,千万级别的量,效果更显著),可以更快的查询到我们需要的结果.MQT有两种类型,一种是系统维护的MQT , ...
- Python3爬虫(1)_使用Urllib进行网络爬取
网络爬虫 又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫 ...
- 学习笔记28_MVC异步请求
*微软的MVC异步请求 使用一下方式,就能生成完整的<from>标签,以及对应的表单元素,提交时能达到异步提交的效果 <%using(Ajax.BeginForm( "Co ...
- OpenCV图像处理以及人脸识别
OpenCV基础 OpenCV是一个开源的计算机视觉库.提供了很多图像处理常用的工具 批注:本文所有图片数据都在我的GitHub仓库 读取图片并显示 import numpy as np import ...
- CSPS模拟 60
T1 m+logn的约瑟夫 T2 考数学的Bit T3 很裸但就是不会打的LCIS 哭哭. 如果下次还考这种题我一定要想出来.
- .net里面<app.config>中value值不能填写特殊符号问题
配置app.config或web.config的时候,经常要填写value值, 但是value值不能包含特殊字符,需要转义, 分享一下转义字符 App.config 实际上是 xml 文件,在标准 x ...
- python学习之【第二篇】:Python中的数字及其所具有的方法
1.前言 Python 数字(number)数据类型用于存储数值.数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. 2.创建数字对象 以下实例在变量赋值时 Number ...