資料庫的匹配插入字段值。
在系統互動時,業務表進行登記交易流水是最基礎也是極其重要的步驟,流水登記的質量直接影響著後續的業務。
一般我們在資料庫登記時,常用的操作是寫乙個sql,例如
insert into table_name (列1, 列2,...) values (值1, 值2,....)
我們將要登記的列逐個羅列出來,後面賦上對應的值。這種方式在資料庫欄位少的時候或者需要登記的字段少的時候是可以的,但是諸如表字段上百個時,這樣寫就很容易出錯並且也很費勁。那麼就需要改變一下插入資料的方式。
我下面寫的這種方式有個前提,就是我們需要提前做乙個欄位的對映,將其他系統送來的字段或者自己系統程式中使用的字段跟資料表字段進行對映,比如程式中姓名使用「name」字段表示,資料表中表示姓名的列名為」lname」,那麼我們提前就需要將」name」指向」lname」,將key進行重定向後的資料作為我們要插入的資料來源。需要注意的是最好將資料表中所有列均進行對映,這樣可以防止插入時漏列。
這種對映可以在程式中使用集合也可以配置在資料庫中均可。
做完前期的準備工作,進入正題:
1:通過sql查詢出要登記的表的字段及其字段資料型別
select colname, typename from syscat.columns where tabname = ''
2:遍歷查詢到的colname是否存在資料來源中,將存在的列儲存在乙個單獨的集合/容器裡。
3:在第2步的容器裡,根據key在資料來源容器中取到對應的值,在取值前,需要判斷資料來源中此key的資料型別是否是當前型別,防止插入的資料型別不匹配。
4:將值存放在另乙個容器或者與第2步的key容器處理成key-value形式。
5:格式化sql語句
「insert into %s (%s)values (%s)」%(tablename,key,value)
這樣我們就能不用做個對列進行值得匹配,而且能盡可能的將更多字段登記進去。
需要注意的是,這種做法非常依賴欄位的對映,在進行多個業務表的處理時,我們最好將功能相似的字段命名為同乙個名稱,在程式中同功能欄位也使用同乙個名稱,這樣可以減少對映工作量,而且更為準確。並且列對映時最好加上預設值,可以減少sql執行中的錯誤
插入資料表
3.1.1 插入表資料 一旦建立了資料庫和表,下一步就是向表裡插入資料。通過insert或replace語句可以向表中插入一行或多行資料。語法格式 insert low priority delayed high priority ignore into tbl name col name,valu...
MySQL 資料表插入記錄
建立完資料表之後可以檢視資料表的具體字段資訊 show columns from tb name 例如檢視上次建立的資料表的字段資訊 有了字段,當然要有記錄 不然只是一張空表 插入記錄 方法一 insert tb name column name,values val,tb name括號裡面跟的是欄...
資料表的完整性
每個表中有乙個必須要指定的字段,主要依賴主鍵約束 針對表中的某個字段進行特殊化限制,主要依賴剩餘的約束 表與表之間的一種特殊化關聯限制,主要依靠外來鍵約束 什麼是約束 使用約束 鍵的作用來維護資料表的完整性 約束有哪些 自增約束 非空約束 檢查約束 預設約束 唯一約束 主鍵約束 外來鍵約束 一般在設...