> For the complete documentation index, see [llms.txt](https://vikram-bajaj.gitbook.io/cs-gy-6083-principles-of-database-systems/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vikram-bajaj.gitbook.io/cs-gy-6083-principles-of-database-systems/main-1/sql/intermediate-sql/integrity-constraints.md).

# Integrity Constraints

An integrity constraint allows us to place constraints on data being entered into/updated in a relation.

They guard against accidental damage to the database, by ensuring that authorized changes to the database do not result in a loss of data consistency.

Some common integrity constraints:

* **NOT NULL**: the value for the attribute must not be null
* **UNIQUE**: the value of the attribute must be unique. The specification UNIQUE($$A\_1, A\_2, ..., A\_n$$) indicates that ($$A\_1, A\_2, ..., A\_n$$) form the candidate key
* **PRIMARY KEY**
* **CHECK (P)**: P is a predicate; used to check if a condition is satisfied
* **Referential Integrity**: this is needed when using foreign keys. It ensures that a value that appears in one relation for a given set of attributes also appears for a certain set of attributes in another relation
