程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 小貝_mysql建表以及列屬性

小貝_mysql建表以及列屬性

編輯:MySQL綜合教程

小貝_mysql建表以及列屬性


mysql建表以及列屬性

簡要:
一、建表原則
二、詳細的列屬性說明

 

一、建表原則

建表: 其實就是聲明列的過程,數據最終是以文件的形式放在硬盤(內存)

列: 不同的列類型占的空間不一樣. 選列的原則: 夠用,不浪費

 

二、列類型以及屬性說明

列類型有: 整形、浮點型、字符型、日期/時間型

2.1、整形

tinyint/smallint/mediumint/int/bigint

2.1.1、詳解tinyint 一個字節

[][][][][][][][]共8位

假設8為都為0 ==》 轉化為十進制 0

假設8為都為1 ==》 轉換為十進制 2^8-1

由於計算機也能夠存儲負數,並采用最高位為符號位

最高位為0代表正數 最高位為1代表負數

當最高位為0時:

[0][][][][][][][] => 0~2^7-1 轉化為十進制 0~127

當最高位為1時

[1][][][][][][][] => 0~-2^7 轉化為十進制 0~-128

字節

無符號

有符號

tinyint

1

0~255

-128~127

smallint

2

0~2^16-1

-2^15~2^15

medium

3

0~2^24-1

-2^23~2^23

int

4

0~2^32-1

-2^31~2^31

bigint

8

0~2^64-1

-2^63~2^63

2.1.2、實例

 

 

\

 

 

\

 

 

2.1.3、整形列可選屬性: not null unsigned zerofill

\

 

總結:

a、聲明整數型列需要0填充時,它一定是無符號的

b、進行0填充時,不會改變其大小值

 

2.2、浮點型

對於浮點列類型,在MySQL中單精度值使用4個字節,雙精度值使用8個字節。

float與decimal的區別:decimal更精確

 

\

2.3、字符型

char:定長char(M),M代表寬度,即可容納的字符數

varchar:變長char(M),M代表寬度,即可容納的字符數

區別:

a、效率方面看,char<=1 varchar<1

即char會有完全利用的情況,而varchar則不會。因為同CHAR對比,VARCHAR值保存時只保存需要的字符數,另加一個字節來記錄長度

b、針對尾部(從左往右的方向看),char會過濾尾部有空格的情況,而varchar不會。因為char存儲的字符少於定義的字符長度時,就會對尾部進行空格填充.進行展示時,再把尾部的空格去掉

案例:

CREATETABLE vc (v VARCHAR(4), c CHAR(4));

INSERTINTO vc VALUES ('ab ', 'ab ');

SELECTCONCAT(v, '+'), CONCAT(c, '+') FROM vc;

字節問題:

varchar(N), 這裡的N是指字符數,並不是字節數.占用的字節數與編碼有關

utf-8,一個漢字3字節 英文字母1字節

MySQL 5.0以上的版本:

1.一個漢字占多少長度與編碼有關:

UTF-8:一個漢字=3個字節

GBK:一個漢字=2個字節

2.varchar(n)表示n個字符,無論漢字和英文,Mysql都能存入n個字符,僅是實際字節長度有所區別

3.MySQL檢查長度,可用SQL語言:

select LENGTH(fieldname) from tablename來查看

2.4、日期與時間型

2.4.1、 year

 

\

 

總結

MySQL以YYYY格式檢索和顯示YEAR值。范圍是1901到2155。

可以指定各種格式的YEAR值:

· 四位字符串,范圍為'1901'到'2155'。

· 四位數字,范圍為1901到2155。

· 兩位字符串,范圍為'00'到'99'。'00'到'69'和'70'到'99'范圍的值被轉換為2000到2069和1970到1999范圍的YEAR值。

· 兩位整數,范圍為1到99。1到69和70到99范圍的值被轉換為2001到2069和1970到1999范圍的YEAR值。請注意兩位整數范圍與兩位字符串范圍稍有不同,因為你不能直接將零指定為數字並將它解釋為2000。你必須將它指定為一個字符串'0'或'00'或它被解釋為0000。

2.4.2、 time

MySQL以'HH:MM:SS'格式檢索和顯示TIME值(或對於大的小時值采用'HHH:MM:SS'格式)。TIME值的范圍可以從'-838:59:59'到'838:59:59'。小時部分會因此大的原因是TIME類型不僅可以用於表示一天的時間(必須小於24小時),還可能為某個事件過去的時間或兩個事件之間的時間間隔(可以大於24小時,或者甚至為負)。

2.4.3、 date

當你只需要日期值而不需要時間部分時應使用DATE類型。MySQL用'YYYY-MM-DD'格式檢索和顯示DATE值。支持的范圍是'1000-01-01'到 '9999-12-31'。

2.4.4、 datetime

總結:雖然mysql有時間與日期的類型。但在一般的開發過程中涉及到跟時間方面的列類型時,通常使用int即整形類型。主要考慮到開發方面的方便,而且整形效率高。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved