
摘要:在本教程中,您將學習最常用的 SQL 資料型別,包括字串資料型別、數字資料型別和日期時間資料型別。
在資料庫中,表的每一列都有一個特定的資料型別。資料型別指定了該列可以儲存的資料種類,例如字串、數值和日期時間值。
SQL 提供了一組基本的資料型別,您可以使用它們來定義表的列。在本教程中,我們將介紹最常用的 SQL 資料型別。
字串資料型別 #
字串資料型別表示字元資料,包括定長和變長字元型別。
定長字串資料型別 #
定長字串資料型別用於儲存固定長度的字串。以下是 SQL 定長字串資料型別的說明:
CHARACTER (n)Code language: SQL (Structured Query Language) (sql)在此語法中,n 表示該列可以儲存的字元數。n 引數是可選的。如果省略它,資料庫系統預設使用 1。
所以下面的宣告:
CHARACTERCode language: SQL (Structured Query Language) (sql)等同於下面的宣告:
CHARACTER (1)Code language: SQL (Structured Query Language) (sql)n 的最大值取決於資料庫系統的實現。
大多數資料庫系統使用 CHAR 而不是 CHARACTER 來表示定長字串資料型別。
CHAR (n)Code language: SQL (Structured Query Language) (sql)以下定義了一個定長字串資料型別的列,該列最多可以儲存五個字元:
column_name CHARACTER(5)Code language: SQL (Structured Query Language) (sql)如果您在上面的列中儲存一個長度為 2 的字串,那麼資料庫系統將向該字串填充三個空格,以確保列中的每個值都具有固定的五個字元的長度。
使用定長字串資料型別的一個例子是儲存州的縮寫,因為所有州的縮寫都是兩個字元,例如 CA、NY 和 TX。
變長字串或 VARCHAR #
要在列中儲存可變長度的字串,您需要使用變長字串資料型別。以下是 SQL 變長字串的語法:
CHARACTER VARYING (n)Code language: SQL (Structured Query Language) (sql)在此語法中,n 表示該列可以儲存的最大字元數。一些資料庫系統允許您指定該列可以儲存的位元組數。
大多數資料庫系統使用 VARCHAR 來表示變長字串資料型別,例如 MySQL 和 Microsoft SQL Server。Oracle 同時使用 VARCHAR2 和 VARCHAR。
以下示例定義了一個具有 VARCHAR 資料型別的列:
first_name VARCHAR(50)Code language: SQL (Structured Query Language) (sql)如果您在 first_name 列中儲存一個長度為 20 的值,資料庫系統會儲存該值而不會填充任何空格。
但是,如果您儲存的值長度大於 50,資料庫系統可能會報錯。
數字型別 #
數值儲存在數字型別的列中,通常稱為 NUMBER、INTEGER、REAL 和 DECIMAL。
以下是 SQL 的數字資料型別:
- BIT(n)
- BIT VARYING (n)
- DECIMAL (p,s)
- INTEGER
- SMALLINT
- BIGINT
- FLOAT(p,s)
- DOUBLE PRECISION (p,s)
- REAL(s)
小數型別 #
DECIMAL 資料型別用於在資料庫中儲存精確的數值,例如貨幣值。
以下是定義一個具有 DECIMAL 資料型別的列:
column_name DECIMAL (p,s)
Code language: SQL (Structured Query Language) (sql)在此語法中:
- p 是精度,表示有效數字的總位數。
- s 是小數位數,表示小數點後的數字位數。
p 和 s 的最大值取決於每個資料庫系統的實現。
以下定義了一個 salary (薪水) 列,總位數為 12 位,其中包括小數點後 4 位:
salary DECIMAL (12,4)
Code language: SQL (Structured Query Language) (sql)salary 列可以儲存最大為 99,999,999.9999 的數值。
整數 #
整數資料型別儲存整數,包括正數和負數。例如 10、0、-10 和 2010 都是整數。
大多數資料庫系統使用 INT 來表示整數型別。
INT
Code language: SQL (Structured Query Language) (sql)整數資料型別的一些變體是 BIGINT 和 SMALLINT。
浮點資料型別 #
浮點資料型別表示近似數值。浮點小數的精度和小數位數是可變的,幾乎沒有限制。
以下是 FLOAT 資料型別的示例:
FLOAT
FLOAT(10)
FLOAT(50)
Code language: SQL (Structured Query Language) (sql)日期和時間型別 #
日期和時間資料型別用於儲存與日期和時間相關的資訊。SQL 支援以下日期和時間資料型別:
- DATE
- TIME
- TIMESTAMP
DATE 資料型別 #
DATE 資料型別表示日期值,包括年、月、日三個部分。通常,DATE 資料型別的範圍是從 0001-01-01 到 9999-12-31。
日期值通常以以下形式指定:
'YYYY-DD-MM'
Code language: SQL (Structured Query Language) (sql)例如,以下 DATE 值表示 2020年12月31日:
'2020-12-31'
Code language: SQL (Structured Query Language) (sql)TIME 資料型別 #
TIME 資料型別儲存表示一天中某個時間的值,單位為時、分、秒。
TIME 值應按以下形式指定:
'HH:MM:SS'
Code language: SQL (Structured Query Language) (sql)可以使用一個可選的小數部分來儲存納秒,例如:
'10:59:30.9999'
Code language: SQL (Structured Query Language) (sql)TIMESTAMP 資料型別 #
TIMESTAMP 資料型別表示時間戳值,它同時包含 DATE 和 TIME 值。
TIMESTAMP 值按以下形式指定:
TIMESTAMP 'YYYY-MM-DD HH:MM:SS'
Code language: SQL (Structured Query Language) (sql)請注意,日期和時間部分之間有一個空格分隔符。
現在,您應該對 SQL 資料型別有了一個簡要的概述,包括字串資料型別、數字資料型別和日期時間資料型別。