
SQL
文章平均质量分 91
V1ncent_CC
一枚DBA
展开
-
MySQL窗口函数(MySQL Window Functions)
百分比排序,返回当前行在组内的百分比位置,返回值范围为[0, 1],可以用 当前行排序/(行数-1) 计算得出,但与rank不同,这里排序是从0开始而不是从1(相当于rank-1),因此第1行的百分比位置是0%,相当于:(rank-1)/(rows-1)。没有参数,返回当前行在组内的位置编号,从1开始,order by子句会影响行的编号顺序,如果没有order by,那么行的编号是不确定的。另外,即使行完全相同,它们的编号也是不同的,这点和后面的 rank() 和 dense_rank() 不同。原创 2023-05-17 17:12:20 · 14734 阅读 · 0 评论 -
Oracle 外键/引用完整性(Foreign Key / Referential Integrity Constraints)
在数据模型中,当两个表存在"父子"关系时,即可以定义外键约束,这种关系限制一个表中的数据需要参考另一个表中已存在的数据,其中引用的表称为"子表",被引用的表称为"父表",引用关系通过在子表上创建外键约束来实现。原创 2025-03-24 20:09:33 · 1060 阅读 · 0 评论 -
MySQL 横向衍生表(Lateral Derived Tables)
前面我们介绍过MySQL中的衍生表(From子句中的子查询)和它的局限性,MySQL8.0.14引入了横向衍生表,可以在子查询中引用前面出现的表,即根据外部查询的每一行动态生成数据,这个特性在衍生表非常大而最终结果集不需要那么多数据的场景使用,可以大幅降低执行成本。原创 2025-03-17 11:36:22 · 576 阅读 · 0 评论 -
MySQL 衍生表(Derived Tables)
在SQL的查询语句select …. from …中,跟在from子句后面的通常是一张拥有定义的实体表,而有的时候我们会用子查询来扮演实体表的角色,这个在from子句中的子查询会返回一个结果集,这个结果集可以像普通的实体表一样查询、连接,这个子查询的结果集就叫做衍生表。原创 2025-03-14 17:01:03 · 373 阅读 · 0 评论 -
MySQL 插入更新语句(insert…on duplicate key update语句 )
我们日常在使用 insert into 语句向表中插入数据时,一定遇到过主键或唯一索引冲突的情况,当遇到这种情况时,MySQL默认的反应是报错并停止执行后续的语句,为了避免这种情况,你有3种选择。原创 2025-02-21 16:55:07 · 924 阅读 · 0 评论 -
MySQL 插入替换语句(replace into statement)
我们日常使用 insert into 语句向表中插入数据时,一定遇到过主键或唯一索引冲突的情况,MySQL的反应是报错并停止执行后续的语句,而replace into语句可以实现强制插入。原创 2025-02-14 16:57:50 · 887 阅读 · 0 评论 -
MySQL table语句(Table Statement)
MySQL的table语句可以查询指定表中的所有列,相比于select语句,写法更简单,但功能也更弱,适合快速查看小表数据的场景。原创 2024-10-24 18:28:22 · 615 阅读 · 0 评论 -
MySQL 将文件导入数据库(load data Statement)
MySQL的load data infile语句可以从文本文件中读取数据,并且加载到数据库的表中。和select…into outfile只能导文件到本地数据库服务器不同,load data语句即可以从数据库服务器本地读取文件,也可以通过远程客户端(使用local关键字)读取,即可以远程将文件加载到数据库中。MySQL还提供了一个mysqlimport命令行工具也可以将数据从文件加载到数据库中,其原理也是通过load data infile语句完成的。原创 2024-08-02 17:49:19 · 4142 阅读 · 0 评论 -
MySQL 将查询结果导出到文件(select … into Statement)
我们经常会遇到需要将SQL查询结果导出到文件,以便后续的传输或数据分析的场景。为了满足这个需求,MySQL的select语句提供了into子句可以将的查询结果直接导出到文本文件。本文就MySQL中select…into的用法进行演示。原创 2024-07-30 17:11:17 · 5800 阅读 · 0 评论 -
MySQL limit子句用法及优化(Limit Clause Optimization)
在MySQL中,如果只想获取select查询结果的一部分,可以使用limit子句来限制返回记录的数量,limit在获取到满足条件的数据量时即会立刻终止SQL的执行。相比于返回所有数据然后丢弃一部分,执行效率会更高。原创 2024-06-19 17:24:18 · 2465 阅读 · 0 评论 -
MySQL Prepared语句(Prepared Statements)
在数据库应用中,很多SQL语句都会重复执行很多次,每次执行可能只是where条件中的变量值不同,但MySQL依然会解析SQL语法并生成执行计划。对于这类情况,可以利用prepared语句来避免重复解析SQL的开销。原创 2024-04-17 18:37:43 · 2930 阅读 · 0 评论 -
MySQL count(*/column)查询优化
count()是SQL中一个常用的聚合函数,其被用来统计记录的总数,下面通过几个示例来说明此类查询的注意事项及应用技巧。原创 2024-03-28 19:10:35 · 1798 阅读 · 0 评论 -
Oracle 层级查询(Hierarchical Queries)
如果一张表中的数据存在分级(即数据间存在父子关系),利用普通SQL语句显示数据间的层级关系非常复杂,可能需要多次连接才能完整的展示出完成的层级关系,更困难的是你可能不知道数据到底有多少层。而利用Oracle的层级查询,则可以很方便的显示出层级。原创 2024-03-11 20:00:09 · 3017 阅读 · 0 评论