Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Các kiểu dữ liệu MySQL:Biết những kiểu dữ liệu để sử dụng và cách thức

Khi tạo một bảng trong cơ sở dữ liệu, nó phải có cả tên và kiểu dữ liệu. Kiểu dữ liệu của cột xác định các giá trị mà cột giữ, chẳng hạn như số nguyên, tiền, nhị phân, ký tự, ngày và giờ. Do đó, nhiệm vụ của nhà phát triển là xác định loại dữ liệu nào sẽ được lưu trữ trong mỗi cột khi tạo cơ sở dữ liệu và bảng.

Nói một cách dễ hiểu, kiểu dữ liệu là những hướng dẫn hỗ trợ SQL hiểu được kiểu dữ liệu nào được yêu cầu bên trong một cột. Nó cũng hiệu quả trong việc xác định cách SQL tương tác với dữ liệu được lưu trữ.

Một điểm cần lưu ý là các kiểu dữ liệu có thể chứa các tên khác nhau trong các cơ sở dữ liệu khác nhau và trong trường hợp các tên giống nhau, các khía cạnh và chi tiết khác như kích thước sẽ khác nhau. Do đó, bạn nên luôn tham khảo tài liệu bất cứ khi nào gặp trường hợp tương tự.

Các đặc điểm sau có thể xác định các kiểu dữ liệu trong MySQL:

  • Giá trị của các loại dữ liệu có thể được lập chỉ mục và những giá trị không thể được lập chỉ mục
  • Loại giá trị mà chúng đại diện
  • Không gian mà chúng chiếm, cho dù các giá trị có độ dài thay đổi hay độ dài cố định
  • Cách MySQL so sánh với các giá trị khác nhau của các kiểu dữ liệu cụ thể

Trước khi chúng ta đi sâu vào và giới thiệu các kiểu dữ liệu MySQL, điều cần thiết là phải tìm hiểu và hiểu các quy ước được sử dụng bởi các mô tả kiểu dữ liệu như được đánh dấu bên dưới:

  • ( M ):Đối với kiểu số nguyên, nó cho biết độ rộng tối đa mà kiểu dữ liệu có thể hiển thị.
    :Nó biểu thị tổng số chữ số có thể được lưu trữ cho kiểu dấu phẩy cố định và kiểu dấu phẩy động.
    :Đối với các loại chuỗi, nó hiển thị độ dài tối đa

Lưu ý: M Giá trị cho phép tối đa của phụ thuộc vào loại dữ liệu

• ( Đ ):Chỉ áp dụng cho kiểu dấu chấm cố định và kiểu dấu chấm động. Nó cho biết tỷ lệ (số chữ số theo sau dấu thập phân). Giá trị tối đa có thể là 10, trong khi giá trị này không được quan trọng hơn M -2

• Dấu ngoặc vuông ([và]) hiển thị các phần tùy chọn của loại định nghĩa.

f sp: quy ước này áp dụng cho các loại dấu thời gian, DateTime và thời gian. Nó đại diện cho độ chính xác của phân số giây (số chữ số theo sau dấu thập phân cho giây phân số). fsp đã cho giá trị phải nằm trong khoảng từ 0-6. Giá trị 0 biểu thị rằng không có phần phân số nào có trong giá trị đã cho. Tuy nhiên, trong trường hợp giá trị bị bỏ qua, thì độ chính xác được biểu thị là 0. Trong MySQL, có ba danh mục chính của kiểu dữ liệu chứa các danh mục con. Các kiểu dữ liệu chính là:

  1. Kiểu dữ liệu chuỗi
  2. Kiểu dữ liệu Ngày và Giờ.
  3. Kiểu dữ liệu số

Có các kiểu dữ liệu khác được hỗ trợ bởi MySQL, chẳng hạn như kiểu dữ liệu Không gian và kiểu dữ liệu JSON.

Bài viết này sẽ bao gồm toàn diện tất cả các kiểu dữ liệu được đề cập ở trên. Do đó, để hiểu rõ về các loại dữ liệu, hãy xem bài viết này.

Các kiểu dữ liệu chuỗi

Các kiểu dữ liệu chuỗi chủ yếu được sử dụng để chứa dữ liệu nhị phân và văn bản thuần túy như hình ảnh và tệp. Ngoài ra, MYSQL có khả năng so sánh và tìm kiếm các giá trị chuỗi dựa trên mẫu phù hợp, chẳng hạn như các biểu thức chính quy và toán tử.

Dưới đây là minh họa chi tiết về tất cả các kiểu dữ liệu chuỗi mà MySQL hỗ trợ:

CHAR ( kích thước ): Đây là độ dài cố định của một chuỗi. Nó có thể chứa các chữ cái, ký tự đặc biệt hoặc số. Tham số kích thước biểu thị độ dài của cột bằng ký tự và nó có thể nằm trong khoảng từ 0-255. Kích thước mặc định là 1.

VARCHAR ( kích thước ): Đây là độ dài thay đổi của một chuỗi. Nó chứa số, ký tự đặc biệt hoặc chữ cái. Tham số kích thước hiển thị độ dài tối đa của cột bằng ký tự và nó có thể nằm trong khoảng từ 0-65535.

BINARY ( kích thước ): Chúng bằng CHAR (), chỉ lưu trữ các chuỗi byte nhị phân. Tham số kích thước chỉ định độ dài của cột theo byte. Giá trị mặc định là 1

VARBINARY ( kích thước ): Giá trị này bằng với VARCHAR (), chỉ là nó lưu trữ các chuỗi byte nhị phân. Tham số kích thước chỉ định độ dài tối đa của cột tính bằng byte.

TINYTEXT: Giữ các chuỗi có độ dài tối đa là 255 ký tự.

TEXT ( kích thước ): Giữ các chuỗi có độ dài tối đa là 65,535 byte.

BLOB ( kích thước ): Đối với các đối tượng lớn nhị phân (BLOB). Chúng chứa tới 65.535 byte dữ liệu.

TINYBLOB: Đối với các đối tượng lớn nhị phân (BLOB). Nó chứa độ dài tối đa là 255 byte.

LONGLOB: Đối với các đối tượng lớn nhị phân (BLOB). Chúng chứa tới 4.294.967.295 byte dữ liệu.

DÀI TIẾP: Giữ các chuỗi có độ dài tối đa là 4,294,967,295 ký tự.

VĂN BẢN TRUNG BÌNH: Giữ các chuỗi có độ dài tối đa là 16.777.215 ký tự.

MEDIUMBLOB: Đối với các đối tượng lớn nhị phân (BLOB). Chúng chứa tới 16.777.215 byte dữ liệu.

SET ( val1, val2, val3,… ): Đây là một đối tượng chuỗi có chứa nhiều hơn một giá trị (chuỗi chứa 0 hoặc nhiều giá trị). Chúng được chọn từ danh sách các giá trị có thể có giống như ENUM. Tuy nhiên, trong danh sách SET, bạn chỉ có thể liệt kê tối đa 64 giá trị.

ENUM ( val1, val2, val3,… ): Đây là một đối tượng chuỗi chỉ có thể chứa một giá trị được chọn từ danh sách tất cả các giá trị có thể có. Trong danh sách ENUM, bạn có thể liệt kê tới 65535 giá trị. Nếu một giá trị không có trong danh sách được chèn, thì giá trị được chèn sẽ trống. Ngoài ra, cần lưu ý rằng các giá trị được sắp xếp tùy thuộc vào thứ tự mà người dùng đã nhập.

Các kiểu dữ liệu Ngày và Giờ

Các kiểu dữ liệu ngày và giờ chỉ định các giá trị tạm thời như DateTime, timestamp, năm, giờ và ngày. Mỗi kiểu thời gian được đề cập có các giá trị bao gồm bằng không. Bất cứ khi nào một giá trị không hợp lệ được chèn vào, MySQL không thể đại diện cho nó. Do đó, số 0 được chọn.

Dưới đây là minh họa toàn diện về các kiểu dữ liệu ngày và giờ được MySQL hỗ trợ:

NGÀY: Định dạng ngày tiêu chuẩn lần lượt là năm, tháng và ngày (YYYY-MM-DD) và phạm vi được hỗ trợ là ‘1000-01-01’ đến ‘9999-12-31’.

DATETIME ( fsp ): Đây là sự kết hợp của cả ngày và giờ. Định dạng chuẩn, trong trường hợp này, lần lượt là năm, tháng, ngày, giờ, phút và giây (YYYY-MM-DD hh:mm:ss)

Lưu ý: Thêm DEFAULT và ON UPDATE trong một cột là điều cần thiết khi bắt đầu khởi chạy tự động và nó cập nhật ngày và giờ hiện tại.

TIMESTAMP ( fsp ): Kể từ kỷ nguyên Unix, các giá trị dấu thời gian được lưu trữ dưới dạng số giây chẳng hạn như (‘1970-01-01 00; 00; 00’ UTC). Định dạng tiêu chuẩn lần lượt là năm, tháng, ngày, giờ, phút và giây (YYYY-MM-DD hh:mm:ss) trong khi phạm vi được hỗ trợ là giữa '(' 1970-01-01 00; 00; 01 'UTC đến ('2038-01-09 03; 14; 07' UTC. DEFAULT_CURRENT_TIMESTAMP và ON UPDATE CURRENT_TIMESTAMP rất quan trọng để tự động khởi tạo và cập nhật ngày và giờ hiện tại.

THỜI GIAN ( fsp ): Định dạng thời gian được hỗ trợ tiêu chuẩn lần lượt là giờ, phút, giây (hh:mm:ss) và phạm vi được hỗ trợ là ‘-838:59:59’ đến ‘838:59:59’.

NĂM: Một năm được biểu thị ở định dạng bốn chữ số — các giá trị được phép ở định dạng bốn chữ số nằm trong khoảng từ 1902 đến 2155 và 0000.

Lưu ý: Phiên bản mới nhất của MySQL (8.0) không hỗ trợ năm định dạng hai chữ số.

Các kiểu dữ liệu số

Các kiểu dữ liệu số bao gồm tất cả các kiểu dữ liệu số chính xác như số nguyên, số thập phân và số. Nó cũng chứa các kiểu dữ liệu số gần đúng như float, double, double precision và real. Kiểu dữ liệu số lưu trữ các giá trị bit vì chúng hỗ trợ kiểu dữ liệu BIT. Thông thường, kiểu dữ liệu số trong MySQL được chia thành hai loại:Kiểu dữ liệu có dấu và Kiểu dữ liệu không dấu; tuy nhiên, đây là một ngoại lệ đối với các kiểu dữ liệu bit.

Dưới đây là hình minh họa chi tiết chứa tất cả các kiểu dữ liệu số được MySQL hỗ trợ và mô tả của chúng:

BIT ( kích thước ): Đây là kiểu giá trị bit, theo đó số bit trên mỗi giá trị được biểu thị theo kích thước . Tham số kích thước có khả năng giữ các giá trị từ 1 đến 64 và giá trị mặc định của nó cho kích thước là 1.

TINYINT ( kích thước ): Đây là một số nguyên rất nhỏ có phạm vi có dấu nằm trong khoảng từ -128 đến 127 trong khi phạm vi không dấu của nó nằm trong khoảng từ 0 đến 255. Tham số size biểu thị chiều rộng tối đa được hiển thị, khoảng 255.

BOOLEAN: Nó tương đương với một BOOL

BỒI DƯỠNG: Trong BOOL, các giá trị khác không được coi là đúng. Đồng thời, các giá trị Zero được coi là sai.

INT ( kích thước ): Đây là một số nguyên trung bình có phạm vi có dấu nằm trong khoảng từ -2147483648 đến 2147483647, trong khi phạm vi không dấu nằm trong khoảng từ 0 đến 4294967295. Tham số size chỉ định chiều rộng tối đa được hiển thị, khoảng 255.

MEDIUMINT ( kích thước ): Đây cũng là một số nguyên trung bình có phạm vi có dấu nằm trong khoảng từ -32768 đến 32767 trong khi phạm vi không dấu của nó nằm trong khoảng từ 0 đến 65535. Tham số size chỉ định chiều rộng tối đa được hiển thị, khoảng 255.

SMALLINT ( kích thước ): Đây là một số nguyên nhỏ có phạm vi có dấu là từ -32768 đến 32767, trong khi phạm vi không có dấu là từ 0 đến 16777215. Kích thước , trong trường hợp này, được sử dụng để chỉ định chiều rộng hiển thị tối đa, có phạm vi khoảng 255.

NỔI ( kích thước, d ): Nó là một số dấu phẩy động có tổng số chữ số được biểu thị bằng kích thước. Cái d tham số giúp chỉ định số chữ số sau dấu thập phân.

Lưu ý: tham số này đã không được chấp nhận trong MySQL phiên bản 8.0.17. Do đó, nó sẽ không được sao chép trong các phiên bản MySQL trong tương lai.

INTEGER ( kích thước ): Điều này tương đương với INT ( kích thước ).

NỔI ( p ): Nó là một số dấu phẩy động. The P tham số được sử dụng để xác định liệu FLOAT hay DOUBLE sẽ được sử dụng trong một kiểu dữ liệu kết quả. Khi P -giá trị nằm trong khoảng từ 0 đến 24, dữ liệu được gọi là FLOAT (). Trong khi đó khi P -giá trị nằm trong khoảng từ 25 đến 53, sau đó kiểu dữ liệu thay đổi thành DOUBLE ().

DEC ( kích thước, d ): Đây tương đương với DECIMAL ( kích thước, d )

DOUBLE ( kích thước, d ): Điều này biểu thị một kích thước tiêu chuẩn số dấu phẩy động có tổng số chữ số được cho trước về kích thước. Cái d tham số giúp chỉ định số chữ số sau dấu thập phân.

QUYẾT ĐỊNH ( kích thước, d ): Đây là một số điểm cố định chính xác có tổng số chữ số được chỉ định theo kích thước . Cái d tham số chỉ định các chữ số sau dấu thập phân. Kích thước tối đa số là 65, trong khi d số tối đa là 30. Do đó, giá trị mặc định cho d là 0, trong khi giá trị mặc định cho kích thước là 10.

Lưu ý: tất cả các kiểu số đều chứa các tùy chọn bổ sung; ZEROFILL và UNSIGNED. Nếu tùy chọn UNSIGNED được thêm vào, thì MySQL sẽ không cho phép các giá trị âm trong cột. Mặt khác, nếu tùy chọn ZEROFILL được thêm vào, MySQL sẽ tự động thêm thuộc tính UNSIGNED vào cột đã nói.

Các loại dữ liệu khác

Kiểu dữ liệu Boolean

Kiểu số nguyên nhỏ nhất TINYINT (1), được sử dụng để đại diện cho các giá trị Boolean trong MySQL vì MySQL không chứa kiểu dữ liệu BOOL hoặc BOOLEAN được tích hợp sẵn. Do đó, khi làm việc với BOOL và BOOLEAN, bạn nên đánh đồng chúng với TINYINT (1).

Kiểu dữ liệu không gian

MySQL cung cấp hỗ trợ cho một số kiểu dữ liệu không gian có nhiều loại giá trị địa lý và hình học, như được chỉ ra bên dưới:

HÌNH HỌC: Đây là tổng hợp hoặc điểm có thể giữ giá trị không gian của bất kỳ loại nào miễn là chúng có vị trí.

POLYGON: Đây là một bề mặt phẳng được biểu diễn bằng một hình học nhiều mặt. Nó có thể được xác định bằng 0 hoặc chỉ một ranh giới bên ngoài và nhiều bên trong.

MULTILINESTRING: Đây là dạng hình học nhiều đường cong chứa tập hợp các giá trị LINESTRING.

MULTIPOLYGON: Đây là một đối tượng nhiều bề mặt được thể hiện bằng một tập hợp của một số phần tử đa giác và nó là một hình học hai chiều

ĐIỂM: Đây là một điểm hoặc một cặp có chứa tọa độ X và Y. Nó có thể được cho là một điểm trong hình học đại diện cho một vị trí duy nhất.

PHÂN TÍCH HÌNH HỌC: Đây là tập hợp các giá trị GEOMETRY

LINESTRING: Đây là một đường cong có chứa một hoặc nhiều giá trị điểm. Trong trường hợp một chuỗi dòng chỉ chứa hai điểm, thì điều đó có nghĩa là nó đại diện cho một dòng.

ĐA SỐ: Đây là tập hợp các giá trị POINT, theo đó điểm không thể được sắp xếp hoặc kết nối theo bất kỳ cách nào.

Kiểu dữ liệu JSON

MYSQL đã hỗ trợ kiểu dữ liệu JSON gốc kể từ khi ra đời phiên bản 5.7.8, cho phép lưu trữ và quản lý các tài liệu JSON một cách nhanh chóng và hiệu quả. Ngoài ra, kiểu dữ liệu JSON gốc chịu trách nhiệm cung cấp định dạng lưu trữ tối ưu và xác thực tự động các tài liệu JSON.

Kết luận

Bài viết này đã trình bày một cách toàn diện tất cả các khía cạnh liên quan đến kiểu dữ liệu MySQL sẽ giúp bạn hiểu được kiểu dữ liệu nào nên được sử dụng và cách chúng nên được sử dụng. Chúng tôi tin rằng bài viết cũng sẽ giúp nâng cao kiến ​​thức của bạn về MySQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_SET () - Chèn hoặc cập nhật giá trị trong tài liệu JSON trong MySQL

  2. MariaDB - MySQL - Hiển thị các công cụ để hiển thị tất cả các công cụ có sẵn và được hỗ trợ

  3. Cách đánh số lại chỉ mục chính

  4. Làm cách nào để tôi có thể lặp qua tất cả các hàng của bảng? (MySQL)

  5. MySQL InnoDB Cluster 8.0 - Hướng dẫn hoạt động hoàn chỉnh:Phần thứ hai