1. 程式人生 > >MySQL表的約束

MySQL表的約束

1.空屬性
儘量保證定義表時,欄位不為空,資料為空就無法參與運算,需在定義欄位後加not null
2.預設值
某一列經常出現某個具體的值,可以在定義表結構是就指定預設值。
定義欄位後加 default 預設值
若預設值後不加not null 則插入值可以設定成null值,當沒有插入值時,就會自動填上預設值。

eg: create table tt2(
id int not null,
sex 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