日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

007_SQL约束

發布時間:2025/4/17 数据库 119 豆豆
生活随笔 收集整理的這篇文章主要介紹了 007_SQL约束 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. SQL約束用于規定表中的數據規則。如果存在違反約束的數據行為, 行為會被約束終止。

2. 約束可以在創建表時規定(通過 create table 語句), 或者在表創建之后規定(通過alter table語句)。

3. 在SQL中, 常用的有如下約束

3.1. not null: 指示某列不能存儲null值。

3.2. unique: 保證某列的每行必須有唯一的值。

3.3. primary key: not null和unique的結合。確保某列(或兩個列多個列的結合)有唯一標識, 有助于更容易更快速地找到表中的一個特定的記錄。

3.4. foreign key: 保證一個表中的數據匹配另一個表中的值的參照完整性。

3.5. check: 保證列中的值符合指定的條件。

3.6. default: 規定沒有給列賦值時的默認值。

4. not null約束

4.1. 在默認的情況下, 數據庫字段基本都是null值。但是實際開發時, 盡可能保證字段不為空, 因為數據為空沒辦法參與運算。null一般配合default使用: default null。

4.2. not null約束強制字段始終包含值。這意味著, 如果不向字段添加值, 就無法插入新記錄或者更新記錄。

4.3. 創建一個notNull表使用not null約束和null默認值。

4.4. 向notNull表中只插入name值, 會報錯提示:Field 'age' doesn't have a default value, 因為我們設置age為not null, 也沒有默認值。向notNull表中只插入age值, 會插入成功, 因為name默認是為空的。

4.5. 給name字段添加not null約束(其實就是修改列)。

4.6. 刪除name字段的not null約束(其實就是修改列)。

5. default約束

5.1. 如果某一種數據會經常性的出現某個具體的值, 可以在一開始就指定好, 在需要真實數據的時候, 用戶可以選擇性的使用默認值。

5.2. 創建一張defaultValue表, sex字段使用默認值。

5.3. 在插入數據的時候不給sex字段賦值, 就使用默認值。

5.4. 給name字段添加默認值約束。

5.5. 刪除name字段的默認值約束

6. unique約束

6.1. unique約束唯一標識數據庫表中的每條記錄。

6.2. 每個表可以有多個unique約束, 唯一鍵允許為空, 但不能重復, 空字段不做唯一性比較, 也就是說可以允許多個null值。

6.3. 唯一約束實際上也是一個索引。

6.4. 創建一個uniqueConstraints1表, 并在id字段使用唯一約束。

6.5. 創建一個uniqueConstraints2表, 并在id字段使用唯一約束, 約束名字為uc2。

6.6. 創建一個uniqueConstraints3表, 并在id和name字段使用唯一約束。

6.7. 創建一個uniqueConstraints4表, 并在id和name字段使用唯一約束, 約束名字為uc4。

6.8. 撤銷unique約束。

6.9. 添加unique約束。

6.10. 插入表數據, 唯一列可以插入null(因為我們也設置了允許為空), 多行數據可以有多個null。當插入相同值時, 就會報錯。

7. primary key約束

7.1. primary key約束唯一標識數據庫表中的每條記錄。

7.2. 主鍵列不能包含null值。

7.3. primary key約束擁有自動定義的unique約束。

7.4. 每個表都應該有一個主鍵, 并且每個表只能有一個主鍵。

7.5. 主鍵有單主鍵和復合主鍵之分。

7.6. 創建一個primaryKey1表, 并給id字段添加主鍵約束。

7.7. 創建一個primaryKey2表, 并給id字段添加主鍵約束, 約束名為pk2。

7.8. 創建一個primaryKey3表, 并給id和name字段添加主鍵約束。

7.9. 創建一個primaryKey4表, 并給id和name字段添加主鍵約束, 約束名為pk4。

7.10. 刪除主鍵約束。

7.11. 添加主鍵約束。

8. 自增長auto_increment

8.1. auto_increment會在新記錄插入表中時生成一個唯一的數字。

8.2. 一般使用主鍵和自增長搭配使用。

8.3. auto_increment對應的字段, 如果把一個NULL插入到一個AUTO_INCREMENT數據列里去, MySQL將自動生成下一個序列編號。

8.4. 默認地, auto_increment的開始值是1, 每條新記錄遞增1。

8.5. 創建autoIncrement1表, id是主鍵, 并且自動增長。

8.6. 插入幾條數據id字段都傳入NULL值, id會自動從1開始遞增。

8.7. 刪除數據, 從新插入, 自動增長列是從之前的最大值繼續開始增長的, 并不是從我們表中已有數據的值開始增長。說明MySQL自己維護了一個序列編號, 不受我們刪除數據的影響。

8.8. 設置自動遞增從100開始。

8.9. 插入數據, 查詢自動遞增從100開始的表數據。

8.10. 刪除字段的自動遞增(其實就是修改列)。

8.11. 給字段添加自動遞增(其實就是修改列)。

9. foreign key約束

9.1. 一個表中的foreign key指向另一個表中的unique key(唯一約束的鍵)。

9.2. foreign key約束能防止非法數據插入外鍵列, 因為它必須是它指向的那個表中的值之一。

9.3. 添加外鍵約束的同時會添加一個唯一約束。

9.4. 創建一個User表, id是主鍵。創建一個Orders表, id是主鍵, uid是外鍵, uid指向User表的id列。

9.5. 卸載外鍵約束。

9.6. 添加外鍵約束。

10. check約束

10.1. check約束用于限制列中的值的范圍。

10.2. 如果對單個列定義check約束, 那么該列只允許特定的值。

10.3. 創建一個Check1表, 給id列添加大于0約束。

10.4. 創建一個Check2表, 給id列添加大于0約束, 并且設置約束名為c2。

10.5. 創建一個Check3表, 給id列添加大于0和name列姓李約束。

10.6. 創建一個Check4表, 給id列添加大于0和name列姓李約束, 并且設置約束名為c4。

10.7. 刪除check約束。

10.8. 添加check約束。

11. 列描述comment

11.1. comment沒有實際含義, 專門用來描述字段, 會根據表創建語句保存, 用來給程序員或DBA來進行了解。

11.2. 創建commentDesc表, 使用comment進行字段描述。

11.3. 刪除name字段的comment描述(其實就是修改列)。

11.4. 添加name字段的comment描述(其實就是修改列)。

12. zerofill自動填充0

12.1. 如果某一數值列規定了zerofill, 則自動把此列變為無符號整數。如果數據長度沒有達到規定長度, 則在數據前自動填充0。只能用于約束數值類型。

12.2. 創建zeroFill表, age字段使用zerofill。

12.3. 插入數據, age的值是16, 不滿足11為長度, 使用0來填充。zerofill屬性只是設置了一種格式化輸出而已,數據庫內部存儲的還是本來的數。

12.4. 刪除age字段的零填充(其實就是修改列)。

12.5. 添加age字段的零填充(其實就是修改列)。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的007_SQL约束的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。