c 分析SQL語句中的表操作

2022-01-23 21:19:03 字數 740 閱讀 2535

最近寫了很多方向的總結和demo.基本包含了工作中的很多方面,畢竟c#已經高度封裝並且提供了很多類庫。前面已經總結了博文。最近2天突然感覺前面的sql分析阻元件的確麻煩,也注意看了下。為了方便大家學習交流。自己專門另外寫了乙個元件demo.用正規表示式獲取操作型別,其實原理很簡單,我簡單介紹下,算是為大家提供乙個思路或者說解決方案。

sql92是固定格式,每部分內容都是用空格隔離,所以拿到sql語句後,先用正規表示式規整sql,連續的空格都用乙個空格替換。然後按照sql關鍵字從左向右依次解析關鍵字用正規表示式,處理完成後就是按照關鍵字的乙個鍊錶。這樣由前面的關鍵字,再找到緊跟著的表,就是對錶的操作了。

例如:sql語句 select  *  from  m,這個語句,逐個獲取空格,然後檢查當前是否是關鍵字,不是則統一歸為字段。那麼from後面緊跟著的字段就是表。這樣就獲取了表操作。

簡單測試了幾個sql語句,都可以實現,當然肯定不是完整的,如果按照這個思路來解決問題需要修改什麼呢?

示例:string sql = "truncate table m";

sqlpaser.sqlpaser paser = new sqlpaser.sqlpaser();

paser.paser(sql);

var v=  paser.permission;//表操作

寫的demo已經上傳git

注意與前面的元件位址很近,少了乙個字母r。

我最近所有的c#元件demo都是vs2017完成的。

這樣就有表許可權了。

SQL語句中對基本表的操作(DDL)

每個資料庫管理系統 database management system,dbms 對sql語句的使用基本一致,但會有稍微的差別。sql語句分為dml,ddl和dcl三類,其中dml是資料操縱語言,包括了select update insert delete 等語句,ddl為資料定義語言,包括了 c...

sql 語句中可以並行的操作

並不是所有的sql operations都是可並行化的 不少人認為sort merge join這種排序合併操作是不能並行化的,這顯示是一種錯誤的認識。有了這樣乙個列表你就可以更好地理解oracle中的parallel execution了 parallel query table scan nes...

Sql語句中的DDL語句

資料庫模式定義語言ddl data definition language 是用於描述資料庫中要儲存的現實世界實體的語言。主要由create 新增 alter 修改 drop 刪除 和 truncate 刪除 四個關鍵字完成。create database 資料庫名 建立乙個資料庫 create d...