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

    Sharding-JDBC 源码分析 —— SQL 解析(二)之SQL解析

    解析器 StatementParser :SQL语句解析器 SQLParsingEngine 调用 StatementParser 解析 SQL解析器,主要提供只考虑 SQL 块的解析方法,不考虑 SQL 上下文。 SQLParser 看起来方法特别多,合并下一共 5 种: 方法 说明 #parseExpression() 解析表达式 #parseAlias() 解析别名 #parseSingleTable() 解析单表 看了这 5 个方法是否有点理解了? StatementParser SQL语句解析器 4.1 StatementParser StatementParser,SQL语句解析器。每种 SQL,都有相应的 SQL语句解析器实现。

    2.2K50发布于 2018-03-02
  • 来自专栏技术杂记

    SQL 精编(5

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

    36710发布于 2021-10-19
  • 来自专栏麒思妙想

    扩展 Spark SQL 解析

    今天跟大家分享下Spark吧,谈谈如何修改Spark SQL解析,让其更符合你的业务逻辑。好,我们开始吧... 语法识别一般分为二个阶段: 1.词法分析阶段 (lexical analysis) 对应的分析程序叫做 lexer ,负责将符号(token)分组成符号类(token class or token type) 2.解析阶段 扩展语法定义 一条正常SQL,例如 Select t.id,t.name from t , 现在我们为其添加一个 JACKY表达式,令其出现在 Select 后面 ,形成一条语句 Select t.id ,我们可以看到jackyExpression已经可以正常解析了。 Spark 执行流程 这里引用一张经典的Spark SQL架构图 ? 我们输入的 SQL语句 首先被解析成 Unresolved Logical Pan ,对应的是 ?

    1.4K70发布于 2021-04-23
  • 来自专栏全栈程序员必看

    SQL SERVER实例解析

    什么是SQL SERVER实例 ———— SQL SERVER实例的概念和“类与对象”的概念很相似。 因此,所谓的“SQL SERVER实例”,实际上就是被安装在计算机上的某个完整的SQL SERVER服务器(或者,为了与硬件服务器的概念相区别,可以把SQL SERVER实例称为SQL SERVER服务器引擎 注:这里所说的“完整”的SQL SERVER服务器,是指每一个SQL SERVER实例可以包括所有可选的SQL SERVER服务器组件,包括数据库引擎、Analysis Services、Reporting 每个SQL Server实例都有一组自己独占的程序文件和数据文件,另外,还有一组所有SQL SERVER实例所共享的程序文件和数据文件。 ———— 查看已安装的SQL SERVER 实例名的方法 1.开始菜单——-SQL SERVER配置管理器———SQL SERVER服务,这里可以看到已安装的实例名。

    1.9K10编辑于 2022-07-15
  • 来自专栏小赵的Java学习

    Mybatis动态SQL解析

    文章目录 1 为什么需要动态SQL? 2 动态标签有哪些? 3 举例说明 if choose (when, otherwise) trim (where, set) foreach 1 为什么需要动态SQL? 看一段Oracle存储过程代码: 由于前台传入的查询参数不同,所以写了很多的if else,还需要非常注意SQL语句里面的and、空格、逗号和转移的单引号这些,拼接和调试SQL就是一件非常耗时的工作 MyBaits的动态SQL就帮助我们解决了这个问题,它是基于OGNL表达式的。 2 动态标签有哪些? -- 动态SQL where 和 if --> <select id="selectBlogListIf" parameterType="blog" resultMap="BaseResultMap

    69040编辑于 2022-12-02
  • 来自专栏一个会写诗的程序员的博客

    SQL 解析器:值类型解析设计

    this.value); } @Override public Long getValue() { return this.value; } } 值类型对象解析器 /** * 解析 fieldValue 值 */ fun parseFieldValue(fieldCondition: FieldCondition, fieldValueType: KFieldValueType

    68411编辑于 2022-03-23
  • 来自专栏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

    49620编辑于 2022-06-13
  • 来自专栏小道

    SQL Server索引解析(Index)

    索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 。   但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。 索引建多了,不利于新增、修改和删除等操作,因为做这些操作时,SQL SERVER 除了要更新数据表本身,还要连带立即更新所有的相关索引,而且过多的索引也会浪费硬盘空间。 4) 对于需要在指定范围内的快速或频繁查询的数据列;   5) 经常用在WHERE子句中的数据列。   6) 经常出现在关键字order by、group by、distinct后面的字段,建立索引。 对一个存在大量更新操作的表,所建索引的数目一般不要超过3个,最多不要超过5个。索引虽说提高了访问速度,但太多索引会影响数据的更新操作。   11) 对复合索引,按照字段在查询条件中出现的频度建立索引。 如果指定的索引名称已经存在,SQL Server 将显示一个错误。 ONLINE = {ON |OFF}:表示建立索引时是否允许正常访问,即是否对表进行锁定。默认为 OFF。   

    1.9K40发布于 2021-04-13
  • 来自专栏猿计划

    SQL-JOIN全解析

    SQL-JOIN全解析 一、SQL JOIN的作用是什么? 二、四种JOIN的区别 三、如何使用各种join (一)准备测试数据 (二)左连接 (三)右连接 (四)内连接 (五)外连接 四、总结 一、SQL JOIN的作用是什么? SQL JOIN的作用就是把来自多个表的数据行,根据一定的规则连接起来,形成一张大的数据表。 In the general case, the conversion is performed such that this right join: 在解析器阶段,具有右外部连接的查询会被转换为仅包含左连接操作的相等查询 那么这个sql就是舍弃掉了为null的数据。 (三)右连接 ? 这个的用法和左连接正好相反,可以在脑子中想想一下。 不罗嗦了,直接看效果吧。

    3.7K41发布于 2020-10-26
  • 来自专栏云计算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

    24310编辑于 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时,可以省略表名后的列清单。 例,创建表ProductIns的语句: ```SQL CREATE TABLE ProductIns ( product_id CHAR(4) NOT NULL, 5:从其他表中复制数据 要学习该方法,我们首先得创建一张表。 厨房用具 | 11180 | 8590 (3 行记录) INSERT 语句的SELECT语句中,可以使用WHERE子句或者GROUP BY子句等任何SQLSQL Server PostgreSQL BEGIN TRANSACTION ● MySQL START TRANSACTION ● Oracle、DB2 无 例如,更新商品信息的事务: ● SQL

    3.1K70发布于 2018-04-04
  • 来自专栏数据库与编程

    Oracle LogMiner 核心 SQL 解析

    LogMiner在工作过程中大量依赖底层系统视图(如VLOGMNR_CONTENTS、SYSTEM.LOGMNR系列表)以及一系列精心设计的SQL查询。 本文将带你逐条深入了解LogMiner背后的关键SQL,揭开高效日志解析的秘密。 1. ; 目的:列出所有当前会话(LOGMNR_UID)中解析到的有效表。 重要性:解析DML操作(INSERT/UPDATE)时,需要精确还原列的定义,尤其是处理LOB、NUMBER、TIMESTAMP等特殊类型字段。 5. 解释: 每一行代表一个Redo日志中的变更事件; 包括事务ID(XID)、变更类型(operation_code)、实际SQLSQL_REDO)、表信息等; DML/ DDL/ 事务边界(START/

    35510编辑于 2025-04-27
  • 来自专栏AustinDatabases

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

    说到MySQL的读写分离,一言难尽就凭着BINLOG解析日志,产生REDO在从库的重新生成数据的方式,读写分离在MySQL中就不是一个好的方案,只能叫个方案。 产生并行的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

    8910编辑于 2026-03-12
  • 来自专栏用户10616523的专栏

    Socks 5 协议解析

    Socks5协议概述:Socks5协议是Socks协议家族中的一员,与其前身Socks4相比,引入了更多功能和协议支持。 Socks5协议结构:Socks5协议的通信流程通常包括几个关键步骤,如建立连接、认证方式选择、代理请求和数据传输等。文章将详细介绍每个步骤的结构和数据格式,包括握手协商阶段、认证阶段和数据传输阶段。 UDP支持和远程DNS解析:相比Socks4协议,Socks5协议引入了对UDP协议的支持,使得代理服务器可以中转UDP数据包。 此外,Socks5协议还可以在代理服务器上进行远程DNS解析,进一步增强了代理功能的灵活性和性能。 通过在Socks5协议之上使用加密协议,可以提供更高级别的数据保护和安全性。

    1.2K00编辑于 2023-06-14
  • 来自专栏chenssy

    【死磕Sharding-jdbc】---SQL解析-INSERT解析

    INSERT语法 分析insert解析之前,首先看一下mysql官方对insert语法的定义,因为SQL解析跟语法息息相关: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY 接下来分析sharding-jdbc是如何解析insert类型的SQL语句的,通过 SQLStatementresult=sqlParser.parse();得到SQL解析器后,执行AbstractInsertParser 中parse()方法解析insert sql,核心源码如下: @Overridepublic final DMLStatement parse() { lexerEngine.nextToken( -InsertValuesClauseParser.parse() 由parse()源码可知,insert解析5步就是调用 insertClauseParserFacade.getInsertValuesClauseParser ().parse(result);,即解析insert into sql中的value集合,封装到InsertStatement的conditions属性中,通过Conditions.add()源码可知

    1.5K20发布于 2018-08-16
  • 来自专栏爪哇缪斯

    源码解析:ThreadPoolExecutor(5

    ---- 四、 源码解析——addWorker(Runnable firstTask, boolean core) 看完execute方法的源码解析,我们发现,代码里的逻辑判断就是我们在【1.2> 线程池工作流程 但是,这只是第一层代码的解析,关键的逻辑,其实都在第二层addWork代码中。下面我们就来解开addWorker的真面目。 与它相似用法在ConcurrentHashMap中也出现过,如下所示: ---- 4.3> addWorkder的Part1解析 我们先看一下Part1的源码和注释: 在Part1中,首先还是从类型为 ---- 后面的内容,参见:源码解析:ThreadPoolExecutor(6)

    17310编辑于 2023-05-09
  • 来自专栏springboot

    Mybatis源码解析(四):sql语句及#{}、${}的解析

    动态sql如何进行的解析SQL 以上准备工作已完成,接下来开始解析工作 回到createSqlSource创建方法,进入builder.parseScriptNode();解析方法 parseDynamicTags:解析动态标签 将动态SQL标签中的SQL信息分别封装到不同的SqlNode 如下图:一个<select>标签分两部分,文本节点和元素节点;XNode node传递过来的正是此标签解析的对象 SQL语句中带有${ parser.parse(originalSql); } // 将解析之后的SQL信息,封装到StaticSqlSource对象中 // SQL字符串是带有? #{属性值}解析sql带?

    50610编辑于 2025-01-21
  • 来自专栏咸鱼学Python

    SQL | 44道经典 SQL 笔试题与答案解析

    作者:tomocat 来源:知乎 00 相关推荐 SQL | 数据分析面试必备SQL语句+语法 SQL | 开发人员必学的几点 SQL 优化点 接下来是是关于44道经典SQL测试题 01 建表语句 查询姓“李”的老师的个数; select count(distinct tid) as teacher_cnt from teacher where tname like '李%' 5. 统计每门课程的学生选修人数(超过5人的课程才统计)。 要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列 select cid ,count(sid) as cnt from sc group by cid having cnt>=5

    11.3K30发布于 2020-04-08
  • 来自专栏阿狐和柴柴

    SQL理论课-Class 5

    Class_5: 子查询2 select ENAME from EMP where salary = some (select salary from EMP where EMPNO = 30) and

    40410编辑于 2023-02-27
领券