SQL 資料型別

SQL Data Types

摘要:在本教程中,您將學習最常用的 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 同時使用 VARCHAR2VARCHAR

以下示例定義了一個具有 VARCHAR 資料型別的列:

first_name VARCHAR(50)Code language: SQL (Structured Query Language) (sql)

如果您在 first_name 列中儲存一個長度為 20 的值,資料庫系統會儲存該值而不會填充任何空格。

但是,如果您儲存的值長度大於 50,資料庫系統可能會報錯。

數字型別 #

數值儲存在數字型別的列中,通常稱為 NUMBERINTEGERREALDECIMAL

以下是 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 是小數位數,表示小數點後的數字位數。

ps 的最大值取決於每個資料庫系統的實現。

以下定義了一個 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)

整數資料型別的一些變體是 BIGINTSMALLINT

浮點資料型別 #

浮點資料型別表示近似數值。浮點小數的精度和小數位數是可變的,幾乎沒有限制。

以下是 FLOAT 資料型別的示例:

FLOAT
FLOAT(10)
FLOAT(50)
Code language: SQL (Structured Query Language) (sql)

日期和時間型別 #

日期和時間資料型別用於儲存與日期和時間相關的資訊。SQL 支援以下日期和時間資料型別:

  • DATE
  • TIME
  • TIMESTAMP

DATE 資料型別 #

DATE 資料型別表示日期值,包括年、月、日三個部分。通常,DATE 資料型別的範圍是從 0001-01-019999-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 資料型別表示時間戳值,它同時包含 DATETIME 值。

TIMESTAMP 值按以下形式指定:

TIMESTAMP 'YYYY-MM-DD HH:MM:SS'
Code language: SQL (Structured Query Language) (sql)

請注意,日期和時間部分之間有一個空格分隔符。

現在,您應該對 SQL 資料型別有了一個簡要的概述,包括字串資料型別、數字資料型別和日期時間資料型別。

本教程是否有幫助?
© .