MySQL學習筆記4:完整性約束限制欄位
完整性約束是對欄位進行限制,從而符合該欄位達到我們期望的效果比如欄位含有預設值,不能是NULL等
直觀點說:如果插入的資料不滿足限制要求,資料庫管理系統就拒絕執行操作
設定表的主鍵
主鍵能夠標識表中每條資訊的唯一性,如同身份證號碼和人的關係
人可以同名,但是身份證號碼卻是唯一的,
建立主鍵的目的在於快速查詢到表中的某一條資訊
單欄位主鍵
複製程式碼 程式碼如下:
mysql> create table student(
-> id int primary key,
-> name varchar(20),
-> sex boolean
-> );
Query OK, 0 rows affected (0.09 sec)
建立了三個欄位,其中id為主鍵
多欄位主鍵
多欄位主鍵由多個屬性組合而成,在屬性定義完之後統一設定主鍵
複製程式碼 程式碼如下:
mysql> create table student2(
-> id int,
-> course_id int,
-> score float,
-> primary key(id,course_id)
-> );
Query OK, 0 rows affected (0.11 sec)
student2表有三個欄位,其中id和course_id的組合可以確定唯一的一條記錄
設定表的外來鍵
表的外來鍵與主鍵是相對應的,比如表A中的id是外來鍵,表B中的id是主鍵
那麼就可以稱表B為父表,表A為子表
設定表外來鍵的作用在於建立與父表的聯絡,比如表B中id為123的學生刪除後,表A中id為123的記錄也隨著消失
這樣做的目的在於保證表的完整性
複製程式碼 程式碼如下:
mysql> create table student3(
-> id int primary key,
-> course_id int,
-> teacher varchar(20),
-> constraint fk foreign key(id,course_id)
-> references student2(id,course_id)
-> );
Query OK, 0 rows affected (0.12 sec)
這裡建立student3表,constraint後面的fk是外來鍵別名,foreign key也就是設定外來鍵的欄位
references後的內容表示父表,和父表中的主鍵
需要注意的是,父表中的主鍵不能為空,並且主鍵和外來鍵的資料型別要一致
設定表的非空約束
非空性很好理解,就是設定表中欄位的值不能為空(NULL)
如果在已經設定此約束性條件的欄位中插入空值,資料庫系統則會報錯
複製程式碼 程式碼如下:
mysql> create table student4(
-> id int not null,
-> name varchar(20),
-> sex boolean
-> );
Query OK, 0 rows affected (0.10 sec)
這裡的not null就是約束條件
設定表的唯一性約束
唯一性是指表中該欄位的值不能重複出現,設定表的唯一性約束
也就是給表中某個欄位加上unique
複製程式碼 程式碼如下:
mysql> create table student5(
-> id int unique,
-> name varchar(20)
-> );
Query OK, 0 rows affected (0.10 sec)
此處id欄位便不可重複
設定表的屬性值自動增加
auto_increment主要用於為表中插入的新記錄自動生成唯一的ID
一個表只能有一個欄位使用auto_increment約束
並且該欄位必須為主鍵的一部分
複製程式碼 程式碼如下:
mysql> create table student6(
-> id int primary key auto_increment,
-> name varchar(20)
-> );
Query OK, 0 rows affected (0.12 sec)
這裡的id是主鍵,並且會自動增加id值,比如1,2,3,4……
需要注意的是,auto_increment約束的值必須是整數型別
設定表中屬性的預設值
在表中插入一條新的記錄時,如果沒有為該欄位賦值
那麼資料庫系統會自動為該欄位賦上一條預設值
複製程式碼 程式碼如下:
mysql> create table student7(
-> id int primary key,
-> score int default 0
-> );
Query OK, 0 rows affected (0.10 sec)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/854/viewspace-2803940/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 欄位約束MySql
- MySQL學習筆記——建立與約束MySql筆記
- MySQL學習筆記之約束條件MySql筆記
- mysql修改表欄位學習筆記MySql筆記
- MySQL之完整性約束MySql
- 差分約束學習筆記筆記
- 5_MySQL 表的欄位約束MySql
- 修改oracle的約束欄位Oracle
- mysql新增約束語句筆記MySql筆記
- [演算法學習筆記] 差分約束演算法筆記
- Django模型之欄位與約束Django模型
- MySQL學習筆記之資料定義表約束,分頁方法總結MySql筆記
- 【MySql】mysql 欄位個數的限制MySql
- Xilinx約束學習筆記(二)—— 定義時鐘筆記
- mysql~資料完整性考慮~外來鍵約束MySql
- 《學習》6約束
- C#學習筆記-欄位、屬性、索引器C#筆記索引
- Mysql資料庫學習(三):表的crud操作、完整性約束、select各種查詢MySql資料庫
- PostgreSQL10.0preview功能增強-兩段式索引(約束欄位+附加欄位)SQLView索引
- 查詢oracle表的資訊(表,欄位,約束,索引)Oracle索引
- MySQL 約束MySql
- MySql學習筆記MySql筆記
- MySQL的欄位數量以及長度限制MySql
- 資料庫中欄位資料型別以及約束資料庫資料型別
- abap學習筆記-SAP欄位與表的對應關係筆記
- swift學習筆記《4》Swift筆記
- Rails 4 學習筆記AI筆記
- CCNA學習筆記4筆記
- vue學習筆記4Vue筆記
- Java學習筆記4Java筆記
- 堆溢位學習筆記筆記
- 學習筆記:數位dp筆記
- 數位DP 學習筆記筆記
- 【學習筆記】數位DP筆記
- 【記錄】MySQL 學習筆記MySql筆記
- [記錄] MySQL 學習筆記MySql筆記
- MySQL學習筆記2MySql筆記
- MySQL學習筆記:鎖MySql筆記