資料庫 MySQL表的約束

2021-08-31 09:31:06 字數 1793 閱讀 1308

1.空屬性

盡量保證定義表時,欄位不為空,資料為空就無法參與運算,需在定義欄位後加not null

2.預設值

某一列經常出現某個具體的值,可以在定義表結構是就指定預設值。

定義欄位後加 default 預設值

若預設值後不加not null 則插入值可以設定成null值,當沒有插入值時,就會自動填上預設值。

eg: create table tt2(

id int not null,

*** char(1) default 』男』 not null』

);

mysql的注釋: --注釋資訊

comment為列描述:用show creat table [table_name];語句可調出檢視。(select desc 語句下看不到)

3.zerofill(自動補0操作)

在int型定義欄位後加zerofill

int(11) --> 在沒有zerofill時11無意義,

eg: id int(4) zerofill -->insert into table_name values(12,12345);---> 0012 12345
4.主鍵

不能重複且不能為空,一張表有且只能有乙個主鍵,一般主鍵所在的列是整數型別。

建立表時在字段後面新增關鍵字 primary key,

定義表之後追加主鍵:alter table add primary key(字段列表)

刪除主鍵:alter table drop primary key;

復合主鍵:只要復合主鍵組合不同,則可以正確插入

eg: create table tt(

id int,

course char(10),

score int default 60 not null,

primary key(id,course) comment 'id和course作為復合主鍵'

);

5.自增長 auto_increatment

向表中插入資料時若不插入此列資料,系統會自動觸發,將當前欄位的最大值+1寫回資料庫,乙個表中只能設定乙個自增長。

自增長一般和主鍵搭配使用,作為邏輯主鍵。

eg:mysql> create table tt5(

-> id int primary key auto_increment,

-> name varchar(10) not null default ' '

-> );

自增長的特點:a)任何乙個欄位要做自增長,前提是本身是乙個索引(key 一欄有值 )b)自增長必須為整數c)有且僅有乙個自增長字段。

自增長值從當前值上增長,主鍵自增長值只要出現過,即便刪除了也不會再出現(從刪除的值上自增)

6.唯一鍵 unique key

在一張表中可以有多個字段設定唯一鍵,唯一鍵可以為空,且可以多個為空。

7.外來鍵

foreign key (從表列) references 主表(列)

使用外來鍵約束必須是在innodb的引擎下.

用於定義主表與從表之間的關係,外來鍵定義在從表上,關聯的主表的列必須是primary key或unique,要求外來鍵所在的列的資料必須在主表中存在或者為空。

若關聯的主表列未定則可以賦值null.

需先定義(賦值,刪除)主表,再定義(賦值,刪除)從表,

mysql 查詢語句 help contents

MySQL 資料庫表的約束

真正約束欄位的是資料型別,但是資料型別約束很單一,需要有一些額外的約束,更好的保證資料的合法性。某一種資料會經常性的出現某個具體的值,可以在一開始就指定好,在需要真實資料的時候,使用者可以選擇使用預設值。預設值生效後,資料在插入的時候不給該字段賦值,就會使用預設值 注意 set 和 enum不能設定...

資料庫 表約束

非空且唯一 方式一 create table userid number,constraint pk user primary key userid username varchar2 10 方式二 create table userid number primary key,username va...

資料庫表約束

sql check約束 check約束屬性列內容的取值範圍。如果對單列進行check約束則只會對單列的取值有效。如果對錶進行check約束則對整張表的所有欄位都進行限制。eg 在建立persons表示為id p列建立check約束。此約束的約束範圍為 id p列的取值範圍不得小於0,要是大於0的整數...