SQLite 約束

約束是在表的數(shù)據(jù)列上強(qiáng)制執(zhí)行的規(guī)則玻粪。這些是用來限制可以插入到表中的數(shù)據(jù)類型窜管。這確保了數(shù)據(jù)庫中數(shù)據(jù)的準(zhǔn)確性和可靠性。

約束可以是列級或表級韧涨。列級約束僅適用于列牍戚,表級約束被應(yīng)用到整個表。

以下是在 SQLite 中常用的約束:

  • NOT NULL 約束:確保某列不能有 NULL 值氓奈。
  • DEFAULT 約束:當(dāng)某列沒有指定值時翘魄,為該列提供默認(rèn)值。
  • UNIQUE 約束:確保某列中的所有值都是唯一的舀奶。
  • PRIMARY Key 約束:唯一標(biāo)識數(shù)據(jù)庫表中的各行/記錄(主鍵)暑竟。
  • CHECK 約束: 確保某列中的所有值滿足一定條件。




NOT NULL 約束

默認(rèn)情況下育勺,列可以保存 NULL 值但荤。如果您不想某列有 NULL 值,那么需要在該列上定義此約束涧至,指定在該列上不允許 NULL 值腹躁。

NULL 與沒有數(shù)據(jù)是不一樣的,它代表著未知的數(shù)據(jù)南蓬。

實例

例如纺非,下面的 SQLite 語句創(chuàng)建一個新的表 COMPANY,并增加了五列赘方,其中 ID烧颖、NAME 和 AGE 三列指定不接受 NULL 值:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);




DEFAULT 約束

DEFAULT 約束在 INSERT INTO 語句沒有提供一個特定的值時,為列提供一個默認(rèn)值窄陡。

實例

例如炕淮,下面的 SQLite 語句創(chuàng)建一個新的表 COMPANY,并增加了五列跳夭。在這里涂圆,SALARY 列默認(rèn)設(shè)置為 5000.00。所以當(dāng) INSERT INTO 語句沒有為該列提供值時币叹,該列將被設(shè)置為 5000.00润歉。

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);




UNIQUE 約束

UNIQUE 約束防止在一個特定的列存在兩個記錄具有相同的值。在 COMPANY 表中套硼,例如卡辰,您可能要防止兩個或兩個以上的人具有相同的年齡。

實例

例如邪意,下面的 SQLite 語句創(chuàng)建一個新的表 COMPANY九妈,并增加了五列。在這里雾鬼,AGE 列設(shè)置為 UNIQUE萌朱,所以不能有兩個相同年齡的記錄:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL UNIQUE,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);




PRIMARY KEY 約束

PRIMARY KEY 約束唯一標(biāo)識數(shù)據(jù)庫表中的每個記錄。在一個表中可以有多個 UNIQUE 列策菜,但只能有一個主鍵晶疼。在設(shè)計數(shù)據(jù)庫表時,主鍵是很重要的又憨。主鍵是唯一的 ID翠霍。

我們使用主鍵來引用表中的行〈垒海可通過把主鍵設(shè)置為其他表的外鍵寒匙,來創(chuàng)建表之間的關(guān)系。由于"長期存在編碼監(jiān)督"躏将,在 SQLite 中锄弱,主鍵可以是 NULL,這是與其他數(shù)據(jù)庫不同的地方祸憋。

主鍵是表中的一個字段会宪,唯一標(biāo)識數(shù)據(jù)庫表中的各行/記錄。主鍵必須包含唯一值蚯窥。主鍵列不能有 NULL 值掸鹅。

一個表只能有一個主鍵,它可以由一個或多個字段組成拦赠。當(dāng)多個字段作為主鍵巍沙,它們被稱為復(fù)合鍵。

如果一個表在任何字段上定義了一個主鍵矛紫,那么在這些字段上不能有兩個記錄具有相同的值赎瞎。

實例

創(chuàng)建以 ID 作為主鍵的 COMAPNY 表的實例:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);




CHECK 約束

CHECK 約束啟用輸入一條記錄要檢查值的條件。如果條件值為 false颊咬,則記錄違反了約束务甥,且不能輸入到表。

實例

例如喳篇,下面的 SQLite 創(chuàng)建一個新的表 COMPANY敞临,并增加了五列。在這里麸澜,我們?yōu)?SALARY 列添加 CHECK挺尿,所以工資必須大于零:

CREATE TABLE COMPANY3(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    CHECK(SALARY > 0)
);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子编矾,更是在濱河造成了極大的恐慌熟史,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窄俏,死亡現(xiàn)場離奇詭異蹂匹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)凹蜈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門限寞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仰坦,你說我怎么就攤上這事履植。” “怎么了悄晃?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵玫霎,是天一觀的道長。 經(jīng)常有香客問我传泊,道長鼠渺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任眷细,我火速辦了婚禮拦盹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溪椎。我一直安慰自己普舆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布校读。 她就那樣靜靜地躺著沼侣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歉秫。 梳的紋絲不亂的頭發(fā)上蛾洛,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音雁芙,去河邊找鬼轧膘。 笑死,一個胖子當(dāng)著我的面吹牛兔甘,可吹牛的內(nèi)容都是我干的谎碍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼洞焙,長吁一口氣:“原來是場噩夢啊……” “哼蟆淀!你這毒婦竟也來了拯啦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤熔任,失蹤者是張志新(化名)和其女友劉穎褒链,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笋敞,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡碱蒙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年荠瘪,在試婚紗的時候發(fā)現(xiàn)自己被綠了夯巷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡哀墓,死狀恐怖趁餐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情篮绰,我是刑警寧澤后雷,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站吠各,受9級特大地震影響臀突,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贾漏,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一候学、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纵散,春花似錦梳码、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜜笤,卻和暖如春濒蒋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背把兔。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工沪伙, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人垛贤。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓焰坪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親聘惦。 傳聞我的和親對象是個殘疾皇子某饰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 約束是在表的數(shù)據(jù)列上強(qiáng)制執(zhí)行的規(guī)則儒恋。這些是用來限制可以插入到表中的數(shù)據(jù)類型。這確保了數(shù)據(jù)庫中數(shù)據(jù)的準(zhǔn)確性和可靠性黔漂。...
    元茜姑娘閱讀 426評論 0 6
  • 前言 上一篇我們研究了,sqlite數(shù)據(jù)庫在安卓中的使用减途,今天我們研究在window客戶端的使用酣藻。這篇文章是參考了...
    yzzCool閱讀 2,026評論 1 4
  • 來源sqlite3 進(jìn)入sqlite3數(shù)據(jù)庫命令行 .exit/.quit 退出sqlite3命令行 sqlite...
    onzing閱讀 837評論 2 0
  • 說明 本文是作者Lefe所創(chuàng),轉(zhuǎn)載請注明出處鳍置,如果你在閱讀的時候發(fā)現(xiàn)問題歡迎一起討論辽剧。本文會不斷更新。 正文 對于...
    Lefe閱讀 3,925評論 1 18
  • 什么是SQLite?數(shù)據(jù)庫存儲數(shù)據(jù)的步驟 ●SQLite是一款輕型的嵌入式數(shù)據(jù)庫,它占用資源非常的低,在嵌入式設(shè)備...
    飛行的貓閱讀 2,486評論 1 7