首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Python

    (5) 电商场景下的常见业务SQL处理

    audit_status = 1 AND product_id =199726 LIMIT 0,15;; 我们来看看它的执行计划 可以看到possible_keys、key、key_len的值均为NULL,说明这条SQL 可以看到查询时运用到了联合索引,只查询出一条数据,就能返回我们需要的数据了,过滤程度是百分之百,我们完成了第一步优化 数据库的访问开销 = 索引 IO + 索引全部记录结果所对应的一个表数据的 IO 缺点 这种SQL 进一步优化评论分页查询,SQL语句改写 改写后的SQL语句: SELECT t.customer_id,t.title,t.content FROM ( SELECT customer_id FROM 和改写后的SQL查询出来的结果集是一样的,但是效率要高于改写前的SQL 使用前提 使用这个SQL有一个前提是,商品评论表的主键是customer_id ,且是有覆盖索引(也就是刚刚我们建立的联合索引) 语句被执行,像create table … select 和 create temporarytable语句,以及同时更新事务表和非事务表的SQL语句或事务都不允许执行。

    97010编辑于 2022-03-26
  • 来自专栏离别歌 - 信息安全与代码审计

    ThinkPHP5 SQL注入漏洞 && PDO真伪预处理分析

    ', '-'], '_', $field); if (preg_match('/\W/', $bindName)) { // 处理带非单词字符的字段名 $bindName = md5($ 这个选项涉及到PDO的“预处理”机制:因为不是所有数据库驱动都支持SQL预编译,所以PDO存在“模拟预处理机制”。 如果说开启了模拟预处理,那么PDO内部会模拟参数绑定的过程,SQL语句是在最后execute()的时候才发送给数据库执行;如果我这里设置了PDO::ATTR_EMULATE_PREPARES => false 非模拟预处理的情况下,参数化绑定过程分两步:第一步是prepare阶段,发送带有占位符的sql语句到mysql服务器(parsing->resolution),第二步是多次发送占位符参数给mysql服务器进行执行 所以,终上所述,我构造如下POC,即可利用报错注入,获取user()信息: http://localhost/thinkphp5/public/index.php?

    2.6K20发布于 2020-10-15
  • 来自专栏一个爱吃西瓜的程序员

    学习SQL【10】-SQL高级处理

    所谓高级处理,从用户的角度来讲,就是那些对数值进行排序,计算销售总额等我们熟悉的处理;从SQL的角度来讲,就是近几年才添加的新功能,这些新功能使得SQL的工作范围不断得到扩展。 OLAP是OnLine Analytical Processing的简称,意思是对数据库进行实时分析处理。 窗口函数就是为了实现OLAP而添加的标准SQL功能。 | 4 | 5 菜刀 | 厨房用具 | 3000 | 6 | 5 | 自身(当前记录) 之前1行的记录 之前2行的记录 如果将条件中的数字改为“ROWS 5 PRECEDING”,就是“截止到之前5行”(最靠近的6行)的意思。 这样的统计方法称为移动平均。 SQL的基础语法知识大致就是这些,如果你稍微会一点SQL,看到这些代码应该很好理解的。如果你没有编程基础,可能这些代码对于你来说过于难以理解。写的很粗糙,勉强可以用来温习SQL的语法。

    2K50发布于 2018-04-04
  • 来自专栏机器学习/数据可视化

    SQL进阶-10-SQL处理序列

    SQL进阶-10-用SQL处理数列 在关系型数据库的数据结构中,默认是不考虑数据的顺序。处理有序集合在SQL中不能直接实现,但是可以通过集合和谓词来间接实现处理有序数据的需求。 需求1-生成连续编号 需求 不使用数据库中自带的函数,实现任意长的连续编号序列,比如生成0-99的100个连续编号 SQL实现 先解决一个问题:00-99这100个数字中,0,1,2……9这10个数字分别出现了多少次 上面代码的主要工作: 找到起点和终点 起点和终点之间的座位都是未预定的状态 全称量化问题:将所有满足条件P转成不存在不满条件P的行 SQL实现-考虑换排 给表中的数据加上了行编号row_id ? 下图中的2-5号就是满足要求的 ? and s3.status <> '未预定') or (s3.seat = s2.seat + 1 and s3.status = "未预定") -- 5

    69810发布于 2021-03-01
  • 来自专栏Oracle数据库技术

    SQL处理流程

    概述 本章对SQL处理流程进行介绍。 SQL处理流程概要 SQL处理主要包括解析(parse)、执行(execute)、提取(fetch)几个步骤。 SQL处理的详细流程可以参考以下官方文档中的流程图: ? Database SQL Tuning Guide >About SQL Processing SQL处理主要内容: 1.解析(parse): 当应用程序执行SQL语句时,应用程序会发出解析调用(parse call)给数据库,解析调用(parse call)会打开或者创建一个游标(Cursor),并进行以下的检查: 语法检查 : 检查语句(SQL的拼写等)是否符合SQL语法。 语义检查 : 检查SQL的访问对象、访问权限等语义内容。 共享池检查:检查共享池(Shared Pool)中是否有相同SQL的解析结果(执行计划)。

    75330发布于 2020-03-25
  • 来自专栏开源部署

    Oracle SQL 异常处理

    而用户自定义异常以及预定义异常不回终止程序,但会终止该 PL/SQL 代码块,所以一个存储过程中可以有多个 PL/SQL 代码块。 关于异常的语法及定义: 什么是异常: PL/SQL用异常和异常处理器来实现错误处理 Oracle中出现错误的情形通常分为编译时错误(compile-time error)和运行时错误(run-time 异常在PL/SQL执行过程中很可能出现 对异常如果不进行处理,异常可能会中断程序的运行 捕获异常的规则: 在异常部分WHEN 子句没有数量限制 当异常抛出后,控制无条件转到异常处理部分 EXCEPTION 中错误处理的步骤: 步骤1:如果当前块中有该异常的处理器,则执行该异常处理语句块,然后控制权传递到外层语句块 步骤2:如果没有当前异常的处理器,把该异常传播给外层块。 编写PL/SQL块,使用SELECT语句将管理者编号为空的员工的姓名及工作编号显示出来,如果符合条件的员工多于一人,则返回字符串“最高管理者人员过多!”

    1K10编辑于 2022-08-17
  • 来自专栏技术杂记

    SQL 精编(5

    where to_days(the_date) >= to_days(date_sub(now(),interval 60 day)) group by user_id having ct >= 5

    38310发布于 2021-10-19
  • 来自专栏JavaPark

    SQL 进阶挑战(1 - 5

    SQL1 插入记录(一) 描述 牛客后台会记录每个用户的试卷作答记录到 exam_record 表,现在有两个用户的作答记录详情如下: 用户 1001 在 2021 年 9 月 1 日晚上 10 点 11 09-01 22:11:12", "2021-09-01 23:01:12", 90), (NULL, 1002, 9002, '2021-09-04 07:01:02', NULL, NULL); SQL2 ', 'hard', 60, '2020-01-01 10:00:00'), (9002, '算法', 'easy', 60, '2020-01-01 10:00:00'), (9003, 'SQL', 'medium', 60, '2020-01-02 10:00:00'), (9004, '算法', 'hard', 80, '2020-01-01 10:00:00'); 输出: 9001|SQL| UPDATE examination_info SET tag = "Python" WHERE tag = "PYTHON"; SQL5 更新记录(二) 描述 现有一张试卷作答记录表exam_record

    50920编辑于 2022-06-13
  • 来自专栏云计算linux

    mybatis.5.动态SQL

    1.动态SQL,解决关联sql字符串的问题,mybatis的动态sql基于OGNL表达式 if语句,在DeptMapper.xml增加如下语句; <select id="selectByLikeName List<Dept>deptList=mapper.selectByLikeName(d); System.out.println(deptList.get(0).getDname()); } <em>5</em>. foreach 动态<em>SQL</em>迭代一个集合,通常放在In条件语句中,foreach允许指定一个集合,声明集合项和索引变量,他们可以用在元素体内,也允许指定开放和关闭的字符串,在迭代之间放置分隔符。 session.getMapper(DeptMapper.class); List<Integer>idList=new ArrayList<Integer>(); idList.add(<em>5</em>) open="" separator="or" close=""> n.tags like '%'||#{tag}||'%' </foreach> <lect> 生成的SQL

    26010编辑于 2024-12-17
  • 来自专栏Java帮帮-微信公众号-技术文章全总结

    SQL经典5道题

    SQL经典5道题 1:假设有一个“职工”表,表结构如下:(14分) 职工号 姓名 年龄 月工资 部门号 电话 办公室 1 张三 25 2000 1 12345 101 2 李四 26 1500 1 54321 请用SQL语句将“销售部”的那些工资数额低于600的职工的工资上调10%。 试用SQL语句表达下列操作: 1)定义职工表、社会团体表和参加表,并说明其主键和参照关系。 2)建立下列两个视图。 3) 将由供应商S5供给工程代码为J4的零件P6改为由S3供应,并将零件P6的产地改为S3供货商的所在城市。 4)从供应商关系中删除S2的记录,并从供应零件关系中删除相应的记录。 供应商代码=供应零件.供应商代码AND 供应零件.工程代码=工程.工程代码 AND 供应商.所在城市='上海'; 3.UPDATE 供应零件 SET 供应商代码='S3' WHERE 供应商代码='S5'

    3.2K50发布于 2018-03-15
  • 来自专栏一个爱吃西瓜的程序员

    学习SQL5】-数据更新

    ,SQL Server,PostgreSQL和MySQL,但不适用于Oracle. 2:列清单的省略 对表进行全列INSERT时,可以省略表名后的列清单。 5:从其他表中复制数据 要学习该方法,我们首先得创建一张表。 遇到这种需要在同一个处理单元中执行一系列更新操作的情况,一定要使用事务来进行处理。所以,事务是需要在同一个处理单元中执行一系列更新处理的集合。 ● SQL Server PostgreSQL BEGIN TRANSACTION ● MySQL START TRANSACTION ● Oracle、DB2 无 例如,更新商品信息的事务: ● SQL ● ROLLBACK—取消处理 ROLLBACK是取消事务包含的全部更新处理的结束指令,相当于文件处理中的放弃保存。一旦回滚,数据库就会恢复到事务开始前的状态。

    3.2K70发布于 2018-04-04
  • 来自专栏AustinDatabases

    PolarDB MySQL SQL 优化指南 (SQL优化系列 5

    产生并行的SQL都是大型的SQL,而调大的情况下,会导致CPU资源不足,尤其在大SQL并行运行很多的情况下。 EXISTS customers; DROP TABLE IF EXISTS products; DROP TABLE IF EXISTS users; -- ====== 建表:5 CONCAT('user_', n), CONCAT('user_', n, '@example.com'), ELT(1 + FLOOR(RAND()*5) 《SQL SERVER 运维之道》,清风笑,竟惹寂寥 SQL SERVER SQL 优化指南 四句真言 (SQL 优化系列 2) PostgreSQL SQL 优化指南 四句真言(SQL 优化系列 1 --答题领奖品 PolarDB 非官方课程第四节--PG实时物化视图与行列数据整合处理--答题领奖品 PolarDB 非官方课程第三节--MySQL+IMCI=性能怪兽--答题领奖品 PolarDB 非官方课程第二节

    10610编辑于 2026-03-12
  • 来自专栏大数据学习与分享

    Spark SQL 小文件问题处理

    在生产中,无论是通过SQL语句或者Scala/Java等代码的方式使用Spark SQL处理数据,在Spark SQL写数据时,往往会遇到生成的小文件过多的问题,而管理这些大量的小文件,是一件非常头疼的事情 大量的小文件会影响Hadoop集群管理或者Spark在处理数据时的稳定性: 1.Spark SQL写Hive或者直接写入HDFS,过多的小文件会对NameNode内存管理等产生巨大的压力,会影响整个集群的稳定运行 此外,Spark在处理任务时,一个分区分配一个task进行处理,多个分区并行处理,虽然并行处理能够提高处理效率,但不是意味着task数越多越好。如果数据量不大,过多的task运行反而会影响效率。 同样的这种机制也可以套用到Spark SQL中的DataSet上,那么就很好解释了tmp的分区数为什么等于t1和t2的分区数的和。 最后,Spark中一个task处理一个分区从而也会影响最终生成的文件数。 当然上述只是以Spark SQL中的一个场景阐述了小文件产生过多的原因之一(分区数过多)。

    2.9K20发布于 2020-08-10
  • 来自专栏开源部署

    MySQL的SQL处理(Prepared)

    Prepared SQL Statement:SQL的执行、预编译处理语法、注意点 一、SQL 语句的执行处理 1、即时 SQL   一条 SQL 在 DB 接收到最终执行完毕返回,大致的过程如下:    执行并返回结果;   如上,一条 SQL 直接是走流程处理,一次编译,单次运行,此类普通语句被称作 Immediate Statements (即时 SQL)。 2、预处理 SQL   但是,绝大多数情况下,某需求某一条 SQL 语句可能会被反复调用执行,或者每次执行的时候只有个别的值不同(比如 select 的 where 子句值不同,update 的 set 注意:   虽然可能是通过预处理 SQL 的方式一定程度的提高了效率,但是对于优化而言,最优的执行计划不是光靠 SQL 语句的模板化来实现的,往往还是需要通过具体值来预估出成本代价。 0.00 sec) mysql> EXECUTE stmt1 USING @a, @b; +------------+ | hypotenuse | +------------+ |          5

    1.9K10编辑于 2022-08-17
  • 来自专栏SQL实现

    SQL中的Null值处理

    今天就和大家聊聊在 MySQL 中处理 Null 值时需要注意的点,本文包含以下内容: 查找 Null 值 将 Null 值转为实际值 在排序中对 Null 值的处理 计算非 Null 值的数量 聚合 比如,查询 emp 表中字段 comm 为 Null 的记录,就这么写 SQL: SELECT * FROM emp WHERE comm IS NULL 有时候根据业务需要,我们要找出在 emp 类似的,在处理字符串类型的字段的时候,我们要找出某个字段没有值的记录。假设该字段叫作 xxx,xxx 允许设置 Null 值。 count(*) ---------- 14 5 聚合 Null 列 聚合函数 sum()、avg()、min() 等会忽略 Null 值,在使用 avg() 时要警惕 Null 值 比如,要求员工的平均提成,正确的 SQL 应该这么写: SELECT AVG(COALESCE(comm, 0)) AS avg_comm FROM emp 聚合的结果: avg_comm

    4.4K30发布于 2020-08-27
  • 来自专栏SQL_BOY

    各类SQL日期时间处理方法

    使用的SQL多了不知道大家有没这样的困惑,SQL的语法大的方面是一致的,如SELECT,JOIN,GROUP BY等,但是在一些函数或某些特定功能处理上还是有很大差异的,而这些差异经常给大家带来困惑,尤其是一个新手从一种 SQL转到另一种SQL的时候,总是抓耳挠腮,不知所措。 今天就把大家常用的SQL语言做一个总结,来看看他们在日期时间处理方面的差异。 :select mow() /current_timestamp() from table1; --比较简单,两个函数返回的结果相同,但是注意返回的是到毫秒的日期时间格式,如果需要到天粒度的话可以截取处理 备注:以上列出了大家工作中常用的一些SQL在日期处理上的一些差别,可能存在部分不严谨的地方,欢迎大家指出。另外在一些功能上也不限于以上提供的方式,大家如果有更好更简洁的方式也欢迎提出。

    5.3K32发布于 2020-07-29
  • 来自专栏IT云清

    SQL---NULL值处理(1)

    SQL NULL 值 SQL Date SQL isnull() NULL 值是遗漏的未知数据。 默认地,表的列可以存放 NULL 值。 SQL NULL 值 如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。 NULL 值的处理方式与其他值不同。 SQL 的 NULL 值处理 请看下面的 "Persons" 表: Id LastName FirstName Address City 1 Adams John London 2 Bush George SQL IS NULL 我们如何仅仅选取在 "Address" 列中带有 NULL 值的记录呢? 来源:http://www.w3school.com.cn/sql/sql_null_values.asp

    98120发布于 2019-01-16
  • 来自专栏Hongten

    SQL SERVER事务处理

    COMMIT TRAN T1 BEGIN DISTRIBUTED TRANSACTION 指定一个由 Microsoft 分布式事务处理协调器 (MS DTC) 管理的 Transact-SQL 分布式事务的起始 为 OFF 时,只回滚产生错误的Transact-SQL 语句,而事务将继续进行处理。编译错误(如语法错误)不受 SET XACT_ABORT 的影响。 ) COMMIT TRAN GO SET XACT_ABORT ON GO BEGIN TRAN INSERT INTO t2 VALUES (4) INSERT INTO t2 VALUES (5) 对于导致终止批处理并生成内部回滚的错误,将释放在含有该错误语句的批处理内声明的所有游标。 Lock_TimeOut 5000 被锁超时5秒将自动解锁 Set Lock_TimeOut 0 产立即解锁,返回Error 默认为-1,无限等待 2: (SET TRANSACTION ISOLATION

    2.4K20发布于 2018-09-18
  • 来自专栏技术碎碎念

    sql server 事务处理

    事物处理 事务是SQL Server中的单个逻辑单元,一个事务内的所有SQL语句作为一个整体执行,要么全部执行,要么都不执行。 2.自动提交事务:自动提交模式是SQL Server的默认事务管理模式。每个Transact-SQL语句在完成时,都被提交或回滚。如果一个语句成功地完成,则提交该语句;如果遇到错误,则回滚该语句。 当提交或回滚显式事务或者关闭隐性事务模式时,SQL Server将返回到自动提交模式。 3.隐式事务 隐性事务模式设置为打开之后,当SQL Server首次执行某些Transact-SQL语句时,都会自动启动一个事务,而不需要使用 BEGIN TRANSACTION 语句。 */ 3 set nocount on 4 print cast(@@trancount as char(5)) 5 create table table1(a int) 6 insert table1

    2.8K80发布于 2018-04-09
  • 来自专栏IT云清

    SQL---NULL值处理(2)

    SQL NULL 函数 SQL Nulls SQL 数据类型 SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数 请看下面的 "Products" 表 微软的 ISNULL() 函数用于规定如何处理 NULL 值。 NVL(), IFNULL() 和 COALESCE() 函数也可以达到相同的结果。 在这里,我们希望 NULL 值为 0。 SQL Server / MS Access SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0)) FROM Products

    99620发布于 2019-01-16
领券