你知道SQLite中有哪些約束嗎?
導讀 | SQLite 是一個軟體庫,實現了自給自足的、無伺服器的、零配置的、事務性的 SQL 資料庫引擎。SQLite 是在世界上最廣泛部署的 SQL 資料庫引擎。SQLite 原始碼不受版許可權制。 |
約束是在表的資料列上強制執行的規則。這些是用來限制可以插入到表中的資料型別。這確保了資料庫中資料的準確性和可靠性。
約束可以是列級或表級。列級約束僅適用於列,表級約束被應用到整個表。
以下是在 SQLite 中常用的約束。
- 1.NOT NULL 約束:確保某列不能有 NULL 值。
- 2.DEFAULT 約束:當某列沒有指定值時,為該列提供預設值。
- 3.UNIQUE 約束:確保某列中的所有值是不同的。
- 4.PRIMARY Key 約束:唯一標識資料庫表中的各行/記錄。
- 5.CHECK 約束:CHECK 約束確保某列中的所有值滿足一定條件。
預設情況下,列可以儲存 NULL 值。如果您不想某列有 NULL 值,那麼需要在該列上定義此約束,指定在該列上不允許 NULL 值。
NULL 與沒有資料是不一樣的,它代表著未知的資料。
例如,下面的 SQLite 語句建立一個新的表 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 約束在 INSERT INTO 語句沒有提供一個特定的值時,為列提供一個預設值。
例如,下面的 SQLite 語句建立一個新的表 COMPANY,並增加了五列。在這裡,SALARY 列預設設定為 5000.00。所以當 INSERT INTO 語句沒有為該列提供值時,該列將被設定為 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 約束防止在一個特定的列存在兩個記錄具有相同的值。在 COMPANY 表中,例如,您可能要防止兩個或兩個以上的人具有相同的年齡。
例如,下面的 SQLite 語句建立一個新的表 COMPANY,並增加了五列。在這裡,AGE 列設定為 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 約束唯一標識資料庫表中的每個記錄。在一個表中可以有多個 UNIQUE 列,但只能有一個主鍵。在設計資料庫表時,主鍵是很重要的。主鍵是唯一的 ID。
我們使用主鍵來引用表中的行。可透過把主鍵設定為其他表的外來鍵,來建立表之間的關係。由於"長期存在編碼監督",在 SQLite 中,主鍵可以是 NULL,這是與其他資料庫不同的地方。
主鍵是表中的一個欄位,唯一標識資料庫表中的各行/記錄。主鍵必須包含唯一值。主鍵列不能有 NULL 值。
一個表只能有一個主鍵,它可以由一個或多個欄位組成。當多個欄位作為主鍵,它們被稱為複合鍵。
如果一個表在任何欄位上定義了一個主鍵,那麼在這些欄位上不能有兩個記錄具有相同的值。
已經看到了我們建立以 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 約束啟用輸入一條記錄要檢查值的條件。如果條件值為 false,則記錄違反了約束,且不能輸入到表。
例如,下面的 SQLite 建立一個新的表 COMPANY,並增加了五列。在這裡,我們為 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) );
SQLite 支援 ALTER TABLE 的有限子集。在 SQLite 中,ALTER TABLE 允許使用者重新命名錶,或向現有表新增一個新的列。重新命名列,刪除一列,或從一個表中新增或刪除約束都是不可能的。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2718225/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 你知道SQLite中表示式有哪些嗎?SQLite
- 你知道是哪個是常見的約束中MySql不支援的嗎?MySql
- 你知道 Java 有哪些引用嗎?Java
- SQLite語句(一):表的操作和約束SQLite
- 你知道黑客的入侵方式都有哪些嗎?這些你知道幾個?黑客
- 你有玩過Docker嗎?你知道它有哪些運用場景嗎?Docker
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- Python主要涉及哪些領域?你都知道嗎?Python
- 你知道移動端的尺寸都有哪些嗎?
- 你知道入坑Linux需掌握哪些技能嗎?Linux
- 你會使用SQLite-Unions嗎?SQLite
- 常見的Linux系統有哪些?你知道嗎?Linux
- 4.14你知道入坑Linux需掌握哪些技能嗎?Linux
- 你知道 JavaScript 中的 Arguments 物件都有哪些用途嗎?JavaScript物件
- 網站建設的技巧都有哪些你知道嗎?網站
- Spark與Hadoop MapReduce相比,有哪些優點你知道嗎?SparkHadoop
- 人工智慧包括約束求解器嗎?人工智慧
- 牛市到來|你手中有幣可用嗎
- php怎麼知道指定目錄中有哪些檔案PHP
- Python有哪些就業方向 你知道Python的優勢嗎Python就業
- 你知道Laravel Collection的實際使用場景有哪些嗎?Laravel
- 想知道你的Mac可以執行哪些版本的macOS嗎?Mac
- 約束
- Javaweb-約束-外來鍵約束JavaWeb
- 約束你的git操作,讓你生無可戀。Git
- 你真的知道跨域嗎跨域
- 約束CONSTRAINTAI
- 03約束
- MySQL 約束MySql
- SQL約束SQL
- 【教程】你知道使用Sisulizer本地化資料庫有哪些方法嗎?資料庫
- jmeter學習指南之察看結果樹,你知道都有哪些功能嗎JMeter
- 你知道python常見的庫有哪些嗎?五大python庫Python
- 智慧電話營銷機器人有哪些特點?你知道嗎?機器人
- 你知道什麼是webAssembly嗎?它的運用場景有哪些?Web
- python中有哪些包Python
- Innodb中有哪些鎖?
- 初學asp你要知道哪些