SELECT的使用

news2025/1/5 22:15:33

目录

1、SQL的查询命令

1.1 SELECT语句

1.2 投影查询

1.3 选择查询

1.4 聚合函数查询

1.5 简单分组查询(GROUP BY)

1.6 内连接查询

1.7 外连接查询

1.8 子查询

1. 无关子查询

2. 相关子查询

带exists的相关子查询:

1.9 集合查询

1. UNION(并)

2. INTERSECT(交)和EXCEPT(差)

1.10 排序(ORDER BY)

1.11 存储查询结果

2、数据操作中使用SELECT字句

2.1 INSERT中使用SELECT字句

2.2 UPDATE中使用SELECT字句

2.1 DELETE中使用SELECT字句


T-SQL的语法约定

数据库的概念和操作-CSDN博客

接下来查询,我们用,在teaching数据库里的,三张表:

student(sno(主码),sname,gender,sage,specialty(专业),grade(年级)),

course(cno(主码),cname,credit),

sc(sno(外码),cno(外码),score),(sno,cno)为主码。

1、SQL的查询命令

1.1 SELECT语句

SELECT [ALL|DISTINCT] <expression>[,...n]
FROM <table|view>[,...n]
[WHERE <condition_expression>]
[GROUP BY <column_name>[,...n] [HAVING <group_condition_expression>]
[ORDER BY <column_name> [ASC|DESC] [,...n]]

SELECT返回的是一个关系

ALL|DISTINCT默认ALL不去重DISTINCT去重一个就指定所有的列

expression表达式,通常取列名,所有列可用 * 表示。

FROM:从一个或多个表(视图)中查询。

WHEREcondition_expression可以是

1. 比较运算符:=、>、<、>=、<=、<>(!=)。

2. 逻辑运算符:AND(与)、OR(或)、NOT(非)。

3. 确定范围运算符:BETWEEN AND,NOT BETWEEN AND,可以用比较运算符代替。

4. 集合成员运算符:IN、NOT IN。

5. 字符匹配运算符:LIKE,NOT LIKE。

6. 判空运算符:IS NULL、IS NOT NULL。

7. 聚合函数:AVG()、MAX()、MIN()、SUM()、COUNT()。

8. SELECT 字句:SELECT可以嵌套。

9. 谓词:IN、EXISTS、ALL、SOME、ANY。

10. 集合运算符:UNION(并)、INTERSECT(交)、EXCEPT(差)。

GROUP BY:按一个或多个列,分组。

HAVING:在GROUP BY中可选(没有GROUP BY,不能单独写HAVING),给分组加上条件

ORDER BY:对最终的查询结果进行排序默认ASC升序,DESC降序。

1.2 投影查询

查询stduent表中的sname,gender,specialty。

use teaching
go
select sname,gender,specialty
from student

查询student表所有列。

select * from student

查询student表前三行(包括所有列)。

select top 3 *
from student

查询student表前50%(包括所有列)。

select top 50 percent *
from student

给查询到的列改名

select sno as 学号,sname as 名字 -- as 可省略,但可读性差
from student
-- 或
select 学号=sno,名字=sname -- =是赋值,不能反了
from student

当然,也可以 select 表达式,如:

select sno,sage+10 as 十年后的年龄
from student

1.3 选择查询

关系运算符

查询sc表中不及格的sno

select sno
from sc
where score<60

逻辑运算符

查询计算机中的男生的信息

select *
from student
where specialty = '计算机' and gender = '男'

IN关键字

查询计算机或电子商务专业的学生信息。

select *
from student
where specialty in ('计算机','电子商务')
-- 也可以这样写 where specialty = '计算机' or specialty = '电子商务'

LIKE关键字

LIKE '%',0~N任意字符

LIKE ‘_’,任意字符

LIKE '[ ]',范围中任意字符

LIKE '[^ ]',不在范围中任意字符

查询姓张的同学的信息。

select *
from student
where sname like '张%'

判空运算符

查询score是NULL的学生信息。

select *
from sc
where score is NULL

1.4 聚合函数查询

count(*):返回元组个数

count(column_name):返回该列属性值的个数(不去重)。

count(distinct column_name):返回该列属性值的个数(去重)。

avg(column_name):返回该列的平均值

sum(column_name):返回该列的总和

max(column_name):返回该列的最大值

min(column_name):返回该列的最小值

注意:返回的值,没有列名,自己取名字。

注意:where不能使用聚合函数

如:

查询专业的个数。

select count(distinct specialty) as 专业个数
from student

1.5 简单分组查询(GROUP BY)

group by 后的表达式,要与select中的表达式匹配

group by 后多个表达式,先按第一个分组,再按第二个分组……

HAVING 子句用于在分组(GROUP BY)查询之后进行筛选。

查询男生,女生的人数。

select gender,count(gender) as 人数
from student
group by gender

group by 后面有gender,select 后面也要有gender。

查询一个学生的总成绩,平均成绩。

use teaching
go
select sno,sum(score) as 总分,avg(score) as 平均成绩
from sc
group by sno

 group by 后面有sno,select 后面也要有sno。

1.6 内连接查询

连接格式

SELECT select_list
FROM table1 INNER INTO table2 ON condition_expression

也可以select  select_list  from table1,table2  where condition_expression,但较旧或不推荐。   

一般连接条件是,使用外键连接

如:

查询sname,cno,score,

select student.sname,sc.cno,sc.score
from student inner join sc on student.sno = sc.sno

1.7 外连接查询

把INNER INTO换成

LEFT OUTER JOIN:以左表为主(),右表不满足补NULL。

RIGHT OUTER JOIN:以右表为主(),右表不满足补NULL。

FULL OUTER JOIN :左,右表不满足时,各自对应位置补NULL。

其他不变。

1.8 子查询

1. 无关子查询

子查询与外部查询无关子查询只执行一次

查询与刘珊的专业相同的同学的sno,snsme,specialty

use teaching
go
select sno,sname,specialty
from student
where specialty = (
select specialty
from student 
where sname = '刘珊') and sname != '刘珊'

当然,也可以使用自连接:

use teaching
go
select a.sno,a.sname,a.specialty
from student as a inner join student as b on a.specialty = b.specialty
where b.sname = '刘珊' and a.sname != '刘珊'

查询选修了cno为‘0807’的学生的sname和specialty。

select sname,specialty
from student as s inner join sc on s.sno = sc.sno
where sc.cno = '0807'
2. 相关子查询

子查询依赖于外部查询。子查询重复执行

cah查询成绩比该课平均成绩低的学生的sno,cno,score

select sno,cno,score
from sc as a
where score<(
select avg(score)
from sc as b
where a.cno = b.cno)

可以认为是双重for循环

先确定a表一行的cno的值,1

把b表中所有等于这值的cno(相当于选了这个课程)的这些元组中的score求平均值,2

a表中该行的score与score平均值比较,留下符合条件的元组,3

直到a表中的每一行都执行一遍1,2,3,

最后在符合条件的元组中进行外部的查询。

exists的相关子查询

EXISTS

子查询的结果集有元组(有满足的元组),返回TRUE,外层查询的某一行要被留下

若子查询的结果集中没有元组(没有满足的元组),返回FALSE,外层查询的某一行要被删除。

NOT EXISTS

子查询的结果集中没有元组(没有满足的元组),返回TRUE,外层查询的某一行要被留下。

若子查询的结果集有元组(有满足的元组),返回FALSE,外层查询的某一行要被删除,

注意:因为子查询返回的是TRUE或FALSE,所以子查询里是,select *,只关心有没有元组

查询所有选修了‘0202’课程的学生的姓名。

select sname
from student
where exists(
select *
from sc
where student.sno = sc.sno and sc.cno = '0202')
-- 或
select student.sname
from student inner join sc on student.sno = sc.sno
where sc.cno = '0202'
-- 或
select student.sname
from student
where sno in (
select sno
from sc
where cno = '0202')

双循环思想:

先确定student表一行的sno,

因为是exists,所以有满足子查询的条件的元组,返回TRUE,外层查询的某一行要被留下

没有满足的元组,返回FALSE,外层查询的某一行要被删除

直到确定完所有student表中的元组时,

再对留下的元组进行外部查询。

查询没有选课的student学号、姓名、性别,

use teaching
go
select sno,sname,gender
from student as s
where not exists(
select *
from sc
where s.sno = sc.sno
)

双循环思想: 

先确定student表一行的sno,

因为是not exists,所以没有满足子查询的条件的元组,返回TRUE,外层查询的某一行要被留下

有满足的元组,返回FALSE,外层查询的某一行要被删除

直到确定完所有student表中的元组时,

再对留下的元组进行外部查询。

查询未选修0101号课程的student学号、姓名、性别

use teaching
go
select sno,sname,gender
from student as s
where not exists(
select *
from sc
where s.sno = sc.sno and sc.cno = '0101')

1.9 集合查询

1. UNION(并)
select_statement
UNION [ALL]
select_statement
[UNION [ALL]
select_statement[...n]]

select_statement:select语句。

ALL不去重,不指定,就去重(默认)

选了‘0101’和‘0202’的课程的学生的名字。

use teaching
go
select sno,sname
from student
where sno in(
select sno
from sc as sc1
where exists(
select *
from sc as sc2
where sc1.sno = sc2.sno and sc1.cno = '0101' and sc2.cno = '0202'))
-- 或
use teaching
go
select sc.sno,student.sname
from student inner join sc on student.sno = sc.sno
where cno = '0101'
UNION
select sc.sno,student.sname
from student inner join sc on student.sno = sc.sno
where cno = '0202'
2. INTERSECT(交)和EXCEPT(差)

自动去重

select_statement
{INTERSECT|EXCEPT}
select_statement

1.10 排序(ORDER BY)

最终的查询结果进行排序默认ASC升序,DESC降序。

ORDER BY不能在子查询中使用。

ORDER BY 多个,先按第一个排,再按第二个排……

1.11 存储查询结果

SELECT select_list INTO new_table_name   ,自动创建一个新表

FROM……

……

2、数据操作中使用SELECT字句

2.1 INSERT中使用SELECT字句

INSERT INTO table_name[(column_list)]
SELECT select_list
FROM table_name
[WHERE condition_expression]

要自己创建表。

创建一个及格的成绩表

use teaching
go
create table 成绩表(
姓名 char(8),
学号 char(4),
成绩 int)
go
insert into 成绩表(姓名,学号,成绩)
select * from sc where score>=60
go
select * from 成绩表

2.2 UPDATE中使用SELECT字句

UPDATE table_name
SET column_name=expression[,...n]
[WHERE condition_expression]

在condition_expression中使用select子句。

2.1 DELETE中使用SELECT字句

DELETE table_name
[WHERE condition_expression]

在condition_expression中使用select子句。

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

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

相关文章

Vue项目结构推荐(复杂国际化项目与一般项目结构)

Vue项目结构推荐 一、一般项目结构二、复杂国际化项目结构总结/建议 下面结构是基于Vue和TypeScript开发的项目结构下src包下的结构&#xff0c;若只用到vue与js。则去掉typescript部分的包即可。 一、一般项目结构 assets&#xff1a;存放静态资源&#xff0c;如图片、字体、样…

BOC调制信号matlab性能仿真分析,对比功率谱,自相关性以及抗干扰性

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视频&#xff09…

电影院售票 - 策略模式(Strategy Pattern)

策略模式&#xff08;Strategy Pattern&#xff09; 策略模式&#xff08;Strategy Pattern&#xff09;策略模式概述策略模式结构图策略模式主要包含的角色 talk is cheap&#xff0c; show you my code总结 策略模式&#xff08;Strategy Pattern&#xff09; 策略模式&…

重学 Android 自定义 View 系列(十):带指针的渐变环形进度条

前言 该篇文章根据前面 重学 Android 自定义 View 系列(六)&#xff1a;环形进度条 拓展而来。 最终效果如下&#xff1a; 1. 扩展功能 支持进度顺时针或逆时针显示在进度条末尾添加自定义指针图片使用线性渐变为进度条添加颜色效果 2. 关键技术点解析 2.1 进度方向控制的…

【北京迅为】iTOP-4412全能版使用手册-第七十章 Linux内核移植

iTOP-4412全能版采用四核Cortex-A9&#xff0c;主频为1.4GHz-1.6GHz&#xff0c;配备S5M8767 电源管理&#xff0c;集成USB HUB,选用高品质板对板连接器稳定可靠&#xff0c;大厂生产&#xff0c;做工精良。接口一应俱全&#xff0c;开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

CG顶会论文阅读|《科技论文写作》硕士课程报告

文章目录 一、基本信息1.1 论文基本信息1.2 课程基本信息1.3 博文基本信息 二、论文评述&#xff08;中英双语&#xff09;2.1 研究问题&#xff08;Research Problem&#xff09;2.2 创新点&#xff08;Innovation/Contribution&#xff09;2.3 优点&#xff08;Why this pape…

.NET周刊【12月第4期 2024-12-22】

国内文章 dotnet 简单使用 ICU 库进行分词和分行 https://www.cnblogs.com/lindexi/p/18622917 本文将和大家介绍如何使用 ICU 库进行文本的分词和分行。 dotnet 简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用 https://www.cnblogs.com/lindexi/p/18621674 本文将和大…

git 问题解决记录

在用git上传文件到仓库中出现了2个问题 第一个问题&#xff1a; 需要修改git的代理端口与电脑自己的代理服务器设置中的端口和VPN的端口保持一致&#xff0c; 比如我的端口是7897&#xff0c;就设置 git config --global http.proxy http://127.0.0.1:7897 git config --glo…

XML结构快捷转JSON结构API集成指南

XML结构快捷转JSON结构API集成指南 引言 在当今的软件开发世界中&#xff0c;数据交换格式的选择对于系统的互操作性和效率至关重要。JSON&#xff08;JavaScript Object Notation&#xff09;和XML&#xff08;eXtensible Markup Language&#xff09;是两种广泛使用的数据表…

Oracle 创建本地用户,授予权限,创建表并插入数据

目录 一. 用户的种类二. 切换session为PDB三. 创建用户并授予权限四. 创建表空间五. 为用户分配默认表空间并指定表空间配额六. 通过创建的用户进行登录七. 创建脚本&#xff0c;简化登录八. 查看用户信息九. 创建表&#xff0c;并插入数据9.1 查看当前用户的schema9.2 插入数据…

系统设计——大文件传输方案设计

摘要 大文件传输是指通过网络将体积较大的文件从一个位置发送到另一个位置的过程。这些文件可能包括高清视频、大型数据库、复杂的软件安装包等&#xff0c;它们的大小通常超过几百兆字节&#xff08;MB&#xff09;甚至达到几个吉字节&#xff08;GB&#xff09;或更大。大文…

【老白学 Java】简单位移动画

简单位移动画 文章来源&#xff1a;《Head First Java》修炼感悟。 上一篇文章中&#xff0c;老白利用内部类的特性完成了多个事件的处理&#xff0c;感觉还不错。 为了更深入理解内部类&#xff0c;本篇文章继续使用内部类创建一个画板&#xff0c;完成简单的位移动画&#x…

彻底解决 Selenium ChromeDriver 不匹配问题:Selenium ChromeDriver 最新版本下载安装教程

在 Python 的 Selenium 自动化测试中&#xff0c;ChromeDriver 是不可或缺的工具。它作为代码与 Chrome 浏览器的桥梁&#xff0c;但如果版本不匹配&#xff0c;就会导致各种报错&#xff0c;尤其是以下常见问题&#xff1a; selenium.common.exceptions.SessionNotCreatedExc…

[CTF/网络安全] 攻防世界 warmup 解题详析

查看页面源代码&#xff0c;发现source.php 得到一串代码&#xff0c;进行代码审计&#xff1a; <?phpclass emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php"];…

基于fMRI数据计算脑脊液(CSF)与全脑BOLD信号的时间耦合分析

一、前言 笔者之前的文章《基于Dpabi和spm12的脑脊液(csf)分割和提取笔记》,介绍了如何从普通的fMRI数据中提取CSF信号。首先是基础的预处理,包括时间层校正、头动校正,再加上0.01-0.1Hz的带通滤波。接着用SPM12分割出CSF区域,设置一个比较严格的0.9阈值,确保提取的真是…

游泳溺水识别数据集,对25729张图片进行YOLO,COCO JSON, VOC XML 格式的标注,溺水平均识别率在89.9%

游泳溺水识别数据集&#xff0c;对25729张图片进行YOLO&#xff0c;COCO JSON, VOC XML 格式的标注&#xff0c;溺水识别率在92&#xff05; 训练结果 数据集和标签 验证 游泳测试视频 根据测试的视频来获取检测结果&#xff1a; 游泳测试视频的置信度设置60% 检测结果如下&…

STM32 拓展 电源控制

目录 电源控制 电源框图 VDDA供电区域 VDD供电区域 1.8V低电压区域 后备供电区域 电压调节器 上电复位和掉电复位 可编程电压检测器(PVD) 低功耗 睡眠模式(只有CUP(老板)睡眠) 进入睡眠模式 退出睡眠模式 停机(停止)模式(只留核心区域(上班)) 进入停…

Mac M2 Pro安装MySQL 8.4.3

絮絮叨叨 MacBook Pro&#xff0c;芯片&#xff1a;Apple M2 Pro, macOS: Sonoma 14.0一直知道很多软件对Mac M1或M2的支持不好&#xff0c;但没想到在安装MySQL 8.x上也让我吃尽了苦头本文除了介绍如何安装MySQL 8.4.3外&#xff0c;还会记录笔者遇到的一些问题以及解决方法 …

闻泰科技涨停-操盘训练营实战-选股和操作技术解密

如上图&#xff0c;闻泰科技&#xff0c;今日涨停&#xff0c;这是前两天分享布局的一个潜伏短线的标的。 选股思路&#xff1a; 1.主图指标三条智能辅助线粘合聚拢&#xff0c;即将选择方向 2.上图红色框住部分&#xff0c;在三线聚拢位置&#xff0c;震荡筑底&#xff0c;…

ts总结一下

ts基础应用 /*** 泛型工具类型*/ interface IProps {id: string;title: string;children: number[]; } type omita Omit<IProps, id | title>; const omitaA: omita {children: [1] }; type picka Pick<IProps, id | title>; const pickaA: picka {id: ,title…