Kiểu dữ liệu trong SQL

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ụ:

Cấp phát động và cấp phát tĩnh trong SQL
Cấp phát động và cấp phát tĩnh trong SQL

Đ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.

Trần Thành

Leave a Comment

Eine Übersicht der Gewinnzahlen jeder Community helfen, um euch selbst Gedanken über eure Gewinnchancen zu machen. spieler ein Gewinne werden lediglich ausbezahlt, wenn jeder Spieler die Bonusbedingungen erfüllt. von uns Auch hinsichtlich der Zahlungsdaten müsst ihr euch keinerlei Gedanken machen. mit einem Ansonsten ist dieser kostenlose Casino Willkommensbonus ein sehr gutes Erlebnis. vulkan vegas