**:
sqlite資料庫中的update語句,你能了解多少呢?因為這種微型資料庫用到的語句非常少,所以可能我們不會經常的用到。但要想真正的玩轉sqlite這種微型資料庫,掌握這些語句的用法是非常重要的。本文我們就來介紹一下update語句的使用。
1.典型的update(支援)
updatet1
set
column1=v1,
column2=v2
where
key=v3;
2.update…from(很不幸,sqlite是不支援的)
updatet1
set
column1=t2.column1
from
t2,t1
where
t2.key=t1.key;
要進行表間更新update…from是必須的,居然sqlite不支援,有什麼別的辦法嗎?還確實有,替代方法有兩種:
首先,sqlite裡面有乙個新鮮玩意「insertorreplace」,跟mysql類似,這個結構能夠保證在存在的情況下替換,不存在的情況下更新,用這個機制就可以輕鬆實現update…from了。
insertorreplaceintot1(key,column1,column2)
select
t2.key,t2.column1,t2.column2
from
t2,t1
where
t2.key=t1.key;
備註:這種方法要避免插入操作,首先要確保是依照主鍵執行的更新,如果where條件不是主鍵可能就有點麻煩了。
要是不是主鍵的更新怎麼辦能?另外還有其他的辦法嗎?我們在這中情況下只能向典型的update…where尋求幫助了,下面是乙個例子:
updatet1
set
column1=(select columnx from t2 where t2.key=t1.key),
column2=(select columny from t2 where t2.key=t1.key),
wheret1.key=(select key from t2 where t2.key=t1.key);
下面舉乙個主從表的例子,乙個部門表,乙個成員表,成員表中的部門名稱和**是冗餘的資訊,以部門表中的部門名稱和**更新成員表中的冗餘資訊:
updateuserlogins
set
deptname=(select deptname from departments where departments.[deptid]=userlogins.[deptid]),
deptcode=(select deptcode from departments wheredepartments.[deptid]=userlogins.[deptid])
where
userlogins.[deptid]=(select[deptid]from departments where departments.[deptid]=userlogins.[deptid]);
關於sqlite資料庫的問題
關於sqlite資料庫的問題 首先初始化乙個資料庫,用for迴圈插入記錄。databasehelper dbhelper new databasehelper chushihua.this,test.db sqlitedatabase db dbhelper.getwritabledatabase ...
關於SQLite資料庫的那點事
1.sqlite屬於輕型的資料庫,事物有四種屬性,原子性,一致性,隔離性,永續性。2.在進行建立資料庫時候採用繼承sqliteopenhelper,然後實現其中的方法,在databasehelper方法中factory方法可以為null 3.在oncreate方法中執行sql語句建立資料庫。4.資料...
PG資料庫死鎖無法insert和update操作
目前由於系統公升級,資料庫系統從mssql2012變成開源的pg11.4。新環境出現資料無法入資料庫,操作人員無法修改訂單,需要查詢死鎖的點,早處理,最終還是要找到問題的sql解決。1.查詢activity的狀態等資訊 select t.pid,t.state,t.query,t.wait even...