mixer: sql词法分析器设计】的更多相关文章

介绍 mixer希望在proxy这层就提供自定义路由,sql黑名单,防止sql注入攻击等功能,而这些的基石就在于将用户发上来的sql语句进行解析.也就是我最头大的词法分析和语法分析. 到现在为止,我只是实现了一个比较简单的词法分析器,用以将sql语句分解成多个token.而对于从token在进行语法分析,构建sql的AST,我现在还真没啥经验(编译原理太差了),急需牛人帮忙. 所以,这里只是简单介绍一下mixer的词法分析. tokenize 在很多地方,我们都需要进行词法分析,通常会有几种方式…
设计表格我觉得用PowerDesigner比起在SQL Server中设计表格简单快捷许多. 首先,我们新建一个Model(可以使用快捷键Ctrl + N) 在PowerDesigner中侧边栏有浮动小工具栏: 这都是我们设计的工具,然后点击表格Columns设计表格: 之后就设计表格就可以了. 就这样,一个表格就建成了. 表格之间的关系就可以直接用工具栏中的Reference来表示了:…
学习要点 SQL语句分类 DML语句 DML 查询语句 SQL语句分类 数据操纵语言(DML):用来操纵数据库中数据的命令.包括:SELECT.INSERT.UPDATE.DELETE. 数据定义语言(DDL):用来建立数据库.数据库对象和定义列的命令.包括:CREATE.DROP.ALTER. 数据控制语言(DCL):用来控制数据库组件的存取许可.权限等的命令.包括:GRANT.REVOKE. 其他语言元素:如流程控制语言.内嵌函数.批处理语句等. DML语句 INSERT语句 语法格式: I…
1.INSERT 调用PL/SQL 去insert的时候,没有使用super(),此时应当自己创建callable statement: 调用checkErrors()方法在执行 callable statement 处理异常后 protected void insertRow() {    try    {      String insertStmt = "BEGIN INSERT_RECORD( " +                                   &quo…
关系型数据库将数据库设计需要遵循的一些规则叫做“范式”,最基本的三个范式(1NF.2NF.3NF)简称三范式.第一范式是满足第二范式的基础,而第一.二范式又是满足第三范式的基础. 第一范式 表中的字段都是不可分解的原子性: 数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项.如果实体中的某个属性有多个值时,必须拆分为不同的属性 第二范式 首先要满足第一范式,然后确定非主键的属性要完全依赖于主键: 当表中的一个非主键的属性可能是一个独立的对象时,就不满足第二范式:如产…
数据库实际上是系统逻辑在磁盘上的固化,是信息河流的蓄水池. 数据库的表应有如下类型 1)类表.配置表.作为业务逻辑基本的名字,状态的定义,作为构建逻辑世界的最基础框架,解释框架的框架. 特点,数据不会很多,表也不会很多,大部分状态和类用不着专门用表来处理. 2)业务对象表.业务流程引擎中出现和活跃的各种对象.比如商城系统中可能会出现的订单表,商品表,顾客表,等等,含业务主体或业务主体的组陈部分.有时类表与业务表很难绝对区分,像淘宝的一切类别都是属性的做法,实际上类表就是业务表. 3)关系表,扩展…
http://blog.csdn.net/taijianyu/article/details/5945490 一:表中应该避免可为空的列: 二:表不应该有重复的值或者列: 三: 表中记录应该有一个唯一的标识符  在数据库表设计的时候,数据库管理员应该养成一个好习惯,用一个ID号来 唯一的标识行记录,而不要通过名字.编号等字段来对纪录进行区分.每个表都应该有一个ID列,任何两个记录都不可以共享同一个ID值.另外,这个ID值最 好有数据库来进行自动管理,而不要把这个任务给前台应用程序.否则的话,很容…
数据库设计 需求 表结构 字段类型.是否允许为null.是否有默认值 索引设计 数据库引擎的选择 根据产品原型分析,词性分析法,名词创建表或字段,动词表示关系. 数据存储:长期存储的数据, 1.主键:唯一.自增. 可以不用手动指定,mysql会默认生成自增主键: 不适合做主键:业务数据,比如mobile,id_card 2.表之间的关系:一个用户可以发布文章数?一对多,用户是一方,文章是多方 3.外键:多表之间没有外键,可以进行行连表查询吗? 可以作用:确保数据的完整性. 工作中:项目初期一般会…
第一范式(1NF) (必须有主键,列不可分) 数据库表中的任何字段都是单一属性的,不可再分 create table aa(id int,NameAge varchar(100)) insert aa values(1,''无限-女 '') 没有达到第一范式 create table aa(id int,name varcahr(10),age char(2)) insert aa values(1,''无限'',''女 '') 达到第一范式 第二范式(2NF) 数据库表中非关键字段对任一候选关…
1.根据空值(NULL)检索条件 select * from user where age is not null; //查询年龄为null的所有用户 2.使用IN进行范围对比查询 ,5的所有用户 ,5的所有用户 3.使用 BETWEEN AND 进行范围比较查询 ; //查询id在1和4之间的所有用户 ; //查询id不在1和4之间的所有用户 4.使用LIKE进行模糊匹配 百分号"%":表示0个或任意多个字符 下划线"_" :表示单个的任意一个字符 select…