首页 > 数据库 >简化版本 SQL-Minus 解释器

简化版本 SQL-Minus 解释器

时间:2023-12-23 16:55:06浏览次数:91  
标签:__ 解释器 实现 list MetallicBrick SQL array main Minus

先扔一下我们伟大的助教提供的题面

注:以下做法仅供娱乐,大多数都十分复杂且低效,请尽量不要尝试。

CREATE TABLE

考虑实现一个 array<ValEx>

初始化时由于字段数未知,需要实现一个 list<ValEx> 来支持插入,最后将其转为 array<ValEx>

INSERT

考虑实现一个 vector<array<Val>>

需要实现一个 list<Val> 来支持插入,最后将其转为 array<Val>

另一种实现方式可以使用 array<vector<Val>>,即在字段列表后逐一 append 数据,这样可以省去 list<Val>

WHERE (<condition_clause>)

考虑对给出的条件子句构造一棵表达式树,每次递归求值。

建树后,进行一次类型推导判断是否 ERROR。

Parsing

为了保证 SYNTAX ERROR 返回及时,且内存利用充分,考虑动态构造上述的 list<>,并且随时准备报错并手动析构现有数据。

实现细节

尽量使用指针来做到动态构造、析构。

为了保持代码朴素,尽量减少不必要的封装,多使用裸露的 malloc 和 free。(指针类型自行推导)

目前的进度

neix@MetallicBrick:/cplcode$ cd projekt-01
neix@MetallicBrick:/cplcode/projekt-01$ ls
__main_discarded_0.c  __main_discarded_1.c

标签:__,解释器,实现,list,MetallicBrick,SQL,array,main,Minus
From: https://www.cnblogs.com/aliasRevir/p/sql-minus.html

相关文章

  • 无涯教程-PL/SQL - WHILE函数
    只要给定条件为真,PL/SQL编程语言中的WHILELOOP语句就会重复执行目标语句。WHILELOOP-语法WHILEconditionLOOPsequence_of_statementsENDLOOP;WHILELOOP-示例DECLAREanumber(2):=10;BEGINWHILEa<20LOOPdbms_output.put_line('......
  • 【MySQL】SQL通用语法、SQL分类、约束、数据库设计、多表查询、事务
    SQL通用语法以分号结尾,可以单行/多行书写SQL语句不区分大小写,关键字建议使用大写注释单行注释:--注释或#注释多行注释:/*注释*/SQL分类DDL:操作数据库、表等DML:对表中的数据进行增删改DQL:对表中的数据进行查询DCL:对数据库进行权限控制DDL:操作数据库、表等DDL-操作......
  • tdsql(mysql版)数据库参数修改
    首先考虑赤兔管理系统修改参数;如果在赤兔管理系统无法修改参数,则需要修改mysql的参数文件一、在赤兔管理系统修改参数:1.在赤兔管理台主界面,单击左侧菜单【实例管理】>单击所需实例ID>【数据库管理】>【数据库参数】,进入数据库参数子界面。2.勾选需要更改的参数,并在对应【当前......
  • WPF+SqlSugar+MVVM实现增删改查
    1、新建一个WPF应用(NETFramework)2、安装SqlSugarNuGet包3、在SqlSugar4.x下载代码生成器https://www.donet5.com/Doc/8/11374、在WPF中新建三个文件夹Models主要放实体类、Views主要放窗体、ViewModels主要是View逻辑的实现5、把生成的实体类放到Models文件夹内,在V......
  • 无涯教程-PL/SQL - nested IF-THEN-ELSE函数
    在PL/SQL编程中,将IF-ELSE语句嵌套通常是合法的,这意味着您可以在其中使用一个IF或ELSEIF语句另一个IF或ELSEIF语句。嵌套IF-THEN-ELSE-语法IF(boolean_expression1)THEN--executeswhenthebooleanexpression1istrueIF(boolean_expression2)......
  • 无涯教程-PL/SQL - LOOP函数
    基本的循环结构在LOOP和ENDLOOP语句之间包含语句序列。BasicLOOP-语法PL/SQL编程语言中基本循环的语法是-LOOPSequenceofstatements;ENDLOOP;在此,一个或多个语句的序列可以是单个语句或语句块,需要EXIT语句或EXITWHEN语句才能中断循环。BasicLOOP-......
  • 一个mysql语句的优化
    语句如下:selectcount(*)intocCountfromlaratecommisionawherebranchtype=3andriskcode=sRiskCodeanda.payyears=sPayYearsanda.PayYear=sPayYearanda.BANKCHANNEL=sAgentComanda.RATECOMSTATE='1'anda.AGENTSERIAL=sAgentSeriesanda......
  • MySQL 8.0.32 InnoDB ReplicaSet 配置和手动切换
    1.环境准备主库:192.168.137.4mytest3从库:192.168.137.5mytest4MySQL:8.0.322.配置ReplicaSet实例启动mysqlshell#mysqlsh--uriroot@localhost--socket=/abce/mysql_data/mysql.sockMySQLShell8.0.32Copyright(c)2016,2023,Oracleand/oritsaffiliat......
  • 【Linux】正则匹配SQL里面的时间 TIMESTAMP
    在使用plsql或者dbeaver的insertsql导出的时候通常日期格式的会导出为以下形式,我们通常将这些日期需要更新为sysdate或者to_char(sysdate,'YYYYMMDD')的形式,此时可以使用正则匹配来替换,以下列举了常见的两种时间场景:1.匹配TIMESTAMP'2023-12-2318:00:01:000000'通常创建时......
  • postgresql实例结构
    postgresql实例结构postgresql实例简介用来访问postgresql数据库一个实例对应一个数据库集簇由内存和后台进程组成postgresql初始化参数文件文件中有两种类型的参数1.显式:在文件中对参数进行设置2.隐式:文件中没有设置,使用postgres默认值可以存在多个初始化参数文......