首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL查询的高级应用

使用DISTINCT选项,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。...FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 FROM子句同时指定多个表或视图,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。...< 范围运算符(表达式值是否指定的范围):BETWEEN…AND…;  NOT BETWEEN…AND… 列表运算符(判断表达式是否为列表中的指定):IN (1,2……);  NOT IN...(1,2……) 模式匹配符(判断值是否与指定的字符通配格式相符):LIKE;  NOT LIKE 空值判断符(判断表达式是否为空):IS NULL;  NOT IS NULL 逻辑运算符(用于多条件的逻辑连接...连接可以SELECT 语句的FROM子句WHERE子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。

2.9K30

Oracle 分组函数

from stu_class; --查询sclass这一列不为空的总记录数 select count(sclass) from stu_class; DISTINCT函数 DISTINCT会消除重复记录后再使用组函数...avg(nvl(sscore,0)) from stu_class where sclass='软件2班'; GROUP BY子句 创建数据组 使用GROUP BY子句可将表中满足WHERE条件的记录按照指定的列划分成若干个小组... SELECT列表中除了分组函数那些,所有列都必须包含在GROUP BY子句中 --按照班级分组后求每个班级的得分最高的值,如果想将sclass查出则需要在group by语句中指定按其进行分组得到每班最大值...嵌套后就不能在查询列表中查分组函数意外的其他列了,否则会报错 select max(avg(sscore)) from stu_class group by sdept,sclass; SELECT语句执行过程 通过FROM子句中找到需要查询的表...通过WHERE子句进行非分组函数筛选判断 通过GROUP BY子句完成分组操作 通过HAVING子句完成组函数筛选操作 通过SELECT子句选择显示的列或表达式及组函数

40630
您找到你想要的搜索结果了吗?
是的
没有找到

《SQL Cookbook》 - 第三章 多表查询

如果习惯FROM子句中,而不是WHERE子句中,写连接逻辑,则可以使用JOIN子句。 如果从可阅读性角度来说,表关联的时候,关联条件写在ON子句中,过滤条件写在WHERE子句中,会更让人理解。...,但是必须保证两张表比较的列数相同,并且数据类型都相同,当执行集合运算,默认不会返回重复。...因为TRUE or NULL返回TRUE,但是FALSE or NULL返回NULL,所以当使用IN和OR,要注意是否会涉及到NULL值。...*)   from dept; 因为UNION子句会过滤重复,如果两个表的行数相同,则只会返回一行数据,如果返回两行,说明这两个表中没有完全相同的数据。...组合适用连接查询和聚合函数 如果连接查询产生了重复行,通常有两种办法来使用聚合函数, (1) 调用聚合函数,使用关键字DISTINCT,每个值都会先去掉重复再参与计算。

2.3K50

MariaDB 管理重复表数据

某些情况下,重复确实会导致问题,并且它们常常由于隐式动作或MariaDB命令的宽松策略而出现。 有多种方法可以控制此问题,查找重复,删除重复,并防止重复创建。...策略和工具 有四个关键方法来管理重复 - 使用JOIN关联,并用临时表删除他们。 使用INSERT ... ON DUPLICATE KEY UPDATE发现重复更新。...使用DISTINCT DISTINCT子句从结果中删除重复。...DISTINCT子句的一般语法如下 - SELECT DISTINCT fields FROM table [WHERE conditions]; 注 - 带有DISTINCT子句的语句的结果 - 当使用一个表达式...当使用多个表达式,它返回唯一的组合。 它不会忽略NULL值; 因此,结果还包含NULL作为唯一值。

1.2K10

SQL排序(二)

WHERE子句比较:大多数WHERE子句谓词条件比较使用字段/属性的排序规则类型。因为字符串字段默认为SQLUPPER,所以这些比较通常不区分大小写。...GROUP BY:GROUP BY子句使用名称空间默认排序规则来消除重复的值。因此,GROUP BY Name返回所有大写字母的值。可以使用EXACT排序规则返回大小写混合的值。...GROUP BY消除仅字母大小写不同的重复。若要保留大小写不同的重复,但要消除完全相同的重复,必须在GROUP BY子句(而不是select-item)上指定%EXACT归类函数。...下面的示例返回大小写混合的值; GROUP BY消除重复,包括字母大小写不同的重复:SELECT %EXACT(Name) FROM Sample.Person GROUP BY Name下面的示例返回大小写混合的值...发生排序的情况下,例如ORDER BY子句或范围条件,查询处理器将选择最有效的排序策略。

1.6K30

SQL命令 SELECT(一)

SELECT查询可以将返回这些非数据库值与从表或视图检索值结合起来。 当SELECT仅用于返回此类非数据库值,FROM子句是可选的。 从SELECT查询返回的值称为结果集。...作为子查询,为外围SELECT语句的子句提供值的SELECT语句。 SELECT语句中的子查询可以选择列表、FROM子句或带EXISTS或in谓词的WHERE子句中指定。...所有都是可选的,但是,如果使用,必须按照指定的顺序出现: DISTINCT子句,指定只返回不同的(非重复的)值。 一个TOP子句,它指定要返回多少行。...WHERE子句,指定行必须匹配的布尔谓词条件。 WHERE子句谓词条件既确定返回哪些行,又将提供给聚合函数的值限制为来自这些行的值。...这些条件由逻辑操作符链接的一个或多个谓词指定; WHERE子句返回满足这些谓词条件的所有记录。 WHERE子句谓词不能包含聚合函数。 GROUP BY子句,它指定以逗号分隔的列列表。

5.3K10

经典的SQL 语句大全

SET NOCOUNT 为 OFF 返回计数 常识 SQL查询中:from后最多可以跟多少张表或视图:256 SQL语句中出现 Order by,查询,先排序,后取 SQL中,一个字段的最大容量是...使用DISTINCT选项,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。...< 范围运算符(表达式值是否指定的范围):BETWEEN…AND… NOT BETWEEN…AND… 列表运算符(判断表达式是否为列表中的指定):IN (1,2……) NOT IN (...使用DISTINCT选项,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。...< 范围运算符(表达式值是否指定的范围):BETWEEN…AND… NOT BETWEEN…AND… 列表运算符(判断表达式是否为列表中的指定):IN (1,2……) NOT IN (

1.8K10

经典sql server基础语句大全

SET NOCOUNT 为 OFF 返回计数 常识 SQL查询中:from后最多可以跟多少张表或视图:256 SQL语句中出现 Order by,查询,先排序,后取 SQL...使用DISTINCT选项,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。...< 范围运算符(表达式值是否指定的范围):BETWEEN…AND… NOT BETWEEN…AND… 列表运算符(判断表达式是否为列表中的指定):IN (1,2……) NOT IN (1,2...使用DISTINCT选项,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。...< 范围运算符(表达式值是否指定的范围):BETWEEN…AND… NOT BETWEEN…AND… 列表运算符(判断表达式是否为列表中的指定):IN (1,2……) NOT IN (1,2

2.6K20

sql 复习练习

SET NOCOUNT 为 OFF 返回计数 常识 SQL查询中:from后最多可以跟多少张表或视图:256 SQL语句中出现 Order by,查询,先排序,后取 SQL中,一个字段的最大容量是...使用DISTINCT选项,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。...< 范围运算符(表达式值是否指定的范围):BETWEEN…AND… NOT BETWEEN…AND… 列表运算符(判断表达式是否为列表中的指定):IN (1,2……) NOT IN (1,2...使用DISTINCT选项,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。...< 范围运算符(表达式值是否指定的范围):BETWEEN…AND… NOT BETWEEN…AND… 列表运算符(判断表达式是否为列表中的指定):IN (1,2……) NOT IN (1,2

2K60

【数据库】03——初级开发需要掌握哪些SQL语句

事实上查询,select,from,where子句并不是顺序执行的。正确的理解如下。 1.为from所列出的关系产生笛卡尔积。 2.1的结果上应用where子句中指定的谓词。...重复元素如果都是空,会被判为相同去重。这与谓词中的处理有区别,因为谓词中null = null会返回unknown。...8.3 空关系测试 SQL中包含一个特性,测试一个子查询的结果是否存在元组,exist结构作为参数的子查询非空返回true值。...可以检测结果是否存在重复元组。...在编译并不能总是可以判断一个子查询返回的结果中是否有多个元组,如果一个子查询执行后其结果中有不止一个元组,则会产生一个运行时错误。 从技术上将标量子查询仍然是关系。

3.5K31

Oracle 数据库拾遗(三)

改变列的顺序会使返回的结果的行数发生变化 需要注意: 使用了 GROUP BY 子句的选择列表中只能包含以下: 常量 组合列 聚合函数表达式 按条件查询并分组 含有 GROUP BY 子句的 SELECT...,使用 GROUP BY 子句为查询记录分组,经常需要进行过滤,这就需要用户 SELECT 语句中增加数据过滤准则。...而使用 WHERE 子句进行过滤只能在分组之前实现,我们可以使用 HAVING 子句实现该需求。...都可以与 GROUP BY 语句组合使用,HAVING 和 WHERE 的不同之处在于: WHERE 子句中,分组进行以前,消除不满足条件的行, HAVING 子句中,分组之后条件被应用,即...,包括重复记录 UNION(并集),返回各个查询的所有记录,不包括重复记录 MINUS(补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录 SELECT SNO FROM student

1.4K10

使用SQL中的数据操作语言 (DML)

MERGE:可用于添加(插入)新行、更新现有行或删除表中的数据,具体取决于指定的条件是否匹配。这是一种执行一操作的便捷方式,否则你将不得不执行多个 INSERT 或 UPDATE 语句。...与 UPDATE 一样,使用 DELETE 语句几乎总是需要一个 WHERE 子句;否则,您将删除表中的所有行。...当您想将数据加载到具有现有行的表中,此功能非常有用,例如,您不想手动检查给定行是否已存在。如果已存在,则需要发出 UPDATE 语句或 INSERT 语句。...您可以使用一条 MERGE 语句同时执行大量 UPDATE 语句和仅在 UPDATE 语句返回 0 行已更新重新运行相应的 INSERT 语句。...您可以本文和 第一部分 中找到用于此练习的数据模型,并可以我的 GitHub 存储库 中找到此练习。

10210

MySQL中SQL优化的常用方法

1、对查询进行优化,应尽量避免全表扫描,首先应考虑 where 及 order by 涉及的列上建立索引。  2、应尽量避免 where 子句中使用!...因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译进行选择。然而,如果在编译建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入。...是根据表中数据来进行查询优化的,当索引列有大量数据重复,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使sex上建了索引也对查询效率起不了作用。 ...22、临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集。但是,对于一次性事件,最好使用导出表。 ...无需执行存储过程和触发器的每个语句后向客户端发送 DONE_IN_PROC 消息。  29、尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。

1.5K00

重新给自己上一课SQL语句

因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译进行选择。然 而,如果在编译建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入。...=@num 应尽量避免 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。...select num from a where exists(select 1 from b where num=a.num) 并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复...临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集。但是,对于一次性事件,最好使用导出表。...无需执行存储过程和触发器的每个语句后向客户端发送 DONE_IN_PROC 消息。 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。 尽量避免大事务操作,提高系统并发能力。

45630

SQL聚合函数 COUNT

COUNT(*)返回指定表或视图中的行数,但不消除重复。 它分别计数每一行,包括包含NULL值的行。 ALL - 可选-指定COUNT返回表达式中所有值的计数。...它可以选择计数或不计数重复的字段值。 COUNT总是返回数据类型BIGINT, xDBC长度为8,精度为19,刻度为0。 COUNT(*)以整数形式返回表中行数的计数。...COUNT(*)计数所有行,无论是否存在重复的字段值或NULL值。 COUNT可以引用表或视图的SELECT查询或子查询中使用。...COUNT可以SELECT列表或HAVING子句中与普通字段值一起出现。 COUNT不能用于WHERE子句。 COUNT不能在JOIN的ON子句中使用,除非SELECT是子查询。...什么是一个不同的值取决于字段的排序; 当字段具有默认的排序规则%SQLUPPER,字母大小写不同的值将不作为不同的值计算。

3.7K21

Mysql数据库优化

示例:select info from yusheng where order by info 2.应尽量避免 where 子句中使用!=或操作符,否则引擎将放弃使用索引而进行全表扫描。...因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译进行选择。然而,如果在编译建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入。...(index(索引名)) where id=@num 8.应尽量避免 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。...,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使sex上建了索引也对查询效率起不了作用。...无需执行存储过程和触发器的每个语句后向客户端发送 DONE_IN_PROC 消息。 29.尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。

1.8K30

3.4 《数据库系统概论》之数据查询—SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)

OUTER JOIN) FULL JOIN (FULL OUTER JOIN) 这里就以SC和Course两个表来检验这四类连接 ① INNER JOIN (JOIN) INNER JOIN:关键字表中存在至少一个匹配返回行...(3)相关子查询 子查询的查询条件依赖于父查询 首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则取此元组放入结果表 然后再取外层表的下一个元组 重复这一过程...当用户能确切知道内层查询返回的是单个值,可以用>、=、等比较运算符。...若内层查询结果非空,则外层的WHERE子句返回真值 若内层查询结果为空,则外层的WHERE子句返回假值 由EXISTS引出的子查询,其目标列表达式通常都用* ,因为带EXISTS的子查询只返回真值或假值...,给出列名无实际意义 NOT EXISTS谓词 若内层查询结果非空,则外层的WHERE子句返回假值 若内层查询结果为空,则外层的WHERE子句返回真值 [例44]查询所有选修了1号课程的学生姓名。

5.7K20

mysql 多表查询

ALL:利用该关键字可以将多个SELECT 语句的查询结果合并输出,但不会删除重复使用UNION或ALL关键字将多个表合并输出,查询结果必须具有相同的结构并且数据类型必须兼容,另外使用UNION...六、嵌套查询查询统计中的应用 实现多表查询,可以同时使用谓词ANY、SOME、ALL,这些谓词被称为定量比较谓词,可以和比较运算符联合使用,判断是否全部返回值都满足搜索条件.SOME和ANY谓词是存在量的...,只注重是否返回值满足搜索条件,这两个谓词的含义相同,可以替换使用;ALL谓词称为通用谓词,它只关心是否有谓词满足搜索要求....FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten ORDER BY id 使用UNION条件上相对比较苛刻,所以使用此语句一定要注意两个表项数目和字段类型是否相同...b.id=(SELECT id FROM tb_demo065 WHERE tb_demo065.name=’$_POST[text]’) 总之,实现表与表之间的关联的本质是两表之间存在共同的数据或者相同的数据

5.6K10

MySQL多表查询详解

ALL:利用该关键字可以将多个SELECT 语句的查询结果合并输出,但不会删除重复行在使用UNION或ALL关键字将多个表合并输出,查询结果必须具有相同的结构并且数据类型必须兼容,另外使用UNION两张表的字段数量也必须相同...子句建立此种关联实现查询六嵌套查询查询统计中的应用实现多表查询,可以同时使用谓词ANY、SOME、ALL,这些谓词被称为定量比较谓词,可以和比较运算符联合使用,判断是否全部返回值都满足搜索条件.SOME...和ANY谓词是存在量的,只注重是否返回值满足搜索条件,这两个谓词的含义相同,可以替换使用;ALL谓词称为通用谓词,它只关心是否有谓词满足搜索要求.SELECT * FROM tb_demo069_people...* FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten ORDER BY id使用UNION条件上相对比较苛刻,所以使用此语句一定要注意两个表项数目和字段类型是否相同十二条件联合语句...b.id=(SELECT id FROM tb_demo065 WHERE tb_demo065.name='$_POST[text]')总之,实现表与表之间的关联的本质是两表之间存在共同的数据或者相同的数据

1.4K10

数据库SQL优化总结

应尽量避免 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描. 应尽量避免 where 子句中使用 !...如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译进行选择。...然 而,如果在编译建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入。...临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集。但是,对于一次性事件, 最好使用导出表。... 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。 用EXISTS替换DISTINCT.

93220
领券