数据库中的约束
目錄
- 啥是約束?
- 六大約束
- 添加列級約束
- 添加表級約束
- 修改表時添加約束
- 修改表時刪除約束
- 列約束和表約束對比
啥是約束?
約束含義: 一種限制,用于限制表中的數據,為了保證表中的數據的準確和可靠性。 添加約束的時機: 1.創建表時 2.修改表時六大約束
| NOT NULL | 非空 | 用于保證該字段的值不能為空。比如:姓名,學號等。 |
| DEFAULT | 默認 | 用于保證該字段有默認值。比如:性別。 |
| PRIMARY KEY | 主鍵 | 用于保證該字段的值具有唯一性,并且非空。比如學號,員工編號等。 |
| UNIQUE | 唯一 | 用于保證該字段的值具有唯一性,可以為空。比如座位號。 |
| CHECK | 檢查 | 檢查約束[mysql中不支持]比如年齡、性別。 |
| FOREIGN KEY | 外鍵 | 用于限制兩個表的關系,用于保證該字段的值必須來自于主表的關聯列的值在從表添加外鍵約束,用于引用主表中某列的值。比如學生表的專業編號,員工表的部門編號,員工表的工種編號。 |
主鍵和唯一的大對比:
| 主鍵 | 保證 | 不允許 | 至多有1個 | 可以,但是不推薦 |
| 唯一 | 保證 | 允許 | 可以有多個 | 可以,但是不推薦 |
外鍵的說明:
- 要求在從表設置外鍵關系
- 從表的外鍵列的類型和主表的關聯列的類型要求一致或兼容,名稱無要求
- 主表的關聯列必須是一個key(一般是主鍵或唯一)
- 插入數據時,先插入主表,再插入從表
刪除數據時,先刪除從表,再刪除主表。 - 外鍵是可以為空的,為空代表該列段尚未明確
添加列級約束
語法: 直接在字段名和類型后面追加約束類型即可。 只支持: 默認、非空、主鍵、唯一 CREATE TABLE 表名(字段名 字段類型 列級類型,........字段名 字段類型,表級約束 )添加表級約束
語法: 在各個字段的最下面 constraint 約束名 約束類型(字段名)除了非空,默認,其他的都支持修改表時添加約束
修改表時刪除約束
列約束和表約束對比
| 列級約束 | 列的后面 | 語法都支持,但外鍵沒有效果 | 不可以 |
| 表級約束 | 所有列的下面 | 默認和非空不支持,其他支持 | 可以(主鍵沒有效果) |
列級約束和表級約束的區別
本質上沒有啥太大的區別。 列級約束只能約束當前這一個列。 表級約束可以同時約束多個列。總結
- 上一篇: Linux关闭进程命令
- 下一篇: MySQL标识列