SQL查询语句

一些特殊的sql查询语句 in 和 not in 要慎用,否则会导致全表扫描 应尽量避免在 where 子句中对字段进行 null 值 判断,否则将导致引擎放弃使用索引而进行全表扫描 时间字段显示为可视 查询数据库表列重复的sql 在一个varchar类型字段的数据加值 in 不存在库的给一个默认值 查找数据库表中最新一条数据 case和sum的组合 TOP子句 select into mysql不可用 IFNULL() COALESCE() FIRST()返回指定字段第一个记录的值 阅读详情

数据查询

语句格式

SELECT [ALL|DISTINCT] <目标列表达式>

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

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

[ WHERE <条件表达式> ]

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

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

消除取值重复的行

如果没有指定DISTINCT关键词,则缺省为ALL

查询满足条件的元组

常用的查询条件

查 询 条 件

谓    词

比    较

=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较运算符

确定范围

BETWEEN AND,NOT BETWEEN AND

确定集合

IN,NOT IN

字符匹配

LIKE,NOT LIKE

空    值

IS NULL,IS NOT NULL

多重条件(逻辑运算)

AND,OR,NOT

 

(1) 比较大小

查询计算机科学系全体学生的名单。

   SELECT Sname

   FROM Student

   WHERE Sdept=‘CS’;

(2)确定范围

查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄

SELECT Sname,Sdept,Sage

FROM    Student

WHERE  Sage BETWEEN 20 AND 23;

(3) 确定集合

IN <值表>,  NOT IN <值表>         

[例12]查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。

       SELECTSname,Ssex

       FROM  Student

       WHERESdept IN ( 'IS','MA','CS' );

[例13]查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。

SELECT Sname,Ssex

FROM Student

        WHERE Sdept NOT IN ( 'IS','MA','CS' );

(4)字符匹配

[NOT] LIKE ‘<匹配串>’  [ESCAPE ‘ <换码字符>’]

1)     匹配串为固定字符串

查询学号为200215121的学生的详细情况。

    SELECT *   

    FROM  Student 

    WHERE  Sno LIKE ‘200215121';

等价于:

     SELECT  *

     FROM  Student

     WHERE Sno = ' 200215121 ';

匹配串为含通配符的字符串

[例15]  查询所有姓刘学生的姓名、学号和性别。

     SELECT Sname,Sno,Ssex

     FROM Student

     WHERE  Sname LIKE ‘刘%’;

[例16]  查询姓"欧阳"且全名为三个汉字的学生的姓名。

     SELECT Sname

      FROM  Student

     WHERE  Sname LIKE '欧阳__';

查询名字中第2个字为"阳"字的学生的姓名和学号。

     SELECT Sname,Sno

     FROM Student

     WHERE Sname LIKE ‘__阳%’;

查询所有不姓刘的学生姓名。

     SELECT Sname,Sno,Ssex

     FROM Student

     WHERE Sname NOT LIKE '刘%';

使用换码字符将通配符转义为普通字符

 [例19] 查询DB_Design课程的课程号和学分。

     SELECT Cno,Ccredit

     FROM Course

     WHERE Cname LIKE 'DB\_Design' ESCAPE '\‘;

[例20]  查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。

     SELECT  *

     FROM   Course

     WHERE  Cname LIKE  'DB\_%i_ _' ESCAPE ' \ ‘;

 ESCAPE'\' 表示“ \” 为换码字符

(5) 涉及空值的查询

IS NULL 或 IS NOT NULL

“IS” 不能用“=” 代替

某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。

        SELECT Sno,Cno

     FROM  SC

     WHERE  Grade IS NULL

查所有有成绩的学生学号和课程号。

     SELECT Sno,Cno

     FROM  SC

     WHERE  Grade IS NOT NULL;

(6) 多重条件查询

逻辑运算符:AND和 OR来联结多个查询条件

 AND的优先级高于OR

 可以用括号改变优先级

可用来实现多种其他谓词

[NOT] IN

[NOT] BETWEEN …   AND  …

查询计算机系年龄在20岁以下的学生姓名。

    SELECT Sname

      FROM  Student

      WHERE Sdept= 'CS' AND Sage<20;

查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。

SELECT Sname,Ssex

FROM Student

WHERE Sdept IN ( 'IS','MA','CS' )

可改写为:

SELECT Sname,Ssex

FROM  Student

WHERE Sdept= ' IS ' OR Sdept= ' MA' OR Sdept= ' CS ';

ORDER BY子句

可以按一个或多个属性列排序

升序:ASC;降序:DESC;缺省值为升序

当排序列含空值时

ASC:排序列为空值的元组最后显示

DESC:排序列为空值的元组最先显示

查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。

       SELECT Sno,Grade

       FROM  SC

       WHERE  Cno= ' 3 '

       ORDER BY Grade DESC;

查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。

       SELECT  *

       FROM  Student

       ORDER BY Sdept,Sage DESC; 

聚集函数

计数

COUNT([DISTINCT|ALL] *)

COUNT([DISTINCT|ALL] <列名>)

计算总和

SUM([DISTINCT|ALL] <列名>)   

计算平均值

AVG([DISTINCT|ALL] <列名>)

最大最小值

       MAX([DISTINCT|ALL] <列名>)

        MIN([DISTINCT|ALL] <列名>)

查询学生总人数。

   SELECT COUNT(*)

   FROM  Student; 

查询选修了课程的学生人数。

    SELECT COUNT(DISTINCT Sno)

    FROM SC;

计算1号课程的学生平均成绩。

         SELECT AVG(Grade)

         FROM SC

         WHERE Cno= ' 1 ';

GROUP BY子句

求各个课程号及相应的选课人数。

    SELECT Cno,COUNT(Sno)

    FROM    SC

    GROUP BY Cno; 

     查询结果:

          Cno        COUNT(Sno)

                    1             22

                  2             34

                 3             44

                    4             33

               5             48

HAVING短语与WHERE子句的区别:

§        作用对象不同

§        WHERE子句作用于基表或视图,从中选择满足条件的元组

§        HAVING短语作用于组,从中选择满足条件的组。

一、等值与非等值连接查询

v     等值连接:连接运算符为=

[例33]  查询每个学生及其选修课程的情况

                       SELECT  Student.*,SC.*

                             FROM     Student,SC

                     WHERE  Student.Sno = SC.Sno;

Student.Sno

Sname

Ssex

Sage

Sdept

SC.Sno

Cno

Grade

200215121

李勇

男

20

CS

200215121

1

92

200215121

李勇

男

20

CS

200215121

2

85

200215121

李勇

男

20

CS

200215121

3

88

200215122

刘晨

女

19

CS

200215122

2

90

200215122

刘晨

女

19

CS

200215122

3

80

 复合条件连接

WHERE子句中含多个连接条件

[例37]查询选修2号课程且成绩在90分以上的所有学生            

              SELECTStudent.Sno, Sname

              FROM    Student, SC

              WHEREStudent.Sno = SC.Sno AND  

                                            /* 连接谓词*/

                         SC.Cno= ‘2’ AND SC.Grade > 90;      

                                   /*其他限定条件 */

 

查询每个学生的学号、姓名、选修的课程名及成绩

 SELECT Student.Sno,Sname,Cname,Grade

  FROM    Student,SC,Course    /*多表连接*/

  WHERE Student.Sno = SC.Sno

                   and SC.Cno = Course.Cno;

嵌套查询

一个SELECT-FROM-WHERE语句称为一个查询块

将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询

SELECT Sname                             /*外层查询/父查询*/

    FROM Student

    WHERE Sno IN

                        (SELECT Sno             /*内层查询/子查询*/

                           FROM SC

                            WHERE Cno= ' 2 ');

 

带有IN谓词的子查询

查询与“刘晨”在同一个系学习的学生

SELECT Sno,Sname,Sdept

           FROM Student

     WHERE Sdept IN

                  (SELECT Sdept

                   FROM Student

                   WHERE Sname= ‘ 刘晨 ’);

    此查询为不相关子查询。

用自身连接完成查询要求

    SELECT  S1.Sno,S1.Sname,S1.Sdept

     FROM     Student S1,Student S2

     WHERE  S1.Sdept = S2.Sdept  AND

                      S2.Sname = '刘晨';

 

查询选修了课程名为“信息系统”的学生学号和姓名

      SELECT Sno,Sname                    ③ 最后在Student关系中取出Sno和Sname

      FROM   Student                                    

      WHERE Sno IN

            (SELECT Sno         ② 然后在SC关系中找出选修了3号课程的学生学号

              FROM    SC                                   

              WHERE  Cno IN

                    (SELECT Cno                     ① 首先在Course关系中找出

                       FROM Course                   “信息系统”的课程号,为3号

                       WHERE Cname= ‘信息系统’

                     )

              );

集合查询

查询计算机科学系的学生及年龄不大于19岁的学生。

方法一:

       SELECT *

       FROM Student

       WHERE Sdept= 'CS'

       UNION

       SELECT *

       FROM Student

       WHERE Sage<=19;

UNION:将多个查询结果合并起来时,系统自动去掉重复元组。

UNION ALL:将多个查询结果合并起来时,保留重复元组

SQL查询语句的全面实践指南 SQL(Structured Query Language)是一种用于存储、检索和操作数据库数据的标准编程语言。它允许用户执行各种操作,如查询、更新、插入和删除。掌握SQL查询语句对每个IT专业人士而言是基本功,无论是在开发应用程序、管理数据库还是进行数据分析时都不可或缺。为了满足不同层级IT从业者的需要,本章将全面展示SQL查询语句的丰富用法。从基础的SELECT语句到复杂的事务处理,从子查询到窗口函数的应用,我们会一步步深入了解SQL查询的各个方面。 阅读详情

相关推荐

Nuclei漏洞扫描:从零到精通的Windows实战指南

本文详细介绍了Nuclei漏洞扫描工具在Windows平台上的安装与使用教程,从基础安装到高级实战技巧全面覆盖。通过具体案例展示如何利用Nuclei的模板库快速检测常见漏洞,并提供自定义POC开发指南,帮助安全从业者高效开展漏洞扫描工作。

weixin_28683689的博客 251

数据库:SQL数据查询(详细、全面)

以下题目中加粗字体为重点哦~ 一、查询指定列、全部列 1.查询全体学生的学号和姓名 SELECT SNO, SN FROM S 2.查询全部列 SELECT * FROM S 二、查询经过计算的值 3. 查询全体学生的姓名、出生年份 SELECT SN, 2020-AGE FROM S 4. 查村全体学生的姓名、出生年份和系名(要求用小写字母表示系名) SELECT SN, 2020-AGE ...

hhhhxxn的博客 2万+

产品经理必看!用Cursor自动生成符合开发规范的技术文档(含UI设计规则模板)

本文详细介绍了产品经理如何利用Cursor工具自动生成符合开发规范的技术文档,并整合UI设计规则模板。通过配置标准化文档结构和设计关联规则,Cursor能有效解决术语不统一、结构混乱等问题,提升跨团队协作效率。文章包含实际案例、规则配置要点及企业级实施方案,帮助产品经理快速掌握AI辅助文档生成技巧。

emacs5lisp的博客 224

数据库之查询表student——查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别

SELECT sname, ssex FROM student WHERE sdept = 'CS' OR sdept = 'MA' OR sdept = 'IS';

weixin_43866499的博客 4035

测绘无人船避坑指南:云卓H12Pro遥控器接海康摄像头,从网络设置到RTSP流延迟优化全流程

本文详细解析了测绘无人船视频子系统的优化方案,重点介绍海康威视摄像头与云卓H12Pro遥控器的深度适配流程。从网络设置到RTSP流延迟优化,提供了一套经过实测的低延迟(<200ms)解决方案,适用于复杂水域环境下的测绘任务。

weixin_30415113的博客 627

3D识别建模 — 基于ReconstructMe和EAGLE EYES SCANNER的实现

3D实体识别建模,作为3D打印反向工程的一个重要环节,今天就让我们利用ReconstructMe和EAGLE EYES SCANNER来了解一下。 第一步、软件和硬件准备就绪 ReconstructMe下载并安装 http://reconstructme.net/?wpdmdl=160 EAGLE EYES SCANNER直接将相应USB插入电脑接口即OK,之后在    中点击搜索“设备管理...

qq_40013290的博客 882

Sql server数据库数据查询

答:查询所需的代码如下:USE学生管理数据库GOSELECTFROM学生信息表执行结果如下:答:查询所需的代码如下:USE学生管理数据库GOSELECT学号姓名性别FROM学生信息表执行结果如下:答:查询所需的代码如下:USE学生管理数据库GOSELECTTOP5FROM学生信息表执行结果如下:答:查询所需的代码如下:USE学生管理数据库GOSELECTDISTINCT专业FROM学生信息表。

weixin_62399938的博客 4390

基于Q-learning的无人机三维路径规划(含完整C++代码)

基于Q-learning的无人机三维路径规划(含完整C++代码)

weixin_54186646的博客 1万+

3. 查询表student——查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别。

SELECT sname, ssex FROM student WHERE sdept = 'CS' OR sdept = 'MA' OR sdept = 'IS';

weixin_43939570的博客 1万+

基于STM32F4通用定时器实现Livox激光雷达PPS硬件同步的工程实践

本文详细介绍了基于STM32F4通用定时器实现Livox激光雷达PPS硬件同步的工程实践。通过分析PPS信号的时序要求,对比不同定时器的特性,并提供完整的代码实现与调试技巧,帮助开发者解决多传感器数据融合中的时间同步问题。实测表明,该方案在车载环境中稳定运行超过2000小时。

weixin_30540691的博客 327

从 Non-Unicode 到 Unicode:ABAP 程序切换的坑、原理与工程化落地指南

摘要 老SAP系统中ABAP程序员常假设1字符=1字节,导致大量代码依赖单字节处理逻辑。Unicode系统的引入彻底改变了字符长度、偏移量等底层认知,强制要求程序遵循Unicode规则。关键问题包括:字符/字节语义混淆、结构体访问风险、以及ABAP语言版本的门槛限制。迁移时需要重点关注字符串处理、二进制协议解析等场景,利用UCCHECK、RSUNISCAN_FINAL等工具扫描风险,并通过持续集成机制确保代码质量。建议在Non-Unicode阶段就启用unicode_check参数模拟严格模式,分批次修复问

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3460

SQL数据查询

文章目录1 单关系查询1.1 投影查询1.2 选择查询1.3 聚集(Aggregation)查询2 连接查询3 嵌套查询 1 单关系查询 1.1 投影查询 1.2 选择查询 1.3 聚集(Aggregation)查询 2 连接查询 3 嵌套查询

流水无心恋落花 2118

【YOLOv8改进-损失函数】 YOLOv8自带损失函数CIoU / DIoU / GIoU 详解,以及如何切换损失函数

在介绍YOLOv8中的各种Iou之前,我们先来了解了解目标检测中的损失函数。目标检测模型通常包含两类损失函数:类别损失(分类)和位置损失(回归)。这两类损失函数用于检测模型的最后一部分,根据模型的输出(类别和位置)以及实际标注框(类别和位置),分别计算类别损失和位置损失。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 5191

SQL查询语句大全(个人总结)

全面的sql查询总结

shang_0122的博客 8万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SQL经典常用查询语句

在SQL中,查询表中所有数据是最基本的操作之一。通过使用语句,可以获取指定表中的所有记录和列。例如,假设有一个名为employees将返回employees表中的所有数据,包括员工的姓名、职位、工资等所有字段。这种查询方式适用于需要查看表中完整数据的情况,但需要注意,当表中数据量较大时,返回的结果集可能会非常庞大,对性能有一定影响。

5070

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SQL 基础查询语句详解

SQL(Structured Query Language,结构化查询语言)是操作关系型数据库的标准语言,而查询语句是 SQL 中最核心、最常用的部分。无论是数据提取、报表生成还是数据分析,都离不开基础查询的灵活运用。本文将系统讲解 SQL 基础查询语句的语法、用法及实战案例,帮助初学者快速入门。

2302_76756558的博客 2094

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SQL查询语句详解

SQL查询语句详解(一) 一、基本语法 Select select_list From table_name Where condition_expression Group by group_columns having condition_expression Order by sort_columns 二、查询实例 查询所有字段 查询指定字段 用DISTINCT去除结果中的重复行 查询指定数据 带有in关键字的查询 带between and的范围查询 带like的字符匹配查询 表1:

qq_43550060的博客 1万+

Windows server 2016——SQL server T-SQL查询语句

本系列文章将会讲解SQL server 中 server T-SQL查询语句,并且会同步视频进行安装讲解。视频教程:Windows server 2016——SQL server 数据库和表的管理SQL Server是由微软公司开发的关系型数据库管理系统,现在是全世界主流数据库之一。它具备方便使用、可伸缩性好、相关软件集成程度高等优势,能够从单一的笔记本上运行或以高倍云服务器集群为基础,或在这两者之间任何一种方式上运行。SQL (结构化查询语言)关系数据库的标准语言非过程化语言统一的语言。

yj11290301的博客 6613

sql查询语句 布尔类型_SQL 简单查询语句

SQL 语句中最核心的是查询语句。目录一、基本的查询语句二、指定查询条件三、注释和 SQL 语句注意事项四、运算符五、字符串模糊查询(新增)六、sqlzoo 网站 select 查询语句练习题正文一、基本的查询语句select 语句是 SQL 语句中使用最多也是最核心的语句。在 navicat 中输入查询语句,数据库将返回查询结果。子句是 SQL 语句的组成要素,以某个关键字开始。 selec...

weixin_39953673的博客 2260

GaussDB SQL查询语句执行过程解析

在下推算子执行时,会考虑数据本地性,尽可能在本地计算,减少数据在网络中的传输开销。(2)ABO(AI Based Optimization,基于机器学习的查询优化):通过对历史经验的不断学习,ABO将目标场景的模式进行抽象化,形成动态的模型,自适应地针对用户的实际场景进行优化,从而获得最优的执行计划。物化算子一般指算法要求,在做算子逻辑处理的时候,要求把下层 的数据进行缓存处理,因为对于下层算子返回的数据量不可提前预 知,因此需要在算法上考虑数据无法全部放置到内存的情况,例如 Agg、Sort。

feng6693的博客 999

SQL基础查询语句

SQL语句 目录SQL语句1、select 查询语句1.1、where 条件查询1.2 比较条件与between-and1.3 and or not1.4 null1.5 some any all1.6 集合操作1.7 like 模糊查询1.8 in与exists1.9 排序 order by2、函数2.1 单行函数2.1.1 日期函数2.1.1.1 sysdate/current_date2.1.1.2 add_months(d,x)2.1.1.3 last_day(d)2.1.1.4 months_

忄凝^的博客 1390

SQL查询语句基础构成

本文是基本的SQL查询语句用法,内容主要来自Alan Learning SQL这本书第3章,包括select,from,where,group by,having,order by六个查询子句,后续会深入介绍每个查询子句的用法。 1. 查询机制 在已经创建数据库连接的情况下,当查询被发送到服务器端时,服务器在执行查询语句之前需要进行检查: 用户是否有权限执行该语句? 用户是否有...

数据客 2011

SQL语言中的查询语句整理

快速认识一下sql语言中的查询语句

拔高、提升、创新! 5015

SQL查询语句大全集锦

SQL查询语句大全集锦 MYSQL查询语句大全集锦 一、 简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname...

1519
上一篇: HTML图片预览实现
下一篇: 数据库的连接——通用版
Ailion.Wang
博客等级 码龄15年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值