關於Sqlite資料庫Update語句的一點介紹

2021-06-18 04:13:58 字數 1776 閱讀 4948

**:

sqlite資料庫中的update語句,你能了解多少呢?因為這種微型資料庫用到的語句非常少,所以可能我們不會經常的用到。但要想真正的玩轉sqlite這種微型資料庫,掌握這些語句的用法是非常重要的。本文我們就來介紹一下update語句的使用。

1.典型的update(支援)

update  

t1

set

column1=v1,

column2=v2

where

key=v3;

2.update…from(很不幸,sqlite是不支援的)

update  

t1

set

column1=t2.column1

from

t2,t1

where

t2.key=t1.key;

要進行表間更新update…from是必須的,居然sqlite不支援,有什麼別的辦法嗎?還確實有,替代方法有兩種:

首先,sqlite裡面有乙個新鮮玩意「insertorreplace」,跟mysql類似,這個結構能夠保證在存在的情況下替換,不存在的情況下更新,用這個機制就可以輕鬆實現update…from了。

insertorreplaceinto  

t1(key,column1,column2)

select

t2.key,t2.column1,t2.column2

from

t2,t1

where

t2.key=t1.key;

備註:這種方法要避免插入操作,首先要確保是依照主鍵執行的更新,如果where條件不是主鍵可能就有點麻煩了。

要是不是主鍵的更新怎麼辦能?另外還有其他的辦法嗎?我們在這中情況下只能向典型的update…where尋求幫助了,下面是乙個例子:

update  

t1

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);

下面舉乙個主從表的例子,乙個部門表,乙個成員表,成員表中的部門名稱和**是冗餘的資訊,以部門表中的部門名稱和**更新成員表中的冗餘資訊:

update  

userlogins

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...