sql server高级查询,看这篇文章就够了

先选择一个数据库

use jobtest
go

引入:该数据库jobtest里面有两张表,Student学生表和Grade年级表,表中的数据如下所示:

学生表Student:
在这里插入图片描述

年级Grade表:

在这里插入图片描述

接下来我们来看看sql server中的子查询:

子查询

1.查询编号比李太白大的学生信息

--先获取李太白的编号
declare @sid int ;
select @sid  = sid from student where sname = '李太白'
--再查询编号比@sid大的信息
select * from student where sid>@sid

当然我们也可以改成子查询:

—可以改成子查询(将@sid替换成获取李太白编号的sql语句)

select * from student where sid>(select  sid from student where sname = '李太白')

其运行结果都是:

在这里插入图片描述

以上就是一个最简单的子查询。

习惯上,外面的查询称为父查询,括号里面的则是子查询,返回结果集。因为子查询作为where条件的一部分,所以还可以和update、insert以及delete一起使用,语法和select的类似。

注意:将子查询和比较运算符联合使用,必须保证子查询返回的值不多于一个。

还有一个就是:

select * from student不如select sid,sname,sphone,spass,sgid from student的效率高,可维护性也比不上,所以一般使用后者。

下面我们再来一个子查询的案例

需求:查询青鸟一班的学生信息

我们可以看到思路是这样的:

(1)先根据年级名称查询出年级编号

(2)学生表里面的年级编号让和查询出来的年级编号对应起来就可以了

select * from student where sgid = (select gid from grade where gname = '青鸟一班')

运行结果:

在这里插入图片描述

in和not in查询

前面我们说过,将子查询和比较运算符联合使用,必须保证子查询返回的值不多于一个。

如果返回多个值的话会怎么样呢?我们不妨来试试、

查询学生表中,年级编号是1的年级名称

select gname from grade where gid =(select sgid from student where sgid = 1)

运行结果:

在这里插入图片描述

可见,程序给我报异常了,表示子查询返回了多个结果。

正确写法应该是这样的:

select gname from grade where gid in(select sgid from student where sgid = 1)

in子查询适合用在子查询结果集返回多条记录的情况下。

反过来not in就是正好与in取反,还是同样上面给出的例子,我们换成not in看看结果是什么样的?

select gname from grade where gid not in(select sgid from student where sgid = 1)

结果:

在这里插入图片描述

很明显,除了青鸟一班,其余年级名称均已输出。

exists和no exists

exists,只注重子查询是否有返回行,如查有返回行结果为真,否则为假,并不适用子查询的结果,仅使用测试子查询是否有返回结果

下面来举例说明一下:

查询是否有编号为6的学生信息,如果有,则输出‘有编号是6的学生’

if exists(select * from student where sid = 6)
print '有编号是6的学生'

运行结果为:

在这里插入图片描述

因为表中并没有编号是6的学生信息。

而not exists正好与exists相反,还是利用上面的案例

if not exists(select * from student where sid = 6)
print '有编号是6的学生'

运行结果为:

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssl1104-USACO 2.1城堡(foodfill)【图论,广搜】

##前言 由于这道题比较难,有不好描述,我就直接贴题目了。 ##Description 以一个几乎超乎想像的运气,农民约翰在他的生日收到了一张爱尔兰博彩的奖券。 这一张奖券成为了唯一中奖的奖券。 农民约翰嬴得爱尔兰的乡下地方的一个传说中的城堡。 …

直接输出数组的名字不一定是地址值

package com.wdl.day09;/*** 创建人 wdl* 创建时间 2021/8/12* 描述*/ public class ArrayPrintTest {public static void main(String[] args) {int[] arr new int[]{1, 2, 3};System.out.println(arr);//地址值char[] arr1 {a, b,c};System.out.println(arr1);//abc} }

jQuery的简介

jQuery的简介 [1]为什么学习jQuery A、JS书写代码的时候结构比较的臃肿 B、JS获得元素对象的方式比较的单一 C、JS书写的代码浏览器的兼容性比较差 D、JS实现动画的效果比较的麻烦 [2]什么是jQuery javascriptQuery(js库) 目前最流行的JavaScript函数库,对JavaScrip…

JavaFX UI控件教程(二十八)之UI控件的自定义

翻译自 Customization of UI Controls 本章介绍了UI控件自定义的各个方面,并总结了Oracle提供的一些提示和技巧,以帮助您修改UI控件的外观和行为。 您可以通过应用层叠样式表(CSS),重新定义默认行为和使用单元工厂来…

好多人都说存储过程很难?认真看这篇文章就够了

何为存储过程?存储过程是在数据库管理系统中保存的、预先编译的并能实现某种功能的sql程序,说直白点,java知道吧?和java的方法一样。每遇到一个新的知识点时,我们都会看看它的优点,从而加深对它学习的欲望&…

下一代的 Actor 模型框架 Proto Actor

ProtoAct 是下一代的 Actor 模型框架,提供了 .NET 和 Go 语言的实现,默认支持分布式,提供管理和监控功能。在过去几年,我们经常看到两种 Actor 模型方法相互竞争,首先是经典的 Erlang/Akka 风格的 Actor 模型&#xff…

ssl1776-游乐场【图论,深搜】

题目 一个游乐场(无向图),每个景点(点)都有一定的开心值(价值),一个点只能游玩一次。然后可以从任何一个点出发,求可以游玩的最多项目(连通分量)…

JQuery $作用

作用1: $(function(){}) $就是jQuery的省略写法 1.相当于 window.οnlοadfunction(){} 2.功能比window.onload更强大 1) window onload一个页面只能写一个,但是可以写多个$() 而不冲突 2) window onload要等整个页面加载完后再执行&#xff…

import关键字

在源文件中显式的使用import结构导入指定包下的类、接口 声明在包的声明和类的声明之间 如果需要导入多个结构,则并列写出即可 可以使用"xxx.*"的方式,表示可以导入xxx包下的所有结构 如果使用的类或接口是java.lang包下定义的&#xff0c…

信息学奥赛一本通1349-最优布线问题

【题目描述】 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们有数据线连接。由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的。 当然,如果将任意两台计算机都用…

你知道i=i++;的含义吗?原理其实没有你想的那么简单

i和i我们都知道,但是你知道ii;吗?自上学时,老师就说i是先赋值再加,而i是先加再赋值,比如我们写个代码举下例子:i:/*** 自增案例*/public static void testZiZeng(){int i 1;int a i;System.out.println(&…

jQuery 的选择器

01、基本选择器 标签选择器 $(“a”) ID选择器 $(“#id”) $(“p#id”) 类选择器 $(“.class”) $(“h2.class”) 通配选择器 $("*") 并集选择器$(“elem1,elem2,elem3”) <script type"text/javascript">$(function(){/*******id选择器*********…

学会思考,而不只是编程

中国人常说“授之以鱼不如授之以渔”。如果说教授编程是授之以鱼&#xff0c;那么教授计算机科学就是授之以渔。为什么说学习计算机科学比学会编程要重要得多&#xff1f;来听听Yevgeniy Brikman的解释。 现如今&#xff0c;似乎每个人都在学习编程&#xff1a;Bill Gates、Ma…

ssl1562-局域网

局域网 题目 就是一个图&#xff0c;求最小生成树&#xff0c;然后求被去除的边的价值。 输入 用线来表示联通 5 5 1 2 8 1 3 1 1 5 3 2 4 5 3 4 2 输出 去除的边的总价值 8 解题思路 求出最小生成树的价值然后线的总值减去最小生成树的价值 代码 #include<…

什么?java中居然可以执行js代码了?真是不知者不怪

今天在书上看的&#xff0c;java中可以直接调用js的函数了&#xff0c;言外之意就是java已经支持外部的脚本语言了&#xff08;在运行期解释执行的&#xff09;&#xff0c;查了查&#xff0c;jdk从1.6之后开始支持的&#xff0c;1.6之前不可以。 为什么Java这种编译语言还需要…

jQuery 操作元素

01、操作元素的属性 $(function(){$("#but").click(function(){//获得元素的对象var inp$("#zh");//JQ获得属性 inp.attr("value")&#xff1a;获得的默认的值console.log(inp.attr("type")"----"inp.attr("name&q…

用 Docker Machine 创建 Azure 虚拟主机

搭建环境向来是一个重复造轮子的过程&#xff0c;Docker Machine 则把用户搭建 Docker 环境的各种方案汇集在了一起。笔者在《Docker Machine 简介》一文中演示了使用 Docker Machine 在本地的 vSphere 主机中安装 Docker 环境。但是在云计算大爆炸的今天&#xff0c;真正让我们…

ssl2345-繁忙的都市

题目 一个无向图&#xff0c;求最小生成树里权值最大的那条边 输入 第一行有两个整数n,m表示有n个店&#xff0c;m条边。接下来m行是对每条边的描述&#xff0c;u, v, c表示点u和v之间有边&#xff0c;权值为c。(1≤n≤300&#xff0c;1≤c≤10000) 4 5 1 2 3 1 4 5 2 4…

JQuery 事件绑定

<script type"text/javascript">$(function(){/******单击事件的绑定********/$("#bu1").click(function(){alert("单击事件");})$("#bu1").dblclick(function(){})$("#bu1").blur(function(){ })/******绑定多个事件…

JDK中主要的包

java.lang----包含一些Java语言的核心类&#xff0c;如String、Math、Integer、 System和 Thread&#xff0c;提供常用功能java.net----包含执行与网络相关的操作的类和接口。java.io ----包含能提供多种输入/输出功能的类。java.util----包含一些实用工具类&#xff0c;如定义…