最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解數據庫之表的唯一、自增等七大約束

 更新時間:2023年09月04日 14:42:24   作者:honeyR  
真正約束字段的是數據類型,但是數據類型約束很單一,需要有一些額外的約束,更好的保證數據的合法性,從業(yè)務邏輯角度保證數據的正確性,本文就來介紹一下數據庫之表的唯一、自增等七大約束,感興趣的可以了解一下

真正約束字段的是數據類型,但是數據類型約束很單一,需要有一些額外的約束,更好的保證數據的合法性,從業(yè)務邏輯角度保證數據的正確性。今天我們一起使用一下主要的幾個約束,null/not null,default, comment, zero?ll,primary key,auto_increment,unique。

1、空屬性

有兩個取值,null(默認)和not null(此列屬性不允許為空,必須做數據插入)。

數據庫默認字段基本都是字段為空,但是實際開發(fā)時,盡可能保證字段不為空,因為數據為空沒辦法參與運算。

舉例使用null:

數據庫之表的唯一、自增等七大約束_comment ? ?

使用not null:

數據庫之表的唯一、自增等七大約束_zerofill ?_02

在tt1中我們將per_age設為not null,我們可以觀察到,

第一次插入數據時只給per_age設置了值,成功。

第二次,只給per_name設置了值,失敗。

2、默認值-default

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

eg,新建表如下(默認值一般與not null配合使用 ):

數據庫之表的唯一、自增等七大約束_自增長_03

插入如下數據,觀察結果:

數據庫之表的唯一、自增等七大約束_主鍵_04

所以,默認值的生效:數據在插入的時候不給該字段賦值,就使用默認值

我們看一下時間戳的默認值:

數據庫之表的唯一、自增等七大約束_自增長_05

(desc:查看表的結構)

注意,set和enum不允許設默認值。

3、列描述-comment

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

eg,新建表如下:

數據庫之表的唯一、自增等七大約束_comment ? ?_06

觀察上圖,我們用desc是查看不到comment的描述信息的。

我們學一條命令show(查看當前數據庫的描述信息),如下:

數據庫之表的唯一、自增等七大約束_unique_07

(\G是為了讓查看結果格式整齊)

這樣,肯定有人以為和注釋是一樣的,其實不然,comment不等同于注釋。

測試如下:

數據庫之表的唯一、自增等七大約束_zerofill ?_08

(注釋用– )

觀察到用desc兩者都看不到,我們用show試試:

數據庫之表的唯一、自增等七大約束_zerofill ?_09

可以看到注釋是看不出來的。

4、zerofill -自動填充0

如果某一數值列規(guī)定了zerofill,則自動把此列變?yōu)闊o符號整數。

若規(guī)定了zerofill的數據列,如果數據長度沒有達到規(guī)定長度,則在數據前自動填充0,

eg: int(5) zerofill 123 –>00123

舉例如下:

新建表:

數據庫之表的唯一、自增等七大約束_自增長_10

查看表結構:

數據庫之表的唯一、自增等七大約束_zerofill ?_11

可以看到此列變?yōu)闊o符號整數。

我們插入數據:

數據庫之表的唯一、自增等七大約束_comment ? ?_12

因為我們設置了5位,而數據只有3位,因此前兩次自動填充為0。

那如果數據大于5位呢?如下:

數據庫之表的唯一、自增等七大約束_comment ? ?_13

則沒有必要填充。

需要注意的是,zero?ll屬性只是設置了一種格式化輸出而已,數據庫內部存儲的還是本來的數。

我們可以用hex函數來觀察,如下:

數據庫之表的唯一、自增等七大約束_unique_14

5、主鍵約束 - primary key

主鍵用于唯一約束字段數據,使用主鍵約束的字段,不能為空,不能重復。主鍵所在的列為整數類型,一張表有且只有一個主鍵。主鍵有單主鍵和復合主鍵之分。

單主鍵

舉例如下:

數據庫之表的唯一、自增等七大約束_自增長_15

查看表結構,id的key值為PRI,id為主鍵

數據庫之表的唯一、自增等七大約束_zerofill ?_16

插入數據:

數據庫之表的唯一、自增等七大約束_comment ? ?_17

如上圖,第一次插入id相同,插入失敗,證明主鍵不能重復。

第二次插入成功。

復合主鍵

多個屬性組合起來不能重復 eg:1-101

舉例如下:

數據庫之表的唯一、自增等七大約束_unique_18

id-sushe為復合主鍵,如下,id和sushe的key值都為PRI.

數據庫之表的唯一、自增等七大約束_zerofill ?_19

插入數據:

數據庫之表的唯一、自增等七大約束_自增長_20

成功,插入了1-101即2-101兩組數據。

再插入數據,

數據庫之表的唯一、自增等七大約束_自增長_21

因為2-101重復,插入失敗。

刪除主鍵

alter table 表名 drop primary key;

我們以上例中tt7為例:

數據庫之表的唯一、自增等七大約束_zerofill ?_22

刪除后我們插入重復的數就可以了:

數據庫之表的唯一、自增等七大約束_comment ? ?_23

創(chuàng)建表以后追加主鍵

alter table 表名 add primary key(字段1);

注意:字段1不能為空,不能重復。

數據庫之表的唯一、自增等七大約束_主鍵_24

6、自增長-auto_increment

auto_increment:當對應的字段,不給值,會自動的被系統(tǒng)觸發(fā),系統(tǒng)會從當前字段中已經有的最大值+1操作, 得到一個新的不同的值。

注意:任何一個字段要自增長,前提是本身為索引,(key有值)、自增長必須為整數、一張表有且只能有一個自增長

主鍵和自增長搭配使用:

id+auto_increment:邏輯主鍵

舉例如下:

數據庫之表的唯一、自增等七大約束_comment ? ?_25

查看表結構可以看出來id為自增長。

插入數據:

數據庫之表的唯一、自增等七大約束_unique_26

可以看出自增值是從1開始的。

若我們設置了自增數值呢?

如下:

數據庫之表的唯一、自增等七大約束_zerofill ?_27

證明了系統(tǒng)會從當前字段中已經有的最大值+1操作, 得到一個新的不同的值。

那若我們刪掉我們設置的數呢?

數據庫之表的唯一、自增等七大約束_unique_28

現在只剩下1和2了,我們插入數據:

數據庫之表的唯一、自增等七大約束_comment ? ?_29

發(fā)現是接著之前最大的數的。

**因此,若指定自增數值后,以后的數依次為基礎。

若刪除指定列后,還是以最大值(已經達到的值)為基礎自增。**

7、唯一鍵-unique

一張表中有往往有很多字段需要唯一性,數據不能重復,但是一張表中只能有一個主鍵:唯一鍵就可以解決表中有多個字段需要唯一性約束的問題。

唯一鍵的本質和主鍵差不多,唯一鍵允許為空,但不能重復,一張表可以有多個字段設置唯一,而且可以多個為空,空字段不做唯一性比較,也就是說可以允許多個null值。

證明不能重復,舉例如下,id為唯一鍵:

數據庫之表的唯一、自增等七大約束_自增長_30

插入數據:

數據庫之表的唯一、自增等七大約束_主鍵_31

再插入:

數據庫之表的唯一、自增等七大約束_zerofill ?_32

插入失敗。

對于空值,插入:

數據庫之表的唯一、自增等七大約束_unique_33

再次插入id為空值的數據:

數據庫之表的唯一、自增等七大約束_主鍵_34

證明了空字段不做唯一性比較,可以允許多個null值。

到此這篇關于深入理解數據庫之表的唯一、自增等七大約束的文章就介紹到這了,更多相關數據庫七大約束內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

柳江县| 合山市| 雷山县| 兴宁市| 武义县| 鹤壁市| 务川| 区。| 弋阳县| 新野县| 陵水| 张家口市| 手游| 威远县| 石首市| 南丹县| 香格里拉县| 连云港市| 荆州市| 新建县| 嘉义县| 仁怀市| 石渠县| 万州区| 绍兴市| 长兴县| 龙井市| 河源市| 远安县| 嵩明县| 奉节县| 石首市| 舟山市| 图木舒克市| 三都| 华宁县| 天峨县| 南汇区| 太谷县| 霍山县| 凭祥市|