作為后端開發者,編寫SQL語句對數據庫操作是家常便飯,時不時各種SQL語句滿天飛。在低代碼時代,數據維護有沒有更高效的方法?YonBuilder低代碼開發平台提供了YonQL能力,本文通過YonQL查詢帶大家領略YonBuilder數據維護的奧秘。
YonQL是啥?和SQL啥關系?
提到YonQL,大家本能的想到這是啥,和SQL有啥關系。首先,YonQL是YonBuilder標准版開發者查詢數據的橋梁。YonBuilder標准版是基於公有雲開發,標准版創建的數據表在平台的系統庫中,開發者不能直接操作數據庫數據,所以有了YonQL
另外,YonQL和SQL有很深的關聯。YonQL的語法類似於主流數據庫 My SQL, 有My SQL基礎的開發者可以輕松上手,對於沒有數據庫開發基礎的開發者也可以輕松掌握YonQL。
五個常見查詢語法詳解YonQL和SQL的區別
本文主要講解了YonQL的五個查詢語法:簡單查詢、分頁查詢、子查詢、關聯查詢、組合查詢。緊接着通過一個使用場景,讓開發者直觀感受YonQL的用法。
首先創建主、子、孫三個實體,包括了主、子、孫三張元數據,每個元數據里各分別創建兩個屬性:一個是code,一個是name,通過后端函數學習YonQL的語法。
創建主、子孫3個實體
第一個語法:簡單查詢,語法與MySQL基本一致。 通過select 指定表里的一些屬性,然后from這張表,這個表來自於主實體的URI,對應MySQL數據庫的表名,通過這張表非常方便的查詢。
圖:簡單查詢語句
YonQL和MySQL語法的區別是like 模糊查詢,MySQL可能只有一個like ,如果是雙側某個查詢,左右各加一個百分號 % 。如果是左側某個查詢,就在左側加1個百分號,同理,右側查詢也一樣。YonQL 把like 划分的更細致,分為left like(左查詢)和right like(右查詢),like關鍵字中不需要左右添加百分號,like就表示左右都是模糊查詢。
第二個語法:分頁查詢: 和MySQL的用法大同小異,也是select * from實體的URI代表的表名,排序、分組和MySQL的語法也是一樣的。區別點在於limit,MySQL中的limit第一個參數代表數據下標,第二個參數代表下標后面返回幾條數據。YonQL的Limit第一個參數代表底層已經計算好的分頁,2就是返回的頁數,后面第二個參數就是每頁要返回的數量。比如,limit 2,6,意思是計算完之后一頁有6條數據,一共有2頁 。2、6 相當於返回第二頁的數據,這樣開發人員不用寫一個算法計算這個分頁。
圖:分頁查詢語句
第三個語法:子查詢 ,語法和MySQL一樣的,就是兩個簡單查詢的一個組合。它的where條件就是一個子查詢,把這個子查詢的一個結果集作為外面這個表查詢的一個條件,進行數據過濾。
圖:子查詢語句
第四個語法:關聯查詢,邏輯思想和MySQL一樣,兩個元數據有關聯關系的,比如主子表,還有單選引用,A實體單選引用B實體,才可以使用YonQL的關聯查詢,通過On關鍵字進行關聯,返回的select字段,孫表和子表根據業務需求返回。
圖:關聯查詢語句
第五個語法:組合查詢,亮點是可以直接返回樹形結構的數據,比MySQL有優勢。MySQL查詢數據時只能把所有字段按照平級結構返回。如果頁面需要樹形結構,需要開發人員通過代碼實現,比如,把所有返回的數據進行遞歸,構造想要的樹形結構。YonQL組合查詢可以通過一條SQL去返回想要的樹形結構。
下面代碼中,Select from這張主表,Where條件是邏輯過濾,dr=0表示邏輯刪除,0代表有效數據,是業務庫中共同的屬性。
圖:組合查詢語句
查詢主表時先返回主表的id、Code和name,子表的數據是一個list對象和主表的字段是並列關系。需要在select結果集里面寫一個子查詢(不是真正的子查詢,是查詢子表中的屬性,放到主表中呈現樹形結構)。
圖:主、子、孫表的引用關系
如上圖所示,在主表下面創建一個子表的時候,子表保存並發布后,在主表中多出一個sonlist屬性。Sonlist有兩層含義:一個是作為主表中的一個屬性字段;另外可以作為子表的對象(也可以認為是一個邏輯子表),帶出子表的數據。孫子表的邏輯關系和主子表一樣,孫子表返回的屬性和子表的字段並列,呈現子孫結構。
圖:API測試
創建一個API函數,做一個API測試,模擬查詢一個SQL返回的結果集,給大家演示一下主子孫的數據結構。
應用場景:返回主子孫的數據展現到另外一個主子孫的單據上,用到這種組合查詢方式。
掌握了上述五中查詢方式的語法規則,即便是復雜的業務查詢,也可以靈活運用這5中查詢方式實現業務需求。
YonQL關聯查詢語法案例演示
通過YonQL關聯查詢數據表返回一個結果集,這個結果集對其他的微服務模塊都能用到,所以傾向於發布成一個API,方便大家調用,不用再編寫里面的邏輯。
首先關聯兩張表,建立黨員和黨組織兩條測試元數據,黨組織作為一個參照進行了發布,在黨員屬性中有一個字段單選引用了黨組織,建立了單選引用關系。
圖:創建黨員和黨組織兩條元數據
通過下方代碼可以看到YonQL的語法規則,如,select加上一些字段from剛剛創建的黨員表(查黨員的數據),用left join左關聯黨組織表,通過On關鍵字把黨組織ID和黨員ID進行關聯,這個接口需要傳入參數(參數是黨組織名稱,通過where條件對數據進行過濾),通過request獲取到傳入的黨組織參數。
圖:黨員和黨組織關聯查詢語句
為了做一個實例演示,提前創建了一個API函數測試調用SQL。
創建API測試函數
圖:輸入查詢的參數“三里屯黨組織”,右側顯示返回該組織下的黨員數據結果
通過上面的案例,重點給大家介紹了YonQL的用法,YonQL是后端函數的一個能力,使用的場景非常多,凡是用到后端函數的地方都可以使用YonQL。比如,在卡片的系統按鈕中添加一個規則,新增按鈕校驗數據庫中的字段手機和郵箱必填其一,需要一個查詢校驗,就可以根據校驗規則寫一個YonQL。
還有一種情況,可以在新添加的按鈕上創建后端函數,實現自己想要實現的能力。至此,本次YonQL查詢語法已經講解完畢。
開發者轉型的心得體會
從一個傳統后端開發者到低代碼技術支持專家,對於低代碼開發有三點體會:
1、受眾人群不同。低代碼開發平台面向的是更廣泛的人群,任何沒有編程基礎的都可以學會使用,不局限於專業的程序員,企業的運營、銷售、產品、實施、管理者都可以在短時間內學會搭建一個應用系統。
2、開發模式不同。低代碼開發平台最主要的作用就是搭建軟件系統的效率較快,不需要開發團隊完成基礎的框架設計,比傳統編程開發速度提升很多倍。
3、成本不同。對於一些規模較小,且沒有很大的技術團隊,或者公司某個業務部門不能 及時得到 IT部門協助,又需要 快速構建 應用程序來響應自己的需求,低代碼 是一個 不錯的方案。
總之,合理並且有效地運用低代碼,不僅可以讓我們工作更加高效,還能最大程度保證團隊目標的達成。
歡迎廣大開發者搜索並關注YonBuilder公眾號的系列課程,從認識低代碼到參與到低代碼開發的潮流中,共同推動低代碼時代的繁榮發展。