MySQL 數據類型及約束

MySQL數據類型

數據類型分類

MySQL支持多種類型,大致可以分爲三類:數值、日期/時間和字符串(字符)類型。

  • 數值類型
    在這裏插入圖片描述

  • 日期和時間類型
    在這裏插入圖片描述

  • 字符串類型
    在這裏插入圖片描述

char與varchar

  • char(L): 固定長度字符串,L是可以存儲的長度,單位爲字符,最大長度值可以爲255
  • varchar(L): 可變長度字符串,L表示字符長度,最大長度65535個字節

關於varchar(len),len到底是多大,這個len值,和表的編碼密切相關:
varchar長度可以指定爲0到65535之間的值,但是有1 - 3 個字節用於記錄數據大小,所以說有效字節數是65532。
當我們的表的編碼是utf8時,varchar(n)的參數n最大值是65532/3=21844(因爲utf中,一個字符佔用3個字節),如果編碼是gbk,varchar(n)的參數n最大是65532/2=32766(因爲gbk中,一個字符佔用2字節)。

MySQL表的約束

表的約束關鍵字

表的約束很多,這裏主要介紹如下幾個: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。

空屬性

兩個值:null(默認的)和not null(不爲空)

主鍵

主鍵:primary key用來唯一的約束該字段裏面的數據,不能重複,不能爲空,一張表中最多只能有一個主鍵;主
鍵所在的列通常是整數類型。

創建表的時候直接在字段上指定主鍵
id int unsigned primary key;

在創建表的時候,在所有字段之後,使用primary key(主鍵字段列表)來創建主鍵,如果有多個字段作爲主鍵,可以使用複合主鍵。
primary key(id, name) -- id和name爲複合主鍵

當表創建好以後,可以再次追加主鍵
alter table 表名 add primary key(字段列表)

刪除主鍵
alter table 表名 drop primary key;

自增長

auto_increment:當對應的字段,不給值,會自動的被系統觸發,系統會從當前字段中已經有的最大值+1操作,得到一個新的不同的值。通常和主鍵搭配使用,作爲邏輯主鍵。

自增長的特點:

  • 任何一個字段要做自增長,前提是本身是一個索引(key一欄有值)
  • 自增長字段必須是整數
  • 一張表最多只能有一個自增長
例:字段id設置爲主鍵自增長
id int unsigned primary key auto_increment

唯一鍵

一張表中有往往有很多字段需要唯一性,數據不能重複,但是一張表中只能有一個主鍵:唯一鍵就可以解決表中有多個字段需要唯一性約束的問題。
唯一鍵的本質和主鍵差不多,唯一鍵允許爲空,而且可以多個爲空,空字段不做唯一性比較。

例:
create table student(
	id int unique;
	name varchar(20);
);

外鍵

外鍵用於定義主表和從表之間的關係:外鍵約束主要定義在從表上,主表則必須是有主鍵約束或unique約束。當定義外鍵後,要求外鍵列數據必須在主表的主鍵列存在或爲null。

foreign key (字段名) references 主表(列)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章