Dưới đây là các kiểu dự liệu trong SQL gồm kiễu chuỗi, số, thời gian và hình ảnh. Tùy theo mục đích nhập liệu cũng như tính toán sau này mà bạn có thể quy định kiểu dữ liệu cho nó.
Kiểu dữ liệu là gì?
Kiểu dữ liệu (data type) là bản chất của dữ liệu. Quy định kiểu dữ liệu sẽ giúp bạn dễ thao tác với dữ liệu, như tính toán, bóc tách, v.v… Kiểu dữ liệu trong SQL dựa theo tiêu chuẩn của ANSI/ISO. Có 16/143 kiểu dữ liệu được xài phổ biến trong các hệ quản trị cơ sở dữ liệu thương mại ngày nay.
Khi quy định kiểu dữ liệu bạn có thể:
– Quy định kiểu dữ liệu mà mỗi column (trường thuộc tính) có thể lưu trữ và hiển thị.
– Quy định kích thước của dữ liệu đó trong vùng nhớ.
Tại sao cần xài các kiểu dữ liệu khác nhau?
Không thể xài chung một kiểu dữ liệu cho tất cả các column (trường thuộc tính) hoặc database (cơ sở dữ liệu) được. Ví nếu tất cả dữ liệu có cùng dữ liệu thì bạn không thể phân biệt đâu là ngày tháng, chuỗi, số nguyên hay số thực. Dẫn tới không thể áp dụng các phép tính, việc tìm kiếm và khai thác thông tin cũng sẽ rất khó khăn.
Quy định rõ ràng kiểu cho các dữ liệu còn giúp tối ưu bộ nhớ và tiết kiệm dung lượng đáng kể. Việc này càng quan trọng hơn đối với dữ liệu trên thiết bị di động.
Kiểu dữ liệu chuỗi
Chuỗi (hay xâu chuỗi) đơn giản là mấy kiểu chữ viết này nọ đó mà.
Cú pháp | Kích thước tối đa | Giải thích |
char (kich_thuoc) | 8000 kí tự | – kich_thuoc là số kí tự lưu trữ.
– Độ dài cố định. – Nếu thiếu kí tự thì thêm dấu cách bên phải cho đủ. – Không chứa kí tự Unicode. |
nchar (kich_thuoc) | 4000 kí tự | – Độ dài cố định.
– Kí tự Unicode. |
varchar (kich_thuoc) | 8000 kí tự | – kich_thuoc là số kí tự lưu trữ.
– Độ dài tùy biến. – Tối đa tương đương 2GB. – Không chứa kí tự Unicode. |
nvarchar (kich_thuoc) | 4000 kí tự | – kich_thuoc là số kí tự lưu trữ.
– Độ dài tùy biến. – Tối đa tương đương 2GB. – Kí tự Unicode. |
text | 2GB | – Độ dài tùy biến.
– Không chứa kí tự Unicode. |
ntext | 1.073.741.823 byte | – Độ dài tùy biến.
– Kí tự Unicode. |
binary (kich_thuoc) | 8000 kí tự | – kich_thuoc là số kí tự lưu trữ.
– Độ dài cố định. – Nếu thiếu kí tự thì thêm dấu cách cho đủ. – Dự liệu nhị phân. |
varbinary (kich_thuoc) | 8000 kí tự | – kich_thuoc là số kí tự lưu trữ.
– Độ dài tùy biến. – Tối đa tương đương 2GB. – Dự liệu nhị phân. |
image | 2GB | – Độ dài tùy biến.
– Dự liệu nhị phân. |
Kiểu dữ liệu số
Là kiểu số nguyên, số thực, tiền, v.v…
Cú pháp | Kích thước tối đa | Giải thích |
bit | mang giá trị 0, hoặc 1, hoặc NULL. | |
int | Từ -2,147,483,648
đến 2,147,483,647 |
|
smallint | Từ -32768
đến 32767 |
|
tinyint | Từ 0
đến 255 |
|
bigint | Từ -9,223,372,036,854,775,808
đến 9,223,372,036,854,775,807 |
|
dec (m,d) | m mặc định là 18
d mặc định là 0 |
– m là tổng số lượng các số.
– d là số lượng các số nằm sau dấu phẩy. – Đồng nghĩa với kiểu dữ liệu decimal. |
decimal (m,d) | m mặc định là 18
d mặc định là 0 |
– m là tổng số lượng các số.
– d là số lượng các số nằm sau dấu phẩy. |
numeric (m,d) | m mặc định là 18
d mặc định là 0 |
– m là tổng số lượng các số.
– d là số lượng các số nằm sau dấu phẩy. – Đồng nghĩa với kiểu dữ liệu decimal. |
float (n) | n mặc định là 53 | n là số lượng của số bit lưu trữ trong một kí hiệu hóa học. |
real | Tương đương với float (24) | |
money | Từ -922,337,203,685,477.5808
đến 922,337,203,685,477.5807 |
|
smallmoney | Từ -214,748.3648
đến 214,748.3647 |
Kiểu dữ liệu thời gian (giờ, ngày tháng)
Với kiểu dữ liệu thời gian, bạn có thể quy định cho nó như bình thường hoặc chính xác tới từng số thập phân của giây luôn.
Cú pháp | Kích thước tối đa | Giải thích |
date | Ngày lấy
từ ‘0001-01-01’ đến ‘9999-12-31 |
Hiển thị dạng YYYY-MM-DD |
time | – Ngày lấy
từ ‘0001-01-01’ đến ‘9999-12-31′
– Giờ lấy từ ’00:00:00.0000000′ đến ’23:59:59.9999999’ |
Hiển thị dạng YYYY-MM-DD hh:mm:ss[.nnnnnnn] |
datetime | – Ngày lấy
từ ‘1753-01-01 00:00:00’ đến ‘9999-12-31 23:59:59′
– Giờ lấy từ ’00:00:00′ đến ’23:59:59:997’ |
Hiển thị dạng YYYY-MM-DD hh:mm:ss[.mmm] |
datetime2 | – Ngày lấy
từ ‘0001-01-01’ đến ‘9999-12-31′
– Giờ lấy từ ’00:00:00′ đến ’23:59:59:9999999’ |
– Hiển thị dạng YYYY-MM-DD hh:mm:ss[.số giây thập phân]
– Chính xác tới số thập phân của giây. |
smalldatetime | – Ngày lấy
từ ‘1900-01-01’ đến ‘2079-06-06′
– Giờ lấy từ ’00:00:00′ đến ’23:59:59’ |
Hiển thị dạng YYYY-MM-DD hh:mm:ss |
datetimeoffset | – Giờ lấy
từ ’00:00:00′ đến ’23:59:59:9999999′
– Múi giờ lấy từ -14:00 đến +14:00 |
– Hiển thị dạng YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm]
– Chính xác tới số thập phân của giây. |
Cấp phát động và cấp phát tĩnh
Kiểu dữ liệu có độ dài tùy theo dữ liệu nhập gọi là cấp phát động, còn kiểu dữ liệu có độ dài cố định gọi là cấp phát tĩnh. Cấp phát ở đây ý nói khả năng cấp phát bộ nhớ. Ví dụ:

Đoạn code này có nghĩa là: Tạo một bảng tên BangDuLieu, trong đó:
– Cột Cot1 có kiểu dữ liệu varchar và độ dài là 10.
– Cột Cot2 có kiểu dữ liệu char và độ dài cũng là 10.
Cả hai đều có độ dài là 10. Nhưng nếu bạn nhập nội dung “abc” cho hai cột này thì:
– Cot1: Sẽ lưu trữ 3 ô bộ nớ (3 kí tự abc). => Cấp phát động.
– Cot2: Sẽ luôn lưu trữ 10 ô bộ nhớ (3 kí tự abc và 7 kí tự rỗng). => Cấp phát tĩnh.
Như vậy rõ ràng là kiểu cấp phát động linh hoạt và tiết kiệm bộ nhớ hơn. Vậy khi nào thì xài cấp phát tĩnh? Là khi bạn cần dữ liệu có độ dài cố định, chính xác. Ví dụ khi nhập mã khách hàng chẳng hạn.
- [Hỏi đáp] PC Gaming đang chơi thì bị đơ, chớp, sọc dưa màn hình – 04/10/2024
- Bảng xếp hạng card đồ họa – 30/09/2024
- AMD hay NVIDIA? Nên chọn card nào để build PC Gaming? – 30/09/2024
Leave a Reply