Các Kiểu Dữ Liệu Trong SQL Server: Bí Mật Đằng Sau

Bạn có biết rằng kiểu dữ liệu trong SQL là điều quan trọng giúp bạn dễ dàng làm việc với dữ liệu trong quá trình truy vấn và sử dụng? Hôm nay, tôi sẽ chia sẻ với bạn những kiến thức hữu ích về các kiểu dữ liệu trong SQL Server. Hãy cùng khám phá nhé!

Kiểu Dữ Liệu Trong SQL là Gì?

Kiểu dữ liệu trong SQL là một quy trình xác định cấu trúc và miền giá trị của dữ liệu, cho phép người dùng nhập vào và áp dụng các phép toán lên dữ liệu đó. Mỗi ngôn ngữ lập trình đều có quy định riêng về kiểu dữ liệu mà nó tương thích và xử lý. Tương tự như vậy, kiểu dữ liệu trong SQL cũng có những đặc điểm riêng:

  • Mỗi trường thuộc tính (Column) được sử dụng để lưu trữ dữ liệu trong thuộc tính đó.
  • Quyết định về kích thước dữ liệu mà Column sử dụng trong bộ 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 sử 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 Trong SQL

Các kiểu dữ liệu trong SQL được chia thành 3 loại chính: text (văn bản), number (số), và date (ngày tháng). Hãy cùng điểm qua từng loại cụ thể:

Kiểu dữ liệu text

  • Char (size): Đây là kiểu dữ liệu chuỗi có độ dài cố định. Chúng có thể 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 lưu trữ tối đa 255 ký tự.
  • Varchar (size): Tương tự như Char, Varchar cũng là kiểu dữ liệu chuỗi chứa chữ cái, số, ký tự đặc biệt. Độ dài của chúng có thể thay đổi được. Kích thước được chỉ định trong dấu “( )”. Varchar cho phép lưu trữ tối đa 255 ký tự. Trường hợp vượt quá 255 ký tự, giá trị sẽ chuyển thành kiểu dữ liệu TEXT.
  • Tinytext: Kiểu dữ liệu này hỗ trợ lưu trữ chuỗi ký tự có độ dài tối đa 255 ký tự.
  • Text: Cho phép lưu trữ chuỗi ký tự có độ dài tối đa 65.535 ký tự.
  • Blob: 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 16.777.215 byte.
  • Longtext: Cho phép 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ị. Có thể nhập tới 65.535 giá trị. Nếu giá trị chèn vào không có trong danh sách, giá trị trống sẽ tự động chèn thêm. Các giá trị sẽ được sắp xếp theo thứ tự nhập.
  • Set: Tương tự như Enum, nhưng 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 số (number)

  • Tinyint (size): Lưu trữ các số từ -128 đến 127 (thường) hoặc 0 đến 255 (UNSIGNED). Trường hợp không có size, sẽ mặc định là 1 byte. UNSIGNED là kiểu số nguyên kèm tùy chọn phụ. Số nguyên sẽ có giá trị từ âm sang dương. Thêm thuộc tính UNSIGNED cho phép dịch chuyển phạm vi để số có thể bắt đầu bằng 0 (thay vì từ số âm).
  • Smallint (size): Lưu trữ các số từ -32.768 đến 32.767 (thường) hoặc 0 đến 65.535 (UNSIGNED). Kích thước mặc định là 2 byte.
  • Mediummint (size): Lưu trữ các số từ -8.388.608 đến 8.388.607 (thường) hoặc 0 đến 16.777.215 (UNSIGNED). Kích thước mặc định là 3 byte.
  • INT(size): Lưu trữ các số từ -2.147.483.648 đến 2.147.483.647 (thường) hoặc 0 đến 4.294.967.295 (UNSIGNED). Kích thước mặc định là 4 byte.
  • Bigint (size): Lưu trữ các số từ -9.223.372.036.854.775.808 đến 9.223.372.036.854.775.807 (thường) hoặc 0 đến 18.446.744.073.709.551.615 (UNSIGNED). Kích thước mặc định là 8 byte.
  • Float (size, d): Là kiểu số với dấu phẩy động không cố định. Số lượng chữ số tối đa được lưu trữ được chỉ định bởi tham số size. Tham số d chỉ định số lượng chữ số tối đa sau dấu phẩy.
  • Double (size, d): Tương tự như Float, nhưng là kiểu số lớn hơn. Tham số size là 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 sau dấu phẩy.
  • Decimal (size, d): Lưu trữ dữ liệu số dưới dạng chuỗi và có dấu phẩy động cố định. Tham số size là số lượng chữ số tối đa. Tham số d chỉ định số lượng chữ số tối đa sau dấu phẩy.

Dữ liệu kiểu ngày (date)

  • Date(): Lưu trữ một ngày với định dạng YYYY-MM-DD. Phạm vi từ ‘1000-01-01’ đến ‘9999-12-31’.
  • Datetime(): Lưu trữ ngày và giờ. Định dạng là YYYY-MM-DD HH:MI:SS. Phạm vi từ ‘1000-01-01 00:00:00’ đến ‘9999-12-31 23:59:59’.
  • Timestamp(): Lưu trữ thời gian dưới dạng số giây tính từ giai đoạn Unix (‘1970-01-01 00:00:00’ UTC). Phạm vi từ ‘1970-01-01 00:00:01’ UTC đến ‘2038-01-09 03:14:07’ UTC.
  • Time(): Lưu trữ thời gian trong ngày với độ chính xác đến 100 nano giây. Phạm vi từ ‘-838: 59: 59’ đến ‘838: 59: 59’.
  • Year(): Lưu trữ năm với định dạng 2 hoặc 4 chữ số. Phạm vi từ 1901 đến 2155 (định dạng 4 chữ số) hoặc 70 – 69 (tương ứng từ năm 1970 – 2069).

Các Kiểu Dữ Liệu Trong SQL Server

SQL Server cũng cung cấp một loạt các kiểu dữ liệu khác nhau để phục vụ nhu cầu của bạn. Dưới đây là một số kiểu dữ liệu phổ biến trong SQL Server:

Dữ liệu chuỗi

  • Char(n): Lưu trữ chuỗi có độ rộng cố định. Kích thước tối đa là 8.000 ký tự, và độ rộng lưu trữ được xác định bởi giá trị n.
  • Varchar(n): Lưu trữ chuỗi có độ rộng thay đổi. Kích thước tối đa là 8.000 ký tự, và lưu trữ 2 byte cho mỗi ký tự.
  • Varchar(max): Lưu trữ chuỗi có độ rộng thay đổi. Kích thước tối đa là 1.073.741.824 ký tự, và lưu trữ 2 byte cho mỗi ký tự.
  • Text: Lưu trữ chuỗi có độ rộng thay đổi. Kích thước tối đa là 2GB, và lưu trữ 4 byte cho mỗi ký tự.
  • Nchar: Lưu trữ chuỗi Unicode có độ rộng cố định. Kích thước tối đa là 4.000 ký tự, có khả năng lưu trữ gấp đôi chiều rộng xác định.
  • Nvarchar(max): Lưu trữ chuỗi Unicode có độ rộng thay đổi. Kích thước tối đa là 536.870.912 ký tự.
  • Ntext: Lưu trữ chuỗi dữ liệu nhị phân có độ rộng thay đổi. Kích thước tối đa là 2GB.

Dữ liệu số

  • Bit: Lưu trữ số nguyên 0, 1 hoặc NULL.
  • Tinyint: Lưu trữ số trong khoảng 0 – 255, kích thước lưu trữ là 1 byte.
  • Smallint: Lưu trữ số trong khoảng -32.768 đến 32.767, kích thước lưu trữ là 2 byte.
  • Int: Lưu trữ số trong khoảng -2.147.483.648 đến 2.147.483.647, kích thước lưu trữ là 4 byte.
  • Bigint: Lưu trữ số trong khoảng -9.223.372.036.854.775.808 đến 9.223.372.036.854.775.807, kích thước lưu trữ là 8 byte.
  • Float(n): Lưu trữ số có độ biến thiên từ -1.79E 308 đến 1.79E 308. Tham số n chỉ định kích thước lưu trữ 4 hoặc 8 byte. Giá trị mặc định của n là 53.
  • Real: Lưu trữ số có độ biến thiên từ -3.40E 38 đến 3.40E 38, kích thước lưu trữ là 4 byte.

Kiểu dữ liệu ngày (date)

  • Datetime: Lưu trữ ngày và giờ từ 01/01/1753 đến 31/12/9999 với độ chính xác là 3,33 mili giây, kích thước lưu trữ là 8 byte.
  • Datetime2: Lưu trữ ngày và giờ từ 01/01/0001 đến 31/12/9999 với độ chính xác là 100 nano giây, kích thước lưu trữ từ 6 – 8 byte.
  • Smalldatetime: Lưu trữ ngày và giờ từ 01/01/1900 đến 06/06/2079 với độ chính xác là 1 phút, kích thước lưu trữ là 4 byte.
  • Date: Lưu trữ giá trị ngày từ 01/01/0001 đến 31/12/9999, kích thước lưu trữ là 3 byte.
  • Time: Lưu trữ giá trị thời gian, độ chính xác đến 100 nano giây, kích thước lưu trữ từ 3 – 5 byte.
  • Datetimeoffset: Lưu trữ ngày và giờ giống như kiểu dữ liệu datetime2 nhưng bổ sung thêm múi giờ, kích thước lưu trữ từ 8 – 10 byte.
  • Timestamp: Lưu trữ một số duy nhất cho mỗi lần cập nhật trong bảng. Giá trị timestamp căn cứ vào đồng hồ nội bộ và không tương ứng với thời gian thực. Mỗi bảng chỉ có một trường timestamp.

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

  • sql_variant: Lưu trữ tối đa 8.000 byte của nhiều kiểu dữ liệu khác nhau, trừ text, ntext, timestamp.
  • uniqueidentifier: Lưu trữ một định danh toàn cầu duy nhất (GUID).
  • xml: Lưu trữ dữ liệu có định dạng XML, kích thước lưu trữ tối đa 2GB.
  • cursor: Sử dụng để lưu trữ tham chiếu đến con trỏ được sử dụng trong các hoạt động trên cơ sở dữ liệu.
  • table: Lưu trữ một tập hợp các kết quả sẽ được xử lý sau, bằng cách lưu trữ tập kết quả đó.

Đó là những kiểu dữ liệu phổ biến trong SQL Server mà bạn nên biết. Hy vọng rằng bài viết này đã giúp bạn hiểu rõ hơn về các kiểu dữ liệu trong SQL và cách sử dụng chúng. Đừng quên áp dụng kiến thức này vào công việc của mình để tránh nhầm lẫn khi truy vấn dữ liệu. Nếu bạn cần thêm thông tin, hãy truy cập Izumi.Edu.VN để tìm hiểu thêm.

FEATURED TOPIC