day037-1 MySQL資料庫的表的約束條件
阿新 • • 發佈:2018-12-16
本節內容:
1、介紹什麼是約束條件
2、not null(不能為空)與default(預設值)
3、unique(唯一)
4、primary key(主鍵,不為空且唯一)
5、auto_incerment(自增id序號)
6、foreign key(外來鍵,表之間的指向關係,關聯關係)
一、介紹什麼是約束條件
約束條件與資料型別的寬度一樣,都是可選引數
作用:用於保證資料的完整性和一致性
主要分為:
Mysql Copy 一些說明PRIMARY KEY (PK) 標識該欄位為該表的主鍵,可以唯一的標識記錄 FOREIGN KEY (FK) 標識該欄位為該表的外來鍵 NOT NULL 標識該欄位不能為空,即不可為null,但是可以為'',空字元並不是空 UNIQUE KEY (UK) 標識該欄位的值是唯一的 AUTO_INCREMENT 標識該欄位的值自動增長(整數型別,而且為主鍵) DEFAULT 為該欄位設定預設值,設定以後,當not null條件下,不輸入,就為預設值 UNSIGNED 無符號 ZEROFILL 使用0填充
1. 是否允許為空,預設NULL,可設定NOT NULL,欄位不允許為空,必須賦值
2. 欄位是否有預設值,預設的預設值是NULL,如果插入記錄時不給欄位賦值,此欄位使用預設值
sex enum('male','female') not null default 'male' age int unsigned NOT NULL default 20 必須為正值(無符號) 不允許為空 預設是20 3. 是否是key 主鍵 primary key 外來鍵 foreign key 索引 (index,unique...)
Python
Copy
二、not null與default
1、not null(不可空)
是否可空,null表示空,非字串,
not null – 不可空(指什麼都沒有輸入),但是空字元可以,
null – 可空,不輸入任何都可以
2、default(預設值)
預設值,建立列時可以指定預設值, 當插入資料時如果未主動設定,則自動新增預設值
3、輸入相關命令的示例及結論
create table tb2(
id int not null default 2, # int型別的,不可為空且設定了預設值
num int not null # 不可為空,但沒有設定預設值,預設值為null
);
# 1、非嚴格模式,如果int型別,不傳值,因null不是int型別,該處的值將預設為0;
mysql> insert into tb2(id,num) values (1,); # 只插入一條資料也是可以的
# 注意:即便是你只給一個欄位傳值了,那麼也是生成一整條記錄,
這條記錄的其他欄位的值如果可以為空,那麼他們就都是null空值,
如果不能為空,就會報錯。
# 2、嚴格模式,傳非int型別的值,該處的值也是0
mysql> insert into tb2(id,num) values (1,'疏影');
Mysql
Copy
綜合練習
mysql> create table student(
-> name varchar(20) not null, -> age int(3) unsigned not null default 18, -> sex enum('male','female') default 'male', -> hobby set('play','study','read','music') default 'play,music' -> ); mysql> desc student; +-------+------------------------------------+------+-----+------------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------------------------+------+-----+------------+-------+ | name | varchar(20) | NO | | NULL | | | age | int(3) unsigned | NO | | 18 | | | sex | enum('male','female') | YES | | male