官术网_书友最值得收藏!

3.2 數據類型

為了能方便地管理和使用這些數據,需要對這些數據進行分類,形成各種數據類型。在創建表結構時需要確定表中每列的數據類型,確定了數據類型,系統才會在磁盤上開辟相應的空間,用戶也才能向表中填寫數據。

MySQL的數據類型主要分為以下三大類:數值類型、字符串類型和日期/時間類型。

1.數值類型

MySQL中的數值類型分為整型和浮點型兩種。而整型中又分為TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT五種;浮點型又分為FLOAT、DOUBLE、DECIMAL三種。數值類型及其取值范圍如表3-2所示。

表3-2 數值類型及其取值范圍

說明:

● 在整數類型后面加上UNSIGNED屬性,表示聲明的是無符號數。例如聲明一個INT UNSIGNED的數據列,其取值從0開始。

● 聲明整數類型時,可以為它指定一個顯示寬度(1~255),例如INT(3),指定顯示寬度為3個字符;如果沒有給它指定顯示寬度,MySQL會為它指定一個默認值。顯示寬度只是用于顯示,并不能限制取值范圍,例如可以把12345存入INT(3)數據列中。

● 在整數類型后面加上ZEROFILL屬性,表示在數值之前自動用0補齊不足的位數。例如將5存入一個聲明為INT(3) ZEROFILL的數據列中,查詢輸出時,輸出的數據將會是“005”。當使用ZEROFILL屬性修飾時,則自動應用UNSIGNED屬性。

● 聲明浮點數類型時,可以為它指定一個顯示寬度指示器和一個小數點指示器。例如FLOAT(7,2)表示顯示的值不超過7位數字,小數點后面帶有2位數字,存入的數據會被四舍五入,比如3.1415存入后的結果是3.14。

2.字符串類型

字符串類型可以用來存儲任何一種值,所以它是最基本的數據類型之一。MySQL支持以單引號或雙引號包含字符串,例如"MySQL"、'MySQL',它們表示的是同一個字符串。字符串類型及其取值范圍如表3-3所示。

表3-3 字符串類型及其取值范圍

說明:

● 對于變長字符串類型,其長度取決于實際存放在數據列中的值的長度,該長度在表3-3中使用L來表示,L以外所需要的額外字節為存放L本身的長度所需要的字節數。

● 在使用CHAR和VARCHAR類型時,當傳入的實際值的長度大于指定的長度時,字符串會被截取至指定長度;CHAR(n)和VARCHAR(n)表示可以存儲n個字符(n個中文字符或n個英文字符)。

● 在使用CHAR類型時,如果傳入實際值的長度小于指定長度,會使用空格將其填補至指定長度;而在使用VARCHAR類型時,如果傳入實際值的長度小于指定長度,實際長度即為傳入字符串的長度,不會使用空格填補。

● CHAR類型要比VARCHAR類型效率更高,但占用空間較大。

● BLOB和TEXT類型都可以存放任意大數據的數據類型,但兩者區別是BLOB類型區分大小寫,而TEXT類型不區分大小寫。

3.日期/時間類型

日期/時間類型是用來存儲諸如“2016-9-1”或者“12:30:00”的日期/時間的值。日期/時間類型及其取值范圍如表3-4所示。

表3-4 日期/時間類型及其取值范圍

說明:在存儲日期/時間類型的值時,也可以使用整型來存儲UNIX時間戳,這樣便于進行日期的計算。

4.NULL值

NULL意味著“沒有值”或“未知值”,可以將NULL值插入到數據表中并從表中檢索它們,也可以測試某個值是否為NULL,但能對NULL值進行算術計算。如果對NULL值進行算術運算,其結果還是NULL。在MySQL中,0或NULL都意味著假,而其余值都意味著真。

主站蜘蛛池模板: 元氏县| 左云县| 太湖县| 丰都县| 玉林市| 乡城县| 紫云| 嘉善县| 庐江县| 莆田市| 大田县| 靖安县| 灯塔市| 萝北县| 巴彦淖尔市| 洛阳市| 安丘市| 金寨县| 宁蒗| 桂平市| 福鼎市| 濮阳市| 东乡| 古丈县| 固始县| 抚宁县| 和政县| 潮州市| 满城县| 和平县| 太保市| 柘荣县| 普宁市| 铜川市| 赣榆县| 恩平市| 蒲城县| 赣州市| 普宁市| 靖远县| 岢岚县|