查询数据(数据库)——简单查询

news2024/11/25 18:57:39

目录

1.最简单的查询

(1)查询指定列

(2)查询所有列

(3)查询计算列

(4)为列起别名

(5)使用DISTINCT关键字消除重复元组

2.查询满足条件的元组

(1) 比较大小

(2) 确定范围

(3) 确定集合

(4) 字符匹配

(5) 空值判断

(6) 组合条件

3.对查询结果排序


SQL用SELECT语句进行数据查询

SELECT语句的格式:

SELECT [DISTINCT] <目标列表达式>[,…n]

FROM <表名或视图名> [,…n ]

[WHERE <条件表达式> ]

[GROUP BY <列名1>[HAVING<列条件表达式> ] ]

[ORDER BY <列名2>[ASC | DESC] ]

SELECT语句的含义:

根据WHERE条件,从FROM指定的表中找出满足条件的元组,按目标列表达式,选出属性值,形成结果表。

1.最简单的查询

省略的一些可选成分,得最简单的查询命令:

SELECT [DISTINCT] <目标列表达式>[,…n ]

FROM <表名或视图名>

对一张表的某些列进行操作,功能为:

(1)查询指定列

(2)查询所有列

(3)查询计算列

(4)为列起别名

(5)使用DISTINCT关键字消除重复元组

(1)查询指定列

【例】查询全体学生的姓名、学号和电话号码。

SELECT 姓名, 学号, 移动电话

FROM 学生表

 列的输出顺序可以与表中的列顺序不同。

(2)查询所有列

【例】查询全体学生的详细信息

SELECT *

FROM 学生表

用“*”表示查询表的所有列。

(3)查询计算列

也可以查询由常量、变量和函数构成的表达式

【例】将累计学分降低10%后显示出来

SELECT 姓名, 累计学分, 累计学分- 累计学分*0.1

FROM 学生表

查询结果为:

姓名                 累计学分           (无列名)

王东                     160                  144

(4)为列起别名

目的:满足用户的习惯,为计算列起名。方法:

①<目标列表达式> [AS]<别名>

②<别名> =<目标列表达式>

【例】将每个学生的累计学分降低10%后显示出来,要求查询结果表的标题用英语或字母显示。

SELECT 姓名 AS name, 累计学分 Ogpa, Ngpa=累计学分- 累计学分*0.1

FROM 学生表

查询结果如下:

name            Ogpa           Ngpa 

王东               160              144 

当别名含有空格时要用单引号括起

(5)使用DISTINCT关键字消除重复元组

  • 无DISTINCT时,结果中可能含重复行
  • 有DISTINCT时,自动消除结果中的重复行

【例】查询每个院系有在读学生的专业。

SELECT DISTINCT 所在院系, 专业

FROM 学生表

查询结果如下:

所在院系             专业

信息学院            计算机

信息学院           信息管理

  • 结果中无重复行
  • DISTINCT应紧跟SELECT

2.查询满足条件的元组

通过在WHERE子句中指定查询条件来实现

WHERE子句常用的查询条件::

查询条件运算符备注
比较大小=, >, <,>=, <=, !>, !<双目运算
确定范围[NOT] BETWEEN AND三目运算
确定集合[NOT] IN双目运算
字符匹配[NOT] LIKE双目运算
空值判断IS [NOT] NULL单目运算
组合条件NOT,AND,OR,()NOT是单目,其余是双目,括号用于改变运算优先级

通过在WHERE子句中指定查询条件来实现

WHERE子句常用的查询条件

: (1) 比较大小

(2) 确定范围

(3) 确定集合

(4) 字符匹配

(5) 空值判断

(6) 组合条件

(1) 比较大小

查询条件: op_{1} \Theta op_{2}

\Theta(比较运算符 ):=, >, <,>=,<= , !>, !<

op_{1} 和 op_{2}:由常量、变量、函数构成的算术/字符串表达式 

【例】查询来自杭州的所有学生。

SELECT *

FROM 学生表

WHERE 籍贯='杭州'

【例】查询累计学分在160分以下的学生姓名和累计学分。

SELECT 姓名, 累计学分

ROM 学生表

WHERE 累计学分<60

(2) 确定范围

查询条件: op1 [NOT] BETWEEN op2 AND op3

op1 、 op2、 op3:由常量、变量、函数构成的算术/字符串表达式。

【 例】查询累计学分不在150和159之间的学生姓名和累计学分。

SELECT 姓名, 累计学分

FROM 学生表

WHERE 累计学分 NOT BETWEEN 150 AND 159

【例】查询姓名在’陈’和’李’之间的学生学号和姓名。

SELECT 学号, 姓名

FROM 学生表

WHERE 姓名 BETWEEN '陈' AND '李'

由字符串定义的范围是根据字符内码的顺序确定的(一般按字典顺序 )

(3) 确定集合

查询条件: op1 [NOT] IN op2

op1 :由常量、变量、函数构成的算术/字符串表达式

op2:集合,表示为(e1, e2,…, en),其中e1, e2,…, en为集合的元素,它们可以是与op1同类型的常量、变量和函数构成的表达式。

含义:若op1(不)是集合op2的元素,则条件为真,否则为假。

【例】查询来自杭州、宁波或温州的学生学号和姓名。

 SELECT Sno,Sname

FROM Student

WHERE Scity IN ('杭州','宁波','温州')

【例】查询学号后两位是“09”,或者等于学号前两位或中间两位的学生学号和姓名。

SELECT 学号, 姓名

FROM 学生表

WHERE SUBSTRING(学号,6,2) IN (‘09’,SUBSTRING(学号,2,2),SUBSTRING (学号,4,2))

SUBSTRING(s,p,c):取子串函数,返回字符串s中从第p个字符开始,长度为c的子串。

(4) 字符匹配

查询条件: s1 [NOT] LIKE s2 [ESCAPE ’’]

s1和s2是由常量、变量、函数构成的字符串表达式。

s1称为主字符串,s2称为模式字符串 。

模式字符串除了包含普通字符外,还包含下列特殊字符(称为通配符):

  • % 匹配任意长度的字符串(长度可以为0)
  • _ 匹配任意一个字符
  • [c1c2,…cn] 匹配字符c1, c2, …, cn中的一个。当c1, c2, …, cn 连续时可简化为[c1-cn]
  • [^c1c2…cn] 匹配除c1, c2, …, cn外的一个字符。当c1, c2, …, cn连续时可简化为[^c1-cn]
  • 含义:若s1(不)与s2相匹配,则条件为真,否则为假。

【例】查询学号最后一位既不是“1”和“3”,也不是“9”的学生学号和姓名。

SELECT 学号, 姓名

FROM 学生表

WHERE 学号 LIKE '%[^139]'

ESCAPE短语: 使模式串中的某个通配符恢复原来的含义。

【例】查询课程名以“DB_”开头的课程信息。

SELECT *

FROM 课程表

WHERE 课名 LIKE 'DB\_%' ESCAPE '\'

(5) 空值判断

查询条件: exp IS [NOT] NULL

  • exp 是由常量、变量、函数构成的表达式。
  • 含义:exp的值(不)为空值,则条件为真,否则为假。

【例】查询没有成绩的学号和开课计划编号。

SELECT 学号, 开课号

FROM 选课表

WHERE 成绩 IS NUL

注意“IS”不能用“=”代替。

【例5-18】查询有成绩的学号和开课计划编号。

SELECT 学号, 开课号

FROM 选课表

WHERE 成绩 IS NOT NULL

注意“IS NOT”不能用“!=”或“<>”代替。

(6) 组合条件

查询条件: 用NOT、AND、OR和括号将多个逻辑表达式连接起来所得的复杂逻辑表达式 。

  • 括号的优先级最高,NOT次之,AND再次之,OR的优先级最低。

【例】查询这样的男生,他的电话号码前3位是“130”,他来自杭州或者宁波,他既不主修电子商务专业,也不主修信息管理专业。

SELECT *

FROM 学生表

WHERE 性别 = ‘男’ AND SUBSTRING(移动电话, 1, 3) = ‘130’ AND ( 籍贯 = '杭州' OR 籍贯 = '宁波' ) AND NOT 专业 IN ('电子商务', '信息管理')

3.对查询结果排序

语法 : ORDER BY{<排序列>[ASC |DESC]}[,...n]

【例】 查询选修了开课计划编号为’010101’的课程的学生学号和成绩,查询结果按分数降序排列

SELECT Sno, Grade

FROM EnrollmentWHERE OnO ='010101

ORDER BY Grade DESC

可以用列在SELECT子中的顺序编号来指定排序列,上例的ORDER BY子可改为: ORDER BY 2 DESC

若需按SELECT子句中的计算列排序,则 ORDER BY子句可用三种方法来表示这个计算列:

1)列表达式;2)列顺序编号;3)列别名。

【例5-21】查询选修了开课计划编号为’010101’的课程的学生学号、成绩以及加了10分后的新成绩,查询结果按原成绩降序、按新成绩升序排列。

SELECT 学号, 成绩, 成绩+10 AS New成绩

FROM 选课表

WHERE 开课号 = '010101'

ORDER BY 成绩 DESC, 成绩+10

上例中的成绩+10也可改写为:New成绩或3。

也可按SELECT子句中没有出现的列排序,此时不能用顺序编号来表示排序列。

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

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

相关文章

Kyligence Zen产品体验--小白也能快速上手的指标平台

一、写在最前 啥是Kyligence Zen? Kyligence Zen 是基于 Kyligence 核心 OLAP能力打造的一站式指标平台。凭借集业务模型、指标管理、指标加工、数据服务等于一体的解决方案&#xff0c;Kyligence 协助过多家金融、零售、制造企业客户搭建企业级指标平台。Kyligence Zen 是 K…

常见八种排序实现方法

常见八种排序实现方法 前言快速排序堆排序冒泡排序代码 选择排序代码部分 插入排序思路讲解代码部分 希尔排序代码部分思路讲解 归并排序递归思路讲解代码部分 非递归梭哈代码部分思路讲解 非梭哈代码部分 计数排序代码部分 前言 这里的快速排序和堆排序博主以前都写过&#xf…

绝地求生 压枪python版

仅做学习交流&#xff0c;非盈利&#xff0c;侵联删&#xff08;狗头保命) 一、概述 1.1 效果 总的来说&#xff0c;这种方式是通过图像识别来完成的&#xff0c;不侵入游戏&#xff0c;不读取内存&#xff0c;安全不被检测。 1.2 前置知识 游戏中有各种不同的枪械&#x…

算法修炼之练气篇——练气十四层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 前言&#xff1a;每天练习五道题&#xff0c;炼气篇大概会练习200道题左右&#xff0c;题目有C语言网上的题&#xff0c;也有洛谷上面的题&#xff0c;题目简单适合新手入门。&#xff08;代码都是命运之光自己写的…

基于 LHS 、 BR 与K-means的风电出力场景分析研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

多线程基础总结

1. 为什么要有多线程&#xff1f; 线程&#xff1a;线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中实际运行单位。 进程&#xff1a;进程是程序的基本执行实体。 什么是多线程&#xff1f; 有了多线程&#xff0c;我们就可以让程序同时做…

Java学习路线【看看ChatGPT怎么说】

目录 1、介绍情况2、路线简述3、Java初学者路线4、Java高级开发路线5、安卓开发 1、介绍情况 本文主体内容是chatGPT生成的&#x1f609; 先说结论&#xff1a;chatGPT写出来的路线&#xff0c;深度比较一般&#xff0c;但是对于初学者而言&#xff0c;具有不错的参考价值。…

【机器学习】XGBoost 详细解读 (集成学习_Boosting_GBM)

【机器学习】XGBoost 详细解读 &#xff08;集成学习_Boosting_GBM&#xff09; 文章目录 【机器学习】XGBoost 详细解读 &#xff08;集成学习_Boosting_GBM&#xff09;1. 介绍2. 基本原理3. 目标函数&#xff08;二阶泰勒展开求解&#xff09;3.1 基础的目标函数3.2 二阶泰勒…

error: LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl

Qt系列文章目录 文章目录 Qt系列文章目录前言一、QtCreator中qmake命令是什么&#xff1f;2.解决 前言 我在代码中加入了对应的信号和槽&#xff0c;但编译仍然报错&#xff1a; #ifndef PROJECTWIN_H #define PROJECTWIN_Hnamespace Ui { class ProjectWin; }ProjectWin类声…

Google Bard使用初体验,与ChatGPT比较到底怎么样

文章目录 Google Bard 介绍如何使用Google bardbard和ChatGPT3.5的区别 本文讲述了Google bard的入门教程和使用技巧&#xff0c;并且与竞争对手ChatGPT进行了一个全方面的比较。这是 Google 不能输的战役&#xff0c;也是全面 AI 的时刻。 Google Bard 介绍 Google Bard已经于…

【数据结构】链表(C语言)

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

JUC之集合类

JUC包提供了一些并发安全的集合类&#xff0c;用于在多线程环境下进行共享数据的操作&#xff0c;以解决多线程间的竞争条件和线程安全问题。 CopyOnWriteArrayList 相当于线程安全的ArrayList public class ListTest {public static void main(String[] arge){List<Strin…

【项目-前后端交互-项目】表白墙【servlet实践】

【项目—前后端交互 案例】表白墙 代码示例: 服务器版表白墙1. 准备工作2. 约定前后端交互接口3. 实现服务器端代码创建 Message 类创建 MessageServlet 类 4. 调整前端页面代码5. 数据存入文件.6. 数据存入数据库1) 在 pom.xml 中引入 mysql 的依赖2) 创建数据库, 创建 messag…

ModuleNotFoundError: No module named ‘Multiscaledeformableattention‘

在实现DINO Detection方法时&#xff0c;我们可能会遇到以上问题。因为在DeformableAttention模块&#xff0c;为了加速&#xff0c;需要自己去编译这个模块。 如果你的环境变量中能够找到cuda路径&#xff0c;使用正确的torch版本和cuda版本的话&#xff0c;这个问题很容易解…

代码随想录算法训练营第三十九天 | 不同路径(挺简单的)

62.不同路径 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;动态规划中如何初始化很重要&#xff01;| LeetCode&#xff1a;62.不同路径_哔哩哔哩_bilibili 状态&#xff1a;能直接做出来。 思路 机器人从(1 , 1) 位置出发&#xff0c;到(m, n)终…

对抗训练方法:保卫人工智能的盾牌

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

【纳什博弈、ADMM】基于纳什博弈和交替方向乘子法的多微网主体能源共享研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

ch07-Pytorch的训练技巧

ch07-Pytorch的训练技巧 0.引言1.模型保存与加载1.1.序列化与反序列化1.2.PyTorch 中的模型保存与加载1.3.模型的断点续训练 2.模型 Finetune2.1.Transfer Learning & Model Finetune2.2.PyTorch中的Finetune 3.使用 GPU 训练模型3.1.CPU与GPU3.2.数据迁移至GPU3.3. 多 GPU…

mac下安装cnpm淘宝镜像

在mac安装cnpm时&#xff0c;输入npm install -g cnpm -registryhttps://registry.npm.taobao.org 报错&#xff1a; npm ERR! code EACCES npm ERR! syscall mkdir npm ERR! path /usr/local/lib/node_modules/cnpm npm ERR! errno -13 npm ERR! Error: EACCES: permission de…

单细胞 | label transfer with Seurat4(未知细胞映射到注释好的细胞图谱)

场景&#xff1a;把新的细胞比对到已经注释过的细胞集合上&#xff0c;获取映射后的细胞标签&#xff0c;UMP坐标。 准备&#xff1a; 一个分析好的单细胞图谱数据集&#xff0c;作为reference数据集。一个新的单细胞counts矩阵&#xff0c;记为 query数据集。 主要分为两个步…