Biết kiểu dữ liệu của SQL giúp bạn dễ dàng làm chủ chúng trong quá trình truy vấn hay sử dụng. Chia sẻ sau sẽ mang đến cho bạn thông tin hữu ích về các kiểu dữ liệu trong SQL. Vì vậy, bạn đừng bỏ qua chúng nhé.
Kiểu dữ liệu trong SQL là gì?
Kiểu dữ liệu là một quy trình cấu trúc và miền giá trị của dữ liệu, mà người dùng có thể nhập vào, đồng thời, các phép toán có thể tác động lên miền giá trị.
Với mỗi ngôn ngữ lập trình, chúng chỉ tương thích và chấp nhận xử lý các dữ liệu tuân theo quy định của nó. Trong lập trình, có một vài dữ liệu thuộc về kiểu dữ liệu nhất định. Tương tự nguyên tắc này, kiểu dữ liệu trong SQL sẽ có đặc điểm sau:
- Mỗi trường thuộc tính (Column) có thể lưu trữ nhằm thể hiện dữ liệu trong thuộc tính.
- Quyết định về kích thước dữ liệu mà Column đã dùng trong vùng nhớ.
- Kiểu dữ liệu được thiết kế dựa trên chuẩn ANSI/ISO.
- Có đến 16/143 kiểu dữ liệu được dùng trong các Hệ thống quản trị cơ sở dữ liệu của website thương mại.
Các kiểu dữ liệu SQL đa dạng để phục vụ cho mục đích phân loại và mang đến sự dễ dàng cho người sử dụng. Điều này giúp tránh không bị nhầm lẫn khi truy vấn.
Các kiểu dữ liệu trong SQL
Kiểu dữ liệu trong SQL có 3 loại chính: text (văn bản), number (số), date (ngày tháng).
-
Kiểu dữ liệu text
Các loại dữ liệu dạng văn bản gồm:
- Char (size): Đây là dữ liệu dạng chuỗi có độ dài cố định. Chúng chứa chữ cái, số cũng như các ký tự đặc biệt. Dữ liệu dạng này cho phép người dùng lưu trữ tối đa 255 ký tự.
- Varchar (size): Tương tự như Char, Varchar cũng là dữ liệu dạng chuỗi chứa chữ cái, số, ký tự đặc biệt. Tuy nhiên, độ dài của chúng có thể thay đổi được. Kích thước trong dấu “( )” là kích thước được chỉ định. Varchar cho phép lưu trữ tối đa 255 ký tự. Trong trường hợp, người dùng đặt giá trị trên 255 ký tự thì giá trị sẽ chuyển thành dữ liệu loại TEXT.
- Tinytext: Kiểu dữ liệu này hỗ trợ lưu trữ chuỗi ký tự có độ dài không quá 255 ký tự.
- Text: Cho phép người dùng có thể lưu trữ chuỗi ký tự có độ dài tới 65.535 ký tự.
- Blob (viết tắt của Binary Large OBjects): Lưu trữ được chuỗi dữ liệu tối đa 65.535 byte.
- Mediumtext: Lưu trữ chuỗi dữ liệu dài tối đa 16.777.215 ký tự.
- Mediumblob: Lưu trữ được chuỗi dữ liệu tối đa là 16.777.215 byte.
- Longtext: Cho phép người dùng lưu trữ chuỗi có độ dài không quá 4.294.967.295 ký tự.
- Longblob: Có thể lưu trữ dữ liệu lên đến 4.294.967.295 byte.
- Enum: Cho phép người dùng nhập danh sách các giá trị. Với danh sách Enum, bạn được nhập tới 65.535 giá trị. Trong trường hợp, một giá trị chèn vào không có trong danh sách thì giá trị trống được tự động chèn thêm. Tuy nhiên, bạn lưu ý là các giá trị sẽ sắp xếp theo thứ tự được nhập.
- Set: Dữ liệu này cũng tương tự Enum, chỉ khác là Set có thể chứa đến 64 danh sách items và lưu trữ nhiều lựa chọn hơn.
-
Các kiểu dữ liệu SQL: Dữ liệu kiểu số
Có các kiểu dữ liệu dạng số như sau:
- Tinyint (size): Có khả năng lưu trữ từ -128 đến 127 thông thường và 0 đến 255 UNSIGNED. Trong dấu “( )” sẽ là số lượng chữ số tối đa được chỉ định. Với unsigned là kiểu số nguyên đi kèm cùng một tùy chọn phụ. Số nguyên sẽ có giá trị từ âm sang dương. Đồng thời, việc thêm thuộc tính UNSIGNED cho phép dịch chuyển phạm vi để chúng có thể bắt đầu bằng 0 (không phải từ một số âm).
- Smallint (size): Có khả năng lưu trữ từ -32768 đến 32767 thông thường và 0 đến 65535 UNSIGNED. Trong dấu “( )” sẽ là số lượng chữ số tối đa được chỉ định.
- Mediummint (size): Có khả năng lưu trữ từ -8388608 đến 8388607 thông thường và 0 đến 16777215 UNSIGNED. Trong dấu “( )” sẽ là số lượng chữ số tối đa được chỉ định.
- INT(size): Có khả năng lưu trữ từ -2147483648 đến 2147483647 thông thường và 0 đến 4294967295 UNSIGNED. Trong dấu “( )” sẽ là số lượng chữ số tối đa được chỉ định.
- Bigint (size): Có khả năng lưu trữ từ -9223372036854775808 đến 9223372036854775807 thông thường và 0 đến 18446744073709551615 UNSIGNED. Trong dấu “( )” sẽ là số lượng chữ số tối đa được chỉ định.
- Float (size, d): Đây là dạng số nhỏ và dấu thập phân không cố định. Số lượng chữ số có thể lưu trữ tối đa được chỉ định bằng tham số size. Còn d là tham số chỉ định số lượng chữ số tối đa nằm vị trí bên phải của dấu thập phân.
- Double (size, d): Ngược lại với Float, đây là số lớn và có dấu thập phân cũng không cố định. Tham số size chỉ định số lượng chữ số tối đa mà người dùng có thể sử dụng. Tham số d là số lượng chữ số tối đa của vị trí bên phải dấu thập phân.
- Decimal (size, d): Đây là dạng dữ liệu số lưu trữ dưới dạng chuỗi và có dấu thập phân cố định. Trong đó, tham số zise sẽ chỉ định số lượng chữ số tối đa. Còn tham số d chỉ định số lượng chữ số tối đa của vị trí bên phải dấu thập phân.
-
Dữ liệu kiểu ngày (date)
Các kiểu dữ liệu trong SQL dạng kiểu ngày là:
- Data(): Có nghĩa một ngày với định dạng là YYYY-MM-DD. Lưu ý, loại dữ liệu này có phạm vi từ ‘1000-01-01’ đến ‘9999-12-31’.
- Datetime(): Là kiểu kết hợp ngày và giờ. Chúng có định dạng là YYYY-MM-DD HH:MI:SS. Phạm vi hỗ trợ từ ‘1000-01-01 00:00:00’ đến ‘9999-12-31 23:59:59’.
- Timestamp(): Đây là dấu thời gian với định dạng là YYYY-MM-DD HH:MI:SS. Giá trị của Timestamp sẽ được lưu trữ bằng dạng số giây, được tính từ giai đoạn Unix (‘1970-01-01 00:00:00’ UTC). Phạm vi hỗ trợ từ ‘1970-01-01 00:00:01’ UTC đến ‘2038-01-09 03:14:07’ UTC.
- Time(): Là dữ liệu thời gian, chúng có định dạng HH:MI:SS. Với dữ liệu này thì phạm vi hỗ trợ từ từ ‘-838: 59: 59’ đến ‘838: 59: 59’.
- Year(): Là dữ liệu một năm, có định dạng 2 hoặc 4 chữ số. Giá trị cho phép của định dạng 4 chữ số là từ 1901 đến 2155. Còn giá trị cho phép của định dạng 2 số là từ 70 – 69 (tương ứng năm 1970 – 2069).
Các kiểu dữ liệu trong SQL Server
Trong máy chủ SQL có các kiểu dữ liệu sau:
-
Kiểu dữ liệu trong SQL Server: Dữ liệu chuỗi
- Char(n): Là dữ liệu dạng chuỗi ký tự và có độ rộng cố định. Chúng có kích thước tối đa 8.000 ký tự và độ rộng lưu trữ được xác định bằng giá trị n.
- Varchar(n): Là dữ liệu dạng chuỗi ký tự và có độ rộng không cố định (biến thiên). Tương tự như Char, chúng có kích thước tối đa 8.000 ký tự và lưu trữ 2 byte số ký tự.
- Varchar(max): Tương tự như Varchar, đây là dữ liệu dạng chuỗi ký tự và có độ rộng không cố định. Chúng có kích thước tối đa 1.073.741.824 ký tự và lưu trữ 2 byte số ký tự.
- Text: Là dữ liệu dạng chuỗi ký tự và có độ rộng không cố định. Chúng có kích thước tối đa 2GB dữ liệu và lưu trữ 4 byte số ký tự.
- Nchar: Đây là dữ liệu dạng chuỗi Unicode và có độ rộng cố định. Chúng có kích thước tối đa 4.000 ký tự, còn khả năng lưu trữ gấp đôi chiều rộng xác định.
- Nvarchar(max): Là dữ liệu dạng chuỗi Unicode và có độ rộng biến thiên. Chúng có kích thước tối đa 536.870.912 ký tự.
- Ntext: Là loại dữ liệu có độ rộng chuỗi nhị phân không cố định (thay đổi) cùng kích thước tối đa là 2GB dữ liệu
- Binary(n): Tương tự như ntext, dữ liệu này có độ rộng chuỗi nhị phân thay đổi. Tuy nhiên, kích thước tối đa của chúng là 8.000 byte.
- Varbinary: Dữ liệu có độ rộng chuỗi nhị phân thay đổi cùng kích thước tối đa là 8.000 byte.
- Varbinary(max): Dữ liệu có độ rộng chuỗi nhị phân thay đổi và kích thước tối đa là 8GB.
- Image: Dữ liệu có độ rộng chuỗi nhị phân thay đổi và kích thước tối đa là 8GB.
-
Các kiểu dữ liệu trong SQL Server 2008: Dữ liệu số
- Bit: Là dữ liệu số nguyên 0, 1 hay NULL.
- Tinyint: Là loại dữ liệu có các số từ 0 – 255 và khả năng lưu trữ 1 byte.
- Smallint: Là loại dữ liệu cho phép các số trong khoảng -32.768 đến 32.767 và khả năng lưu trữ 2 bytes.
- Int: Là loại dữ liệu cho phép các số trong khoảng -2.147.483.648 đến 2.147.483.647 và khả năng lưu trữ 4 bytes.
- Bigint: Là loại dữ liệu cho phép các số trong khoảng -9.223.372.036.854.775.808 đến 9.223.372.036.854.775.807 và khả năng lưu trữ 8 bytes.
- Decimal(p,s): Là một kiểu dữ liệu demical trong SQL với số lớn và độ chính xác cố định. Nó cho phép các số trong khoảng -10^38 1 đến 10^38 -1. Trong đó, tham số p sẽ chỉ định số lượng chữ số tối đa được phép lưu trữ (bao gồm các số ở 2 bên trái, phải của dấu thập phân). Đó là một số xác định có giá trị từ 1 – 38, mặc định nó là 18. Còn tham số s là số lượng chữ số được phép lưu trữ tối đa ở bên phải của dấu thập phân. Giá trị của S là một số nguyên từ 0 – p, mặc định là 0. Khả năng lưu trữ của dữ liệu là từ 5 – 17 bytes.
- Numeric(p,s): Tương tự như Decimal(p,s), Numeric(p,s) cũng là kiểu dữ liệu demical trong SQL số lớn và độ chính xác cố định. Nó cho phép các số trong khoảng -10^38 1 đến 10^38 -1.Trong đó tham số p cũng có giá trị từ 1 – 38 và mặc định là 18. Tham số s mặc định là 0. Khả năng lưu trữ của dữ liệu là từ 5 – 17 bytes.
- Smallmoney: Đây là kiểu dữ liệu money trong SQL. Nó cho phép các số trong khoảng -214.748.3648 đến 214.748.3647 và khả năng lưu trữ là 4 bytes.
- Money: Đây cũng là kiểu dữ liệu money trong SQL nhưng cho phép các số lớn hơn, trong khoảng -922.337.203.685.477.5808 đến 922.337.203.685.477.5807 và khả năng lưu trữ là 8 bytes.
- Float(n): Đây là loại dữ liệu số chính xác và có độ biến thiên từ -1.79E 308 đến 1.79E 308. Trong đó, n là tham số chỉ định trường có lưu trữ 4 hay 8 byte. Ví dụ, Float(24) là lưu trữ trường 4 byte, Float (53) là lưu trữ trường 8 byte. Tuy nhiên, n có giá trị mặc định là 53.
- Real: Đây là loại dữ liệu số chính xác và có độ biến thiên từ -3.40E 38 đến 3.40E 38 và khả năng lưu trữ là 4 bytes.
-
Kiểu dữ liệu date trong SQL
- Datetime: Có giá trị từ ngày 01/01/1753 đến 31/12/9999 và độ chính xác là 3,33 mili giây. Khả năng lưu trữ của nó là 8 bytes.
- Datetime2: Có giá trị từ ngày 01/01/0001 đến 31/12/9999 và độ chính xác là 100 nano giây. Khả năng lưu trữ của nó là 6 – 8 bytes.
- Smalldatetime: Có giá trị từ ngày 01/01/1900 đến 6/6/2079 và độ chính xác là 01 phút. Khả năng lưu trữ của nó là 4 bytes.
- Date: Dữ liệu này chỉ lưu trữ giá trị ngày, từ 01/01/0001 đến 31/12/1999. Khả năng lưu trữ của nó là 3 bytes.
- Time: Dữ liệu này chỉ lưu trữ giá trị thời gian và độ chính xác đến 100 nano giây. Khả năng lưu trữ từ 3 – 5 bytes.
- Datetimeoffset: Tương tự như kiểu dữ liệudatetime2 nhưng nó được bổ sung thêm múi giờ. Khả năng lưu trữ là 8 – 10 bytes.
- Timestamp: Chỉ lưu trữ duy nhất một số cho mỗi lần cập nhật khi tạo hoặc chỉnh sửa hàng. Giá trị của Timestamp được căn cứ vào đồng hồ nội bộ và tất nhiên chúng sẽ không tương ứng thời gian thực. Ngoài ra, mỗi bảng chỉ có một biến Timestamp.
-
Các kiểu dữ liệu trong SQL Server khác
- sql_variant: Kiểu dữ liệu này cho phép lưu trữ tối đa 8.000 byte của nhiều kiểu dữ liệu khác nhau, nhưng không bao gồm text, ntext, timestamp.
- gianuniqueidentifier: Chỉ lưu trữ duy nhất một định danh toàn cầu (GUID).
- xml: Cho phép lưu trữ dữ liệu có định dạng XML và khả năng lưu trữ tối đa 2 GB.
- cursor: Dùng để lưu trữ tham chiếu đến con trỏ được dùng cho những hoạt động trên cơ sở dữ liệu.
- table: Có chức năng như kho chứa một tập kết quả sẽ xử lý sau, bằng cách lưu trữ một tập kết quả chúng.
-
Các kiểu dữ liệu truy cập của Microsoft
- Text: Kiểu dữ liệu này dùng cho văn bản hoặc văn bản kết hợp với số. Nó có tối đa 255 ký tự.
- Memo: Kiểu dữ liệu được mô tả như bản ghi nhớ sử dụng cho một lượng văn bản lớn hơn. Khả năng lưu trữ của nó tối đa đến 65.536 ký tự. Tuy nhiên, bạn cần lưu ý là mặc dù không có chức năng sắp xếp trường ghi nhớ theo ý người dùng, nhưng chúng có công cụ cho phép tìm kiếm.
- Byte: Có giá trị số từ 0 – 255 và lưu trữ là 1 byte.
- Integer: Kiểu dữ liệu này cho phép các số trong khoảng -32.768 và 32.767, khả năng lưu trữ là 4 bytes.
- Long: Là dữ liệu cho phép các số trong khoảng -2.147.483.648 và 2.147.483.647, khả năng lưu trữ là 4 bytes.
- Single: Là cách viết ngắn gọn của Single precision floating-point. Chúng xử lý phần lớn các số thập phân và lưu trữ 4 bytes.
- Double: Là cách viết ngắn gọn của Double precision floating-point. Chúng xử lý phần lớn các số thập phân và lưu trữ 8 bytes.
- Currency: Kiểu dữ liệu này dùng cho tiền tệ, giá trị lưu trữ của nó đến 15 chữ số và thêm 4 chữ số thập phân. Bạn cũng có thể tùy chọn loại tiền tệ của bất kỳ quốc gia nào. Khả năng lưu trữ của Currency là 8 bytes.
- AutoNumber: Các trường của kiểu dữ liệu sẽ tự động cung cấp cho từng bản ghi số riêng của chính nó. Thông thường giá trị này bắt đầu từ 1. Khả năng lưu trữ của dữ liệu là 4 bytes.
- Date/Time: Kiểu dữ liệu này dùng cho ngày và giờ với khả năng lưu trữ là 8 bytes.
- Yes/No: Đây là trường logic sẽ hiển thị Yes hoặc No, True hoặc False, On hoặc Off và giá trị Null không có trong trường này. Trong code, hằng số True và False sẽ tương ứng với -1 và 0. Khả năng lưu trữ của kiểu dữ liệu này là 1 byte.
- Ole Object: Là kiểu dữ liệu hình ảnh trong SQL. Chúng có khả năng lưu trữ hình ảnh, âm thanh và video hay thậm chí là các BLOB khác. Ole Object có thể lưu trữ đến 1GB.
- Hyperlink: Chứa tất cả các liên kết sẽ dẫn đến những tập tin khác hay website.
- Lookup Winzard: Đây là một trong các kiểu dữ liệu trong SQL cho phép người dùng nhập danh sách những tùy chọn, rồi chọn thuộc tính trong danh sách thả xuống. Lookup Winzard có khả năng lưu trữ 4 bytes.
Tham khảo thêm :
- Cách gỡ bỏ hoàn toàn SQL Server 2014 Cực Nhanh Và Dễ Dàng
- Radius server là gì? Cách cấu hình Radius Server 2008
Nguồn: https://sigma.edu.vn
Danh mục: Công Nghệ