sqlite3主鍵,外來鍵

2022-07-13 12:09:08 字數 1467 閱讀 3560

//參考 

關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為乙個主鍵。

1.主鍵是能確定一條記錄的唯一標識

比如,一條記錄包括身份證號,姓名,年齡。

身份證號是唯一能確定這個人的,其他都可能有重複,所以,身份證號可以是主鍵。

主鍵:一般用於對資料的快速定位(索引作用)(在a表中建立乙個名為id的自增長的主鍵 create table if not exists a(id integer primary key autoincrement);)

2.外來鍵用於與另一張表的關聯。是能確定另一張表記錄的字段,用於保持資料的一致性。

外來鍵:對資料的增加或刪除加條件,滿足條件時才能更改(約束作用)(將資料庫中指定的兩個表的指定列關聯。create table if not exists b(a_id int,foreign key(a_id) references a(id) on delete cascade); 作用:將b表中的a_id列設為外來鍵且和a表中的id關聯。此處外來鍵是刪除限制,當刪除a表中id=1的行時,b表中所有a_id=1的行都會被刪除)《-級聯操作 還可以加上foreign key(roi_info_id) references roi_info(id) on update cascade 更新限制。

刪除:pragma foreign_keys=on; delete from a where id= 4;(刪除a表中id=4的行,表b中a_id=4的所有行同時刪除,需要在執行的sql語句中加上pragma foreign_keys=on;,因為sqlite3預設為關閉外來鍵限制的)

查詢語句理解:

int sqlite3_get_table(

sqlite3 *db, /* an open database */

const char *zsql, /* sql to be evaluated */

char ***pazresult, /* results of the query */

int *pnrow, /* number of result rows written here */

int *pncolumn, /* number of result columns written here */

char **pzerrmsg /* error msg written here */

); 引數

db:已經開啟的db的指標

zsql:sqlite3查詢語句

pazresult:所有符合查詢條件的資料的乙個陣列

pnrow:一共有(pnrow + 1)行(從0開始,第0行是表頭)

pncolumn:一共多少列(從0開始)

取最後一行最後一列的資料:pazresult[pnrow * pncolumn + pncolumn - 1]

使用sqlite3 模組操作sqlite3資料庫

python內建了sqlite3模組,可以操作流行的嵌入式資料庫sqlite3。如果看了我前面的使用 pymysql 操作mysql資料庫這篇文章就更簡單了。因為它們都遵循pep 249,所以操作方法幾乎相同。廢話就不多說了,直接看 吧。都差不多,首先匯入模組,然後建立連線,然後獲取游標物件,之後利...

mysql 主鍵 外來鍵

1 候選鍵 關係中的乙個屬性組,其值能唯一標識乙個元組,若從該屬性組中去掉任何乙個屬性,它就不具有這一性質了,這樣的屬性組稱作候選碼。比如人的自然屬性 身高,體重,年齡,指紋樣式.2 主鍵 當有多個候選碼時,可以選定乙個作為主碼,選定的候選碼稱主鍵。主鍵是能確定一條記錄的唯一標識 比如上面例子中的指...

主鍵與外來鍵

一 什麼是主鍵 外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中 某乙個屬性組 注意是組 能唯一標識一條記錄 該屬性組就可以成為乙個主鍵 比如 學生表 學號,姓名,性別,班級 其中每個學生的 學號是唯一的,學號就是乙個主鍵 課程表 課程編號 課程名,學分 其中課程編號 是唯一的,課程編號 就是...