Các kiểu dữ liệu trong SQL và những thông tin cần biết
SQL Server đang dần trở nên ưa chuộng bởi người dùng trong công nghệ hiện nay. Vì vậy hãy cùng Bizfly Cloud tìm hiểu về các kiểu dữ liệu trong SQL qua bài viết này nhé!
Các kiểu dữ liệu trong SQL server là gì?
Kiểu dữ liệu xác định loại giá trị mà cột dữ liệu đó chứa: dữ liệu nguyên, dữ liệu ký tự, dữ liệu tiền tệ, dữ liệu ngày tháng và thời gian, chuỗi nhị phân,...
Mỗi cột trong bảng cơ sở dữ liệu được yêu cầu phải có tên và kiểu dữ liệu.
Một SQL developer phải quyết định loại dữ liệu nào sẽ được lưu trữ bên trong mỗi cột khi tạo bảng. Kiểu dữ liệu là một hướng dẫn giúp SQL hiểu loại dữ liệu nào ở bên trong mỗi cột và nó cũng xác định cách SQL sẽ tương tác với dữ liệu được lưu trữ.
Lưu ý:
Các kiểu dữ liệu có thể có các tên khác nhau trong cơ sở dữ liệu khác nhau. Và ngay cả khi trùng tên nhau thì kích thước và các chi tiết bên trong vẫn có thể khác nhau! Vì vậy bạn hãy luôn nhớ kiểm tra tài liệu!
>> Tìm hiểu thêm: Vài điều cơ bản về SQL là gì?
Các kiểu dữ liệu trong MySQL
Trong MySQL có ba loại dữ liệu chính: văn bản (text), số (number) và ngày tháng (date).
1. Loại dữ liệu kiểu text
CHAR(size): Lưu trữ một chuỗi có độ dài cố định (có thể chứa chữ cái, số và ký tự đặc biệt). Kích thước cố định được xác định trong dấu ngoặc đơn. Có thể lưu trữ tối đa 255 ký tự.
VARCHAR(size): Lưu trữ một chuỗi có độ dài thay đổi (có thể chứa chữ cái, số và ký tự đặc biệt). Kích thước tối đa được chỉ định trong dấu ngoặc đơn. Có thể lưu trữ tối đa 255 ký tự.
Lưu ý: Nếu bạn đặt giá trị lớn hơn 255, giá trị này sẽ được chuyển thành loại TEXT.
TINYTEXT: Lưu trữ một chuỗi có độ dài tối đa 255 ký tự.
TEXT: Lưu trữ một chuỗi có độ dài tối đa 65.535 ký tự
BLOB: Đối với BLOB (Binary Large OBjects). Lưu trữ tối đa 65.535 byte dữ liệu.
MEDIUMTEXT: Lưu trữ một chuỗi có độ dài tối đa 16,777,215 ký tự.
MEDIUMBLOB: Đối với BLOB (Binary Large OBjects). Lưu trữ tối đa 16.777.215 byte dữ liệu.
LONGTEXT: Lưu trữ một chuỗi có độ dài tối đa là 4,294,967,295 ký tự.
LONGBLOB: Đối với BLOB (Binary Large OBjects). Lưu trữ lên đến 4.294.967.295 byte dữ liệu.
ENUM(x,y,z,etc.): Cho phép bạn nhập danh sách các giá trị có thể có. Bạn có thể liệt kê tối đa 65535 giá trị trong danh sách ENUM. Nếu một giá trị được chèn vào không có trong danh sách, một giá trị trống sẽ được chèn vào.
Lưu ý: Các giá trị được sắp xếp theo thứ tự bạn nhập vào. Bạn nhập các giá trị có thể có trong định dạng này: ENUM ('X', 'Y', 'Z').
SET: Tương tự như ENUM, trừ đặc điểm SET có thể chứa tối đa 64 list items và có thể lưu trữ nhiều hơn một lựa chọn.
2. Loại dữ liệu kiểu số (number)
TINYINT (size): -128 đến 127 thông thường. 0 đến 255 UNSIGNED*. Số lượng chữ số tối đa có thể được chỉ định trong dấu ngoặc đơn.
SMALLINT(size): -32768 đến 32767 thông thường. 0 đến 65535 UNSIGNED*. Số lượng chữ số tối đa có thể được chỉ định trong dấu ngoặc đơn.
MEDIUMINT(size): -8388608 đến 8388607 thông thường. 0 đến 16777215 UNSIGNED*. Số lượng chữ số tối đa có thể được chỉ định trong dấu ngoặc đơn.
INT(size): -2147483648 đến 2147483647 thông thường. 0 đến 4294967295 UNSIGNED*. Số lượng chữ số tối đa có thể được chỉ định trong dấu ngoặc đơn.
BIGINT(size): -9223372036854775808 đến 9223372036854775807 thông thường. 0 đến 18446744073709551615 UNSIGNED*. Số lượng chữ số tối đa có thể được chỉ định trong dấu ngoặc đơn.
FLOAT(size,d): Một số nhỏ có dấu thập phân không cố định (floating decimal point). Số lượng chữ số tối đa có thể được chỉ định trong tham số size. Số chữ số tối đa ở bên phải dấu thập phân được chỉ định trong tham số d.
DOUBLE(size,d): Một số lớn có dấu thập phân không cố định. Số lượng chữ số tối đa có thể được chỉ định trong tham số size. Số chữ số tối đa ở bên phải dấu thập phân được chỉ định trong tham số d.
DECIMAL(size,d): Một DOUBLE được lưu trữ dưới dạng một chuỗi, cho phép một dấu thập phân cố định. Số lượng chữ số tối đa có thể được chỉ định trong tham số size. Số chữ số tối đa ở bên phải dấu thập phân được chỉ định trong tham số d.
*Các kiểu số nguyên có một tùy chọn phụ gọi là UNSIGNED. Thông thường, số nguyên đi từ giá trị âm sang giá trị dương. Việc thêm thuộc tính UNSIGNED sẽ dịch chuyển phạm vi đó lên để nó bắt đầu bằng 0 thay vì một số âm.
3. Loại dữ liệu kiểu ngày (date)
DATA(): Một ngày. Định dạng: YYYY-MM-DD
Lưu ý: Phạm vi được hỗ trợ là từ '1000-01-01' đến '9999-12-31'.
DATETIME(): *Kết hợp ngày và giờ. Định dạng: YYYY-MM-DD HH:MI:SS
Lưu ý: Phạm vi được hỗ trợ là từ '1000-01-01 00:00:00' đến '9999-12-31 23:59:59'
TIMESTAMP(): *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: YYYY-MM-DD HH:MI:SS
Lưu ý: Phạm vi được hỗ trợ là từ '1970-01-01 00:00:01' UTC đến '2038-01-09 03:14:07' UTC
TIME(): Thời gian. Định dạng: HH:MI:SS
Lưu ý: Phạm vi được hỗ trợ là từ '-838: 59: 59' đến '838: 59: 59'
YEAR(): Một năm ở định dạng hai chữ số hoặc bốn chữ số.
Giá trị được cho phép ở định dạng gồm 4 chữ số: 1901 đến 2155.
Giá trị được cho phép ở định dạng gồm 2 chữ số: 70 đến 69, đại diện cho các năm từ 1970 đến 2069.
*Ngay cả khi DATETIME và TIMESTAMP trả về cùng một định dạng thì chúng vẫn hoạt động rất khác nhau. Trong truy vấn INSERT hoặc UPDATE, TIMESTAMP sẽ tự động đặt chính nó vào ngày và giờ hiện tại. TIMESTAMP cũng chấp nhận các định dạng khác nhau, như YYYYMMDDHHMISS, YYMMDDHHMISS, YYYYMMDD hoặc YYMMDD.
Các kiểu dữ liệu trong SQL Server
1. Kiểu dữ liệu chuỗi
Kiểu dữ liệu | Mô tả | Kích thước tối đa | Lưu trữ |
char(n) | Chuỗi ký tự độ rộng cố định | 8.000 ký tự | Độ rộng được xác định |
varchar(n) | Chuỗi ký tự có độ rộng biến thiên | 8.000 ký tự | 2 byte số ký tự |
varchar(max) | Chuỗi ký tự có độ rộng biến thiên | 1.073.741.824 ký tự | 2 byte số ký tự |
text | Chuỗi ký tự có độ rộng biến thiên | 2GB dữ liệu văn bản | 4 byte số ký tự |
nchar | Độ rộng chuỗi Unicode cố định | 4.000 ký tự | Chiều rộng xác định x 2 |
nvarchar | Độ rộng chuỗi Unicode biến thiên | 4.000 ký tự | |
nvarchar(max) | Độ rộng chuỗi Unicode biến thiên | 536.870.912 ký tự | |
ntext | Độ rộng chuỗi Unicode biến thiên | 2GB dữ liệu văn bản | |
binary(n) | Độ rộng chuỗi nhị phân thay đổi | 8.000 byte | |
varbinary | Độ rộng chuỗi nhị phân thay đổi | 8.000 byte | |
varbinary(max) | Độ rộng chuỗi nhị phân thay đổi | 8GB | |
image | Độ rộng chuỗi nhị phân thay đổi | 8GB |
2. Kiểu dữ liệu số
Kiểu dữ liệu | Mô tả | Lưu trữ |
bit | Số nguyên có thể là 0, 1 hoặc NULL | |
tinyint | Cho phép toàn bộ số từ 0 đến 255 | 1 byte |
smallint | Cho phép toàn bộ số giữa -32,768 và 32,767 | 2 bytes |
int | Cho phép toàn bộ số giữa -2,147,483,648 và 2,147,483,647 | 4 bytes |
bigint | Cho phép toàn bộ số giữa -9,223,372,036,854,775,808 và 9,223,372,036,854,775,807 | 8 bytes |
decimal(p,s) | Độ chính xác cố định và số lớn. Cho phép số từ -10^38 1 đến 10^38 –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à một 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 ở bên phải 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 bytes |
numeric(p,s) | Độ chính xác cố định và số lớn. Cho phép số từ -10^38 1 đến 10^38 –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à một 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 ở bên phải 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 bytes |
smallmoney | Dữ liệu tiền tệ từ -214,748.3648 đến 214,748.3647 | 4 bytes |
money | Dữ liệu tiền tệ từ -922,337,203,685,477,5808 đến 922,337,203,685,477,5807 | 8 bytes |
float(n) | Dữ liệu số chính xác biến thiên từ -1.79E 308 đến 1.79E 308. Tham số n cho biết liệu trường có lưu trữ 4 hoặc 8 byte hay không. float (24) lưu trữ trường 4 byte và float (53) lưu trữ trường 8 byte. Giá trị mặc định của n là 53. | 4 hoặc 8 bytes |
real | Dữ liệu số chính xác biến thiên từ -3,40E 38 đến 3,40E 38 | 4 bytes |
3. Các kiểu dữ liệu ngày tháng
Kiểu dữ liệu | Mô tả | Lưu trữ |
datetime | Từ ngày 1 tháng 1 năm 1753 đến ngày 31 tháng 12 năm 9999 với độ chính xác 3,33 mili giây. | 8 bytes |
datetime2 | Từ ngày 1 tháng 1 năm 0001 đến ngày 31 tháng 12 năm 9999 với độ chính xác 100 nano giây. | 6-8 bytes |
smalldatetime | Từ ngày 1 tháng 1 năm 1900 đến ngày 6 tháng 6 năm 2079 với độ chính xác là 1 phút. | 4 bytes |
date | Chỉ lưu trữ ngày. Từ ngày 1 tháng 1 năm 0001 đến ngày 31 tháng 12 năm 1999. | 3 bytes |
time | Chỉ lưu trữ thời gian với độ chính xác 100 nano giây. | 3-5 bytes |
datetimeoffset | Giống như datetime2 với việc bổ sung múi giờ. | 8-10 bytes |
timestamp | Lưu trữ một số duy nhất được cập nhật mỗi lần khi một hàng được tạo hoặc sửa đổi. Giá trị timestamp dựa trên đồng hồ nội bộ và không tương ứng với thời gian thực. Mỗi bảng có thể chỉ có một biến timestamp. |
4. Các kiểu dữ liệu khác trong SQL Server
sql_variant: Lưu trữ tối đa 8.000 byte dữ liệu của các kiểu dữ liệu khác nhau, ngoại trừ text, ntext và timestamp.
gianuniqueidentifier: Lưu trữ một định danh duy nhất toàn cầu (GUID)
xml: Lưu trữ dữ liệu định dạng XML. Tối đa 2 GB.
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 kết quả để xử lý sau.
5. Các kiểu dữ liệu truy cập của Microsoft
Kiểu dữ liệu | Mô tả | Lưu trữ |
Text | Sử dụng cho văn bản hoặc kết hợp văn bản và số. Tối đa 255 ký tự. | |
Memo | Bản ghi nhớ được sử dụng cho số lượng văn bản lớn hơn. Lưu trữ tối đa 65.536 ký tự. Lưu ý: Bạn không thể sắp xếp trường ghi nhớ. Tuy nhiên, chúng có thể tìm kiếm được. | |
Byte | Cho phép toàn bộ số từ 0 đến 255 | 1 byte |
Integer | Cho phép toàn bộ số giữa -32,768 và 32,767 | 2 bytes |
Long | Cho phép toàn bộ số giữa -2,147,483,648 và 2,147,483,647 | 4 bytes |
Single | Single precision floating-point. Sẽ xử lý hầu hết các số thập phân | 4 bytes |
Double | Double precision floating-point. Sẽ xử lý hầu hết các số thập phân | 8 bytes |
Currency | Sử dụng cho tiền tệ. Lưu trữ lên đến 15 chữ số của toàn bộ đô la, cộng với 4 chữ số thập phân. Mẹo: Bạn có thể chọn loại tiền tệ của một quốc gia. | 8 bytes |
AutoNumber | Các trường AutoNumber tự động cung cấp cho mỗi bản ghi số riêng của nó, thường bắt đầu từ 1. | 4 bytes |
Date/Time | Sử dụng cho ngày và giờ | 8 bytes |
Yes/No | Trường logic có thể được hiển thị là Yes/No, True/False, hoặc On/Off. Trong code, sử dụng các hằng số True và False (tương đương với -1 và 0). Lưu ý: Các giá trị Null không được phép trong các trường Yes/No. | 1 bit |
Ole Object | Có thể lưu trữ hình ảnh, âm thanh, video hoặc các BLOB khác (Binary Large OBjects) | Upto 1 GB |
Hyperlink | Chứa các liên kết đến các tệp khác, bao gồm các trang web | |
Lookup Winzard | Cho phép bạn nhập danh sách các tùy chọn, sau đó có thể được chọn từ danh sách thả xuống | 4 bytes |
Theo Bizfly Cloud chia sẻ
>> Tìm hiểu thêm: Sự khác nhau giữa SQL, MySQL và SQL Server
Bizfly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.
Bizfly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.
Độc giả quan tâm đến các giải pháp của Bizfly Cloud có thể truy cập tại đây.
DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud