MySQL自學篇(三),mysql自學

來源:互聯網
上載者:User

MySQL自學篇(三),mysql自學

MySQL資料類型介紹

MySQL支援多種資料類型,主要有數值類型、日期類型、字串類型

數值類型

MySQL主要提供的整數類型有:TINYINT/SMALLINT/MEDIUMINT/INT(INTEGER)/BIGINT

整數類型的屬性欄位可以添加AUTO_INCREMENT自增約束條件。

 

1、MySQL中整數類型

 

 

整數類型的取值範圍

 

 

2、浮點數類型和定點數類型

MySQL中使用浮點數和定點數表示小數。浮點數類型有兩種,單精確度浮點數(FLOAT)和雙精確度浮點數(DOUBLE)。定點類型只有DECIMAL。浮點類型和定點類型都可以用(M,N)來表示,其中M成為精度,表示總共的位元;N成為標度,表示小數的位元。

不論是定點還是浮點數,如果使用者指定的精度超出精度範圍,則會四捨五入進行處理

範例:

建立表test1,其中欄位x,y,z資料類型依次為FLOAT(5,1)/DOUBLE(5,1)/DECIMAL(5,1)向表中插入資料5.51,5.12,5.123

create table test1 

(

  x FLOAT(5,1),

  y DOUBLE(5,1),

  z DECIMAL(5,1)

);

 

插入資料:

 insert into test1 values (5.51,5.12,5.123);

 

查看資料:

select * from test1;

 

 

3、日期與時間類型

MySQL中有多種表示日期的資料類型,主要有:DATETIME,DATE,TIMESTAMP,TIME,YEAR。

 

A、YEAR

 

YEAR類型是一個單位元組類型用於表示年,在儲存是只要一個位元組。可以使用各種格式指定YEAR的值

(1)以4位字串或者4位元字格式表示的YEAR,範圍是1901-2155.輸入格式為:‘YYYY’或者YYYY。例如輸入‘2010’或2010

(2)以2位字串格式表示的YEAR,範圍是‘00’——‘99’。‘00’——‘69’範圍的值分別被轉換為2000—2069和1970—1999範圍的YEAR值。插入超過取值範圍的值將被轉換為2000

(3)以2位元字表示的YEAR,範圍1~99.1~69和70~99範圍的值分別被轉換為2001~2069和1970~1999範圍的YEAR值。0將被轉換為0000而不是2000

 

 

範例:

建立資料表test2,定義資料類型為YEAR的欄位y,插入2014,‘2014’,‘2166’

Insert into test2 values(2014),(‘2014’),(‘2166’);

 

 

B、TIME

TIME類型用在只需要時間資訊的值,在儲存時需要3個位元組。格式為‘HH:MM:SS’。HH表示小時;MM表示分鐘;SS表示秒。使用各種格式指定TI ME值。

(1)採用‘D HH:MM:SS’格式的字串。

也可以使用下面任何一種非嚴格的文法:‘HH:MM:SS’/‘HH:MM’/‘D HH:MM’/‘D HH’/‘SS’。這裡D表示是日,可以去0-34之間的值。插入資料庫時,D被轉換為小時儲存,格式為“D*24+HH”

(2)採用‘HHMMSS’格式的,沒有間隔符的字串或者HHMMSS格式的數值。

 

範例:

建立test3表,定義資料類型為TIME的欄位t,向其中插入‘11:05:05’,‘23:23’,‘2 10:10’,‘3 02’,‘10’。

 

insert into test3 values ('11:05:05'),('23:23'),('2 10:10');

 

C、DATE類型

DATE類型用在僅僅需要日期的時候,沒有時間部分,在儲存時需要3個位元組。日期格式為‘YYYY-MM-DD’

(1)以‘YYYY-MM-DD’或者‘YYYYMMDD’字串格式表示日期。

(2)以‘YY-MM-DD’或者‘YYMMDD’字串表示日期,在這裡YY表示兩位的年。‘00~69’範圍轉換為‘2000~2069’;‘70~99’範圍轉換為‘1970~1999’。

(3)以YY-MM-DD或者YYMMDD格式表示日期。與前面類似,00-69表示2000-2069;70-99轉換為1970-1999

(4)使用CURRENT_DATE或者NOW()插入當前系統日期。

 

範例:

建立資料表test4,定義資料類型DATE的欄位為d,插入‘YYYY-MM-DD’和‘YYYYMMDD’字串格式的日期

insert into test4 values ('2014-12-11'),(20141211);

 

插入當前系統時間:

insert into test4 values (current_date),(now());

 

 

D、DATETIME

DATETIME類型用在需要同時包含日期和時間的值。在儲存時需要8位元組。日期格式為‘YYYY-MM-DD HH:MM:SS’,在給DATETIME類型的欄位賦值時,可以使用字串類型或數字類型的資料插入。

(1)以‘YYYY-MM-DD HH:MM:SS’或者’YYYYMMDDHHMMSS’字串格式的值,其取值範圍‘1001-01-01 00:00:00’~‘9999-12-3 23:59:59’

(2)以‘YY-MM-DD HH:MM:SS’或者‘YYMMDDHHMMSS’字串格式表示日期。

(3)以YYYYMMDDHHMMSS或者YYMMDDHHMMSS的數字格式表示日期和時間

 

範例:

insert into test5 values ('2014-12-11 15:27:12'),('20141211152712'),(20141211152712);

 

 

 

E、TIMESTAMP

TIMESTAMP顯示格式與DATETIME相同,顯示寬度固定在19個字元,日期格式為YYYY-MM-DD HH:MM:SS,儲存時需要4位元組。但是TIMESTAMP列的取值範圍小於DATETIME的取值範圍,為‘1970-01-01 00:00:01’UTC ~‘2038-01-19 03:14:07’UTC。UTC為世界標準時間。

範例:

建立test7,定義資料類型為TIMESTAMP的欄位ts,向表中插入值‘19950101010101’,‘950505050505’,now().

 

insert into test6 values ('19950101010101'),(950505050505),(now());

 

 

 

4、字串類型

 

MySQL中字串類型指的:CHAR,VARCHAR,BINARY,VARBINARY,BLOB,TEXT,ENUM,SET

 

 

 

 

1、CHAR和VARCHAR類型

CHAR(M)為固定長度字串,在定義時指定字串列長。儲存時在右側填充空格以達到指定的長度。M表示列長,範圍0~255個字元。例如:CH AR(4)定義了一個固定長度的字串列,其包含的字元個數最大為4.當檢索到CHAR值時,尾部的空空格將被刪除。

 

 

 

VARCHAR(M)是長度可變的字串,M表示列最大長度,M的範圍0~65535。VARCHAR的最大實際長度由最長的行的大小和使用的字元集確定,而其實際佔用的空間為字串的實際長度+1。例如VARCHAR(50)定義了一個最大長度為50的字串。如果插入的字串只有10個字元,則實際儲存的字串為10個字串+一個結束字串。VARCHAR在值儲存和檢索時,尾部的空格仍保留。

 

 

2、TEXT類型

 

TEXT列儲存非二進位字串,如文章,評論等。當儲存或查詢TEXT列的值時,不刪除尾部空格。TEXT類型分為4中:TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT。不同的TEXT類型的儲存空間和資料長度不同。

(1)TINYTEXT最大長度為255字元的TEXT列

(2)TEXT最大長度為65535字元的TEXT列

(3)MEDIUMTEXT最大長度為16777215字元的TEXT列

(4)LONGTEXT最大長度為4294967295(4GB)字元的列

 

 

 

3、ENUM類型

ENUM是一個字串對象,其值為表建立時在列規定中枚舉的一列值。文法格式如下:

欄位名 ENUM(‘值1’,‘值2’...‘值n’)

欄位名指將要定義的欄位,值n指枚舉列表中的第n個值。ENUM類型的欄位在取值時,只能在指定的枚舉列表中取值,而且一次只能取一個。如果建立的成員中有空格時,其尾部的空格將自動被刪除。ENUM值在內部用整數表示,每個枚舉值均有一個索引:列表值所允許的成員值從1開始編號,MySQL儲存的就是這個索引編號。枚舉最多可以有65535個元素。

例如:定義ENUM類型的列(‘first’,’second’,’third’),該列可以取的值和每個值的索引如下:

索引

NULL

NULL

0

first

1

second

2

third

3





 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.