Các kiểu dữ liệu trong SQL

Thứ hai - 09/06/2025 00:01

Kiểu dữ liệu Boolean trong SQL chỉ là một trong số kiểu dữ liệu tiêu biểu của ngôn ngữ lập trình SQL. Ở bài viết này, hãy cùng nhau tìm hiểu những điều cần biết về các kiểu dữ liệu trong SQL nhé!

Dữ liệu trong lập trình là một phần không thể thiếu. Chính vì thế, khi tìm hiểu bất kỳ ngôn ngữ lập trình nào, bạn cũng cần phải biết tới các kiểu dữ liệu của chúng.

Kiểu dữ liệu SQL rất quan trọng trong cơ sở dữ liệu quan hệ. Nó đảm bảo dữ liệu được lưu trữ hiệu quả và chính xác. Kiểu dữ liệu xác định loại giá trị mà một cột có thể chứa, chẳng hạn như số, văn bản hoặc ngày. Hiểu Kiểu dữ liệu SQL rất quan trọng đối với quản trị viên cơ sở dữ liệu, nhà phát triển và nhà phân tích dữ liệu để thiết kế cơ sở dữ liệu mạnh mẽ, đồng thời, tối ưu hóa hiệu suất.

Ở bài viết này, chúng ta sẽ tìm hiểu tổng quan toàn diện về kiểu dữ liệu SQL, ý nghĩa của chúng và các ví dụ thực tế cho nhiều tình huống khác nhau, chẳng hạn như Số, Ngày và giờ, Ký tự, v.v.

Một kiểu dữ liệu đề cập tới kiểu dữ liệu có thể được lưu trữ trong một cột của một bảng database. Ví dụ dữ liệu số nguyên, dữ liệu ký tự, dữ liệu tiền tệ, dữ liệu ngày giờ, chuỗi nhị phân và nhiều hơn thế nữa.

Trong khi tạo một bảng database trong cơ sở dữ liệu, bạn cần xác định hai thuộc tính sau để định nghĩa một cột bảng:

  • Tên của cột
  • Kiểu dữ liệu của cột

Ví dụ, nếu muốn lưu trữ tên học sinh trong một cột, sau đó, bạn sẽ đặt tên cột, chẳng hạn như student_name và kiểu dữ liệu của nó sẽ là char(50). Điều đó có nghĩa nó có thể chứa một chuỗi ký tự lên tới 50 ký tự.

Kiểu dữ liệu này cung cấp hướng dẫn cho SQL hiểu loại dữ liệu được mong đợi bên trong mỗi bảng, từ đó, ngăn người dùng nhập bất kỳ dữ liệu không hợp lệ vào cột. Dưới đây là chi tiết những điều bạn cần biết về kiểu dữ liệu trong SQL.

Kiểu dữ liệu SQL là gì?

Kiểu dữ liệu trong SQL được dùng để xác định loại dữ liệu có thể dược lưu trong một cột của bảng như INT, CHAR, MONEY, DATETIME… Chúng cung cấp hướng dẫn cho SQL để hiểu kiểu dữ liệu được mong đợi bên trong từng cột. Ngoài ra, chúng cũng nhận diện cách SQL tương tác với dữ liệu được lưu trữ. Đặc tính datatype ngăn người dùng nhập dữ liệu không hợp lệ.

Ví dụ, nếu muốn một cột chỉ chứa các giá trị số nguyên, bạn có thể xác định kiểu dữ liệu là INT. SQL sẽ hiện một lỗi nếu có giá trị bất kỳ khác, không phải số nguyên được chèn vào cột đó.

Các kiểu dữ liệu MySQL (Phiên bản 8.0)

Trong MySQL có ba kiểu dữ liệu chính: chuỗi, số và ngày giờ.

Kiểu dữ liệu chuỗi

Kiểu dữ liệu Mô tả
CHAR(size) Một chuỗi độ dài CỐ ĐỊNH (có thể chứa các chữ cái, số và các ký tự đặc biệt). Tham số size chỉ định độ dài cột theo ký tự - có thể từ 0 đến 255. Mặc định là 1
VARCHAR(size) Một chuỗi độ dài BIẾN ĐỔI (có thể chứa các chữ cái, số và các ký tự đặc biệt). Tham số size chỉ định độ dài cột tối đa tính bằng ký tự - có thể từ 0 đến 65.535
BINARY(size) Bằng CHAR (), nhưng lưu trữ các chuỗi byte nhị phân. Tham số size chỉ định độ dài cột tính bằng byte. Mặc định là 1
VARBINARY(size) Bằng với VARCHAR (), nhưng lưu trữ các chuỗi byte nhị phân. Tham số size chỉ định độ dài cột tối đa tính bằng byte.
TINYBLOB Đối với BLOBs (Đối tượng lớn nhị phân). Độ dài tối đa: 255 byte
TINYTEXT Giữ một chuỗi có độ dài tối đa là 255 ký tự
TEXT(size) Giữ một chuỗi có độ dài tối đa là 65.535 byte
BLOB(size) Đối với BLOBs (Đối tượng lớn nhị phân). Lưu trữ lên đến 65.535 byte dữ liệu
MEDIUMTEXT Giữ một chuỗi có độ dài tối đa là 16.777.215 ký tự
MEDIUMBLOB Đối với BLOBs (Đối tượng lớn nhị phân). Lưu trữ lên đến 16.777.215 byte dữ liệu
LONGTEXT Giữ một chuỗi có độ dài tối đa là 4.294.967.295 ký tự
LONGBLOB Đối với BLOBs (Đối tượng lớn nhị phân). Chứa tới 4.294.967.295 byte dữ liệu
ENUM(val1, val2, val3, ...) Một đối tượng chuỗi chỉ có thể có một giá trị, được chọn từ danh sách các giá trị có thể có. Bạn có thể liệt kê tới 65.535 giá trị trong danh sách ENUM. Nếu một giá trị được chèn mà không có trong danh sách, một giá trị trống sẽ được chèn. Các giá trị được sắp xếp theo thứ tự nhập vào
SET(val1, val2, val3, ...) Một đối tượng chuỗi có thể có 0 hoặc nhiều giá trị, được chọn từ danh sách các giá trị có thể có. Bạn có thể liệt kê tối đa 64 giá trị trong danh sách SET

Kiểu dữ liệu số

Kiểu dữ liệu Mô tả
BIT(size) Một kiểu giá trị bit. Số lượng bit trên mỗi giá trị được chỉ định về kích thước (size). Tham số size có thể giữ giá trị từ 1 đến 64. Giá trị mặc định là 1.
TINYINT(size) Một số nguyên rất nhỏ. Phạm vi thông thường là từ -128 đến 127. Phạm vi Unsigned(*) là từ 0 đến 255. Tham số size chỉ định chiều rộng hiển thị tối đa (là 255)
BOOL Giá trị 0 được coi là sai, các giá trị khác 0 được coi là đúng.
BOOLEAN Bằng với BOOL
SMALLINT(size) Một số nguyên nhỏ. Phạm vi thông thường là từ -32.768 đến 32.767. Phạm vi Unsigned là từ 0 đến 65.535. Tham số size chỉ định chiều rộng hiển thị tối đa (là 255)
MEDIUMINT(size) Một số nguyên trung bình. Phạm vi thông thường là từ -8.388.608 đến 8.388.607. Phạm vi Unsigned là từ 0 đến 16.777.215. Tham số size chỉ định chiều rộng hiển thị tối đa (là 255)
INT(size) Một số nguyên trung bình. Phạm vi thông thường là từ -2.147.483.648 đến 2.147.483.647.  Phạm vi Unsigned là từ 0 đến 4.294.967.295. Tham số size chỉ định chiều rộng hiển thị tối đa (là 255)
INTEGER(size) Bằng INT(size)
BIGINT(size) Một số nguyên lớn. Phạm vi thông thường là từ -9.223.372.036.854.775.808 đến 9.223.372.036.854.775.807. Phạm vi Unsigned là từ 0 đến 18.446.744.073.709.551.615. Tham số size chỉ định chiều rộng hiển thị tối đa (là 255)
FLOAT(size, d) Một số có dấu thập phân không cố định. Tổng số chữ số được chỉ định trong tham số size, số chữ số sau dấu thập phân được chỉ định trong tham số d. Cú pháp này không được chấp nhận trong MySQL 8.0.17 và nó sẽ bị xóa trong các phiên bản MySQL trong tương lai.
FLOAT(p) Một số có dấu thập phân không cố định. MySQL sử dụng giá trị p để xác định xem nên sử dụng FLOAT hay DOUBLE cho kiểu dữ liệu kết quả. Nếu p từ 0 đến 24, kiểu dữ liệu sẽ trở thành FLOAT (). Nếu p từ 25 đến 53, kiểu dữ liệu trở thành DOUBLE ()
DOUBLE(size, d) Một số bình thường có dấu thập phân không cố định. Tổng số chữ số được chỉ định trong tham số size. Số chữ số sau dấu thập phân được chỉ định trong tham số d
DOUBLE PRECISION(size, d)  
DECIMAL(size, d) Một số có dấu thập phân chính xác. Tổng số chữ số được chỉ định trong tham số size. Số chữ số sau dấu thập phân được chỉ định trong tham số d. Số tối đa cho size là 65. Số lớn nhất cho d là 30. Giá trị mặc định cho size là 10. Giá trị mặc định cho d là 0.
DEC(size, d) Bằng với DECIMAL(size, d)

Lưu ýTất cả các kiểu dữ liệu số có thể có một tùy chọn bổ sung: UNSIGNED hoặc ZEROFILL. Nếu bạn thêm tùy chọn UNSIGNED, MySQL không cho phép các giá trị âm cho cột. Nếu thêm tùy chọn ZEROFILL, MySQL cũng tự động thêm thuộc tính UNSIGNED vào cột.

Kiểu dữ liệu ngày/giờ

Kiểu dữ liệu Mô tả
DATE Định dạng kiểu ngày tháng: YYYY-MM-DD. Phạm vi được hỗ trợ là từ '1000-01-01' đến '9999-12-31'
DATETIME(fsp) Định dạng ngày và giờ kết hợp: YYYY-MM-DD hh:mm:ss. Phạm vi được hỗ trợ là từ '1000-01-01 00:00:00' đến '9999-12-31 23:59:59'. Thêm DEFAULT và ON UPDATE trong định nghĩa cột để tự động khởi tạo và cập nhật cho ngày và giờ hiện tại
TIMESTAMP(fsp) Định dạng dấu thời gian. Giá trị TIMESTAMP được lưu trữ dưới dạng số giây kể từ giai đoạn Unix ('1970-01-01 00:00:00' UTC). Định dạng hiển thị sẽ là YYYY-MM-DD hh:mm:ss. Phạm vi được hỗ trợ từ '1970-01-01 00:00:01' UTC đến '2038-01-09 03:14:07' UTC. Có thể chỉ định tự động khởi tạo và cập nhật cho ngày và giờ hiện tại bằng cách sử dụng DEFAULT CURRENT_TIMESTAMP và ON UPDATE CURRENT_TIMESTAMP trong định nghĩa cột
TIME(fsp) Định dạng thời gian dưới dạng: hh:mm:ss. Phạm vi được hỗ trợ là từ '-838: 59: 59' đến '838: 59: 59'
YEAR Định dạng năm dưới dạng bốn chữ số. Các giá trị được phép ở định dạng bốn chữ số là từ 1901 đến 2155 và 0000. MySQL 8.0 không hỗ trợ năm ở định dạng hai chữ số.

Các kiểu dữ liệu SQL Server

Kiểu dữ liệu chuỗi

Kiểu dữ liệu Mô tả Kích thước tối đa Storage
char(n) Chuỗi ký tự có độ rộng cố định 8.000 ký tự Chiều rộng xác định
varchar(n) Chuỗi ký tự có độ rộng thay đổi 8.000 ký tự 2 byte + số ký tự
varchar(max) Chuỗi ký tự có độ rộng thay đổi 1.073.741.824 ký tự 2 byte + số ký tự
text Chuỗi ký tự có độ rộng thay đổi 2GB dữ liệu văn bản 4 byte + số ký tự
nchar Chuỗi Unicode có độ rộng cố định 4.000 ký tự Chiều rộng xác định x2
nvarchar Chuỗi Unicode có độ rộng thay đổi 4.000 ký tự  
nvarchar(max) Chuỗi Unicode có độ rộng thay đổi 536.870.912 ký tự  
ntext Chuỗi Unicode có độ rộng thay đổi 2GB dữ liệu văn bản  
binary(n) Chuỗi nhị phân chiều rộng cố định 8.000 byte  
varbinary Chuỗi nhị phân có độ rộng thay đổi 8.000 byte  
varbinary(max) Chuỗi nhị phân có độ rộng thay đổi 2GB  
image Chuỗi nhị phân có độ rộng thay đổi 2GB  

Kiểu dữ liệu số

Kiểu dữ liệu Mô tả Storage
bit Số nguyên có thể là 0, 1 hoặc NULL  
tinyint Cho phép các số nguyên từ 0 đến 255 1 byte
smallint Cho phép các số nguyên từ -32.768 đến 32.767 2 byte
int Cho phép các số nguyên từ -2.147.483.648 đến 2.147.483.647 4 byte
bigint Cho phép các số nguyên trong khoảng -9.223.372.036.854.775.808 đến 9.223.372.036.854.775.807 8 byte
decimal(p,s) Đã cố định độ chính xác và số tỷ lệ. Cho phép các số từ -1038 +1 đến 1038 -1.
Tham số p cho biết tổng số chữ số tối đa có thể được lưu trữ (cả bên trái và bên phải của dấu thập phân). p phải là giá trị từ 1 đến 38. Mặc định là 18.
Tham số s cho biết số lượng chữ số tối đa được lưu trữ ở bên phải của dấu thập phân. s phải là một giá trị từ 0 đến p. Giá trị mặc định là 0.
5-17 byte
numeric(p,s) Đã cố định độ chính xác và số tỷ lệ. Cho phép các số từ -1038 +1 đến 1038 -1.
Tham số p cho biết tổng số chữ số tối đa có thể được lưu trữ (cả bên trái và bên phải của dấu thập phân). p phải là giá trị từ 1 đến 38. Mặc định là 18.
Tham số s cho biết số lượng chữ số tối đa được lưu trữ ở bên phải của dấu thập phân. s phải là một giá trị từ 0 đến p. Giá trị mặc định là 0
5-17 byte
smallmoney Dữ liệu tiền tệ từ -214.748.3648 đến 214.748.3647 4 byte
money Dữ liệu tiền tệ từ -922.337.203.685.477.5808 đến 922.337.203.685.477.5807 8 byte
float(n) Dữ liệu số chính xác từ -1,79E + 308 đến 1,79E + 308. Tham số n cho biết trường nên giữ 4 hay 8 byte. float (24) giữ trường 4 byte và float (53) giữ trường 8 byte. Giá trị mặc định của n là 53. 4 hoặc 8 byte
real Dữ liệu số chính xác từ -3,40E + 38 đến 3,40E + 38 4 byte

Kiểu dữ liệu ngày/giờ

Kiểu dữ liệu Mô tả Storage
datetime Từ ngày 1-1-1753 đến ngày 31-12-9999 với độ chính xác 3,33 mili giây 8 byte
datetime2 Từ ngày 1-1-0001 đến ngày 31-12-9999 với độ chính xác 100 nano giây 6-8 byte
smalldatetime Từ ngày 1-1-1900 đến ngày 6-6-2079 với độ chính xác 1 phút 4 byte
date Chỉ lưu trữ một ngày. Từ ngày 1 tháng 1 năm 0001 đến ngày 31 tháng 12 năm 9999 3 byte
time Chỉ lưu trữ thời gian với độ chính xác 100 nano giây 3-5 byte
datetimeoffset Giống như datetime2 với việc bổ sung độ lệch múi giờ 8-10 byte
timestamp Lưu trữ một số duy nhất được cập nhật mỗi khi một hàng được tạo hoặc sửa đổi. Giá trị dấu thời gian dựa trên đồng hồ internal và không tương ứng với thời gian thực. Mỗi bảng chỉ có thể có một biến timestamp.  

Các kiểu dữ liệu khác

Kiểu dữ liệu Mô tả
sql_variant Lưu trữ lên đến 8.000 byte dữ liệu thuộc nhiều loại dữ liệu khác nhau, ngoại trừ text, ntext và timestamp
uniqueidentifier Lưu trữ số nhận dạng duy nhất trên toàn cầu (GUID)
xml Lưu trữ dữ liệu có định dạng XML. Tối đa 2GB
cursor Lưu trữ một tham chiếu đến một con trỏ được sử dụng cho các hoạt động cơ sở dữ liệu
table Lưu trữ một tập hợp kết quả để xử lý sau này

Các kiểu dữ liệu MS Access

Kiểu dữ liệu Mô tả Storage
Text Sử dụng cho văn bản hoặc kết hợp giữa văn bản và số. Tối đa 255 ký tự  
Memo Memo được sử dụng cho lượng văn bản lớn hơn. Lưu trữ lên đến 65.536 ký tự. Lưu ýBạn không thể sắp xếp trường dữ liệu kiểu ghi nhớ, tuy nhiên có thể tìm kiếm được dữ liệu bên trong chúng.  
Byte Cho phép các số nguyên từ 0 đến 255 1 byte
Integer Cho phép các số nguyên từ -32.768 đến 32.767 2 byte
Long Cho phép các số nguyên từ -2.147.483.648 đến 2.147.483.647 4 byte
Single Định dạng dấu phẩy động độ chính xác đơn. Sẽ xử lý hầu hết các số thập phân 4 byte
Double Định dạng dấu phẩy động độ chính xác đôi. Sẽ xử lý hầu hết các số thập phân 8 byte
Currency Sử dụng cho tiền tệ. Chứa tới 15 chữ số, cộng với 4 chữ số thập phân. Mẹo: Bạn có thể chọn đơn vị tiền tệ của quốc gia để sử dụng 8 byte
AutoNumber Các trường AutoNumber tự động cung cấp cho mỗi bản ghi số của riêng nó, thường bắt đầu từ 1 4 byte
Date/Time Sử dụng cho ngày và giờ 8 byte
Yes/No Trường logic có thể được hiển thị dưới dạng Yes/No, True/False hoặc On/Off. Trong code, sử dụng các hằng True và False (tương đương với -1 và 0). Lưu ýGiá trị Null không được phép trong các trường Yes/No 1 chút
Ole Object Có thể lưu trữ hình ảnh, âm thanh, video hoặc các BLOB khác (Đối tượng lớn nhị phân) lên đến 1GB
Hyperlink Chứa các liên kết đến các tệp khác, bao gồm cả các trang web  
Lookup Wizard Cho phép bạn nhập danh sách các tùy chọn, sau đó có thể chọn từ danh sách thả xuống 4 byte

Trong bài tiếp theo chúng ta sẽ tìm hiểu về các toán tử trong SQL.

 

Nguồn tin: Quantrimang.com:

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

  Ý kiến bạn đọc

THỐNG KÊ TRUY CẬP
  • Đang truy cập70
  • Máy chủ tìm kiếm6
  • Khách viếng thăm64
  • Hôm nay14,103
  • Tháng hiện tại25,433
  • Tổng lượt truy cập11,811,820
QUẢNG CÁO
Phan Thanh Phú
Quảng cáo 2
Liên kết site
Đăng nhập Thành viên
Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site
Thăm dò ý kiến

Bạn thấy Website cần cải tiến những gì?

Lịch Âm dương
Máy tính
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây