空與非空
create table tb2(
username varchar(20)not null,//不為空
age tinyint usignednull//預設為允許為空,此處的null可以不寫;tinyint是範圍在三位數之內的整數
);mysql自動編號(自增)
auto_increment
字段必須是數值型,小數字數必須為0
自動編號,且必須與主鍵(primary key)結合使用。
預設情況下,起始值為1,每次的增量為1。
primary key
主鍵約束,每張資料表只能存在乙個主鍵,主鍵保證記錄的唯一性,主鍵自動為not null。
當為primary key加上auto_increment自動增長時,可以不為primary key賦值。
primary key允許賦值,但不允許有重複的值。
unique key
唯一約束,唯一約束可以保證記錄的唯一性,字段可以為null(只能有乙個),每張資料表可以存在多個唯一約束。
(primary key是not null,且一張資料表只能有乙個)
default
預設值,當插入記錄時,如果沒有明確為字段賦值,則自動賦予預設值。後接預設的值,default 預設值。
(類似無參構造器)
外來鍵約束
例如資料表provinces的id為主鍵,
那麼資料表users新增外來鍵
pid 與id 的型別(包括有無符號位)相同,就可以新增外來鍵
foreign key (pid) references provinces (id)
provinces為父表,users為子表,
參照列為id,外來鍵列為pid
顯示索引show indexes from provinces
外來鍵約束的引數操作
變化:foreign key (pid) references provinces (id) on delete cascade
cascade:從父表刪除或更新且自動刪除或更新子表中匹配的行
附上建表語句:
父表:省份表
create
table provinces(
id smallint unsigned primary
key auto_increment,
pname varchar(20),
);
子表:
create
table users(
id smallint unsigned primary
key auto_increment,
usename varchar(10) not
null,
pid smallint unsigned,
foreign
key (pid) references provinces (id) on
delete
cascade;//新增外來鍵
);
cascade的作用:
例如我在父表中插入一條記錄(其id自動等於1)
insert provinces (pname) value('a')
在子表也插入一條對應的記錄
insert users (username,pid) value('rose',1)
當刪除父表中id為1的記錄時,外來鍵列種對應id=1的記錄將會全部刪除
其他的關鍵字的作用
實際開發中,我們很少使用物理的外來鍵約束,而是使用邏輯約束;無理的外來鍵約束只有innodb這種儲存引擎才會支援,myisam這種引擎就不支援物理的外來鍵約束。反過來說,當我們使用到的引擎為myisam時,只能使用邏輯外來鍵(即兩個表的設計的邏輯關係)。
MySql學習筆記 索引,外來鍵
索引由資料庫表中一列或多列組合而成,其作用是提高對錶中資料的查詢速度。索引是建立在表上的,是對資料庫表中一列或多列的值進行排序的一種結構。索引可以提高查詢的速度。通過索引,查詢資料時可以不必讀完記錄的所有資訊,而只是查詢索引列。否則,資料庫系統將讀取每條記錄的所有資訊進行匹配。例如,索引相當於新華字...
MySQL學習筆記(11) 外來鍵
foreign key,外面的鍵 鍵不在自己表中 如果a表中有乙個字段 非主鍵 指向b表的主鍵,那麼將該子段稱之為外來鍵。a表被稱為從表,b表被稱為主表。1.建立表的時候增加外來鍵 constraint 外鍵名 foreign key 外來鍵字段 references 主表 主鍵 例項 create...
mysql級聯刪除外來鍵約束 主外來鍵和外來鍵約束
主鍵 primary key 一列 或一組列 其值能夠唯一區分表中每個行 外來鍵 foreign key 外來鍵為某個表中的一列,它包含另乙個表的主鍵值,定義了兩個表之間的關係 右邊的departmentid是外來鍵。外來鍵約束是指用於在兩個表之間建立關係,需要指定引用主表的哪一列。on delet...