Các kiểu dữ liệu MySQL rất quan trọng để hiểu trước khi bạn bắt đầu tạo và làm việc với cơ sở dữ liệu MySQL. Nếu bạn chỉ định đúng từng cột, bạn đảm bảo rằng cơ sở dữ liệu được tối ưu hóa và dữ liệu được lưu trữ an toàn
Trong hướng dẫn này, bạn sẽ tìm hiểu về các kiểu dữ liệu MySQL khác nhau
Các kiểu dữ liệu trong MySQL là gì?
Tên và kiểu dữ liệu xác định từng cột trong bảng cơ sở dữ liệu. Loại dữ liệu được chỉ định cho MySQL biết loại giá trị nào nó sẽ lưu trữ, chúng yêu cầu bao nhiêu dung lượng và loại hoạt động nào nó có thể thực hiện với loại dữ liệu này
Có nhiều loại dữ liệu khác nhau mà bạn có thể lưu trữ trong bảng MySQL
Chúng được nhóm thành năm loại chính
- Kiểu dữ liệu số
- Kiểu dữ liệu ngày và giờ
- Kiểu dữ liệu chuỗi
- Các kiểu dữ liệu không gian
- Kiểu dữ liệu JSON
Đọc tiếp để tìm hiểu thêm về từng nhóm và xem chúng bao gồm những loại dữ liệu nào
Kiểu dữ liệu số
Khi lưu trữ số trong cột cơ sở dữ liệu, hãy sử dụng một trong các kiểu dữ liệu số. MySQL hỗ trợ cả kiểu dữ liệu số chính xác và gần đúng
Loại số được chia nhỏ hơn thành các nhóm sau
- Kiểu dữ liệu số nguyên
- Kiểu dữ liệu dấu phẩy động
- Các kiểu dữ liệu điểm cố định
- Kiểu dữ liệu giá trị bit
Các kiểu số nguyên
Kiểu dữ liệu số nguyên được sử dụng cho số nguyên [số nguyên]. Chúng bao gồm cả giá trị dương và âm. Tuy nhiên, chúng không xử lý các số phân số
Do đó, các số như 30 và -5435 có thể được lưu trữ dưới dạng kiểu dữ liệu số nguyên, trong khi 5,3 hoặc 1/5 thì không thể
Các kiểu số nguyên có dấu hoặc không dấu. Chúng được chia nhỏ hơn nữa dựa trên kích thước của chúng, khác nhau về chiều dài và phạm vi của chúng
BytesRange [unsigned]Range [signed]TINYINT1from 0 to 255from -128 to 127SMALLINT2from 0 to 65535from -32768 to 32767MEDIUMINT3from 0 to 16777215from -8388608 to 8388607INT4from 0 to 4294967295from -2147483648 to 2147483647BIGINT8from 0 to 18446744073709551615from -9223372036854775808 to 9223372036854775807TINYINT
là một số nguyên rất nhỏ sử dụng 1 byte dung lượng lưu trữ. Nó bao gồm tối đa 4 chữ số. Phạm vi không dấu của nó là từ 0 đến 255. Nếu nó được ký, nó có phạm vi từ -128 đến 127
SMALLINT
là một số nguyên nhỏ sử dụng 2 byte bộ nhớ. Nó bao gồm tối đa 5 chữ số. Phạm vi không dấu của nó là từ 0 đến 65535. Khi được ký, nó có phạm vi từ -32768 đến 32767
MEDIUMINT
là số nguyên cỡ trung bình sử dụng 3 byte dung lượng lưu trữ. Nó có tới 9 chữ số. Nếu không dấu, nó có phạm vi từ 0 đến 16777215. Đã ký, giá trị tối thiểu của nó là -8388608, trong khi giá trị tối đa của nó là 8388607
INT
là một số nguyên sử dụng 4 byte bộ nhớ. Nó sử dụng tới 11 chữ số. Khi không dấu, nó nằm trong khoảng từ 0 đến 4294967295. Nếu nó được ký, nó có phạm vi từ -2147483648 đến 2147483647
BIGINT
là một số nguyên lớn sử dụng 8 byte bộ nhớ. Nó có tới 20 chữ số. Giá trị được ký tối thiểu của nó là 0, trong khi giá trị được ký tối đa của nó là 18446744073709551615. Nếu được ký, nó có phạm vi từ -9223372036854775808 đến 9223372036854775807
Các loại dấu phẩy động
Các kiểu dữ liệu số dấu phẩy động là các số hữu tỷ được sử dụng để biểu thị các giá trị gần đúng. Sử dụng các kiểu dữ liệu dấu phẩy động để tính toán độ chính xác cao
Các loại dấu phẩy động bao gồm
FLOAT
đại diện cho các giá trị có độ chính xác đơn sử dụng 4 byte và bao gồm tối đa 6 hoặc 7 chữ số có nghĩaDOUBLE
đại diện cho các giá trị có độ chính xác kép sử dụng 8 byte và bao gồm tối đa 15 hoặc 16 chữ số có nghĩa
Cú pháp cơ bản để xác định kiểu dữ liệu FLOAT
/_______6 là FLOAT[M,D]
/SMALLINT
0
SMALLINT
1 đại diện cho tổng số chữ số, trong khi SMALLINT
2 là số thập phân. Ví dụ: giá trị 5143,234 sẽ được xác định là 7,3 vì nó có tổng cộng 7 chữ số và 3 chữ số sau dấu thập phân
Bạn cũng có thể sử dụng cú pháp SMALLINT
3 để chỉ định kiểu dữ liệu dấu phẩy động, trong đó SMALLINT
4 chỉ định độ chính xác. Nếu SMALLINT
4 có giá trị từ 0 đến 23, thì đó là cột có độ chính xác đơn. Nếu độ chính xác nằm trong khoảng từ 24 đến 53, thì đó là cột có độ chính xác kép
Ghi chú. Không sử dụng số dấu phẩy động khi so sánh các giá trị, đặc biệt là khi xử lý dữ liệu tiền tệ. Thay vào đó, hãy sử dụng loại dữ liệu SMALLINT
6 cho các trường hợp sử dụng đó
Các loại điểm cố định
Để lưu trữ các giá trị số chính xác, hãy sử dụng kiểu dữ liệu điểm cố định – SMALLINT
6. Vì nó đại diện cho một số chính xác, loại dữ liệu này chủ yếu được sử dụng cho dữ liệu dựa trên các giá trị chính xác [chẳng hạn như dữ liệu tiền tệ]
Cú pháp cơ bản là SMALLINT
8, trong đó SMALLINT
4 là viết tắt của độ chính xác [số chữ số có nghĩa] và SMALLINT
2 là viết tắt của tỷ lệ [số chữ số sau dấu thập phân]
Số chữ số tối đa cho độ chính xác là 65, trong khi giá trị tối đa cho tỷ lệ là 30
Nếu bạn không xác định độ chính xác và tỷ lệ, cột sẽ sử dụng các giá trị mặc định. Theo mặc định, các giá trị cho P,D là 10,0
Các loại giá trị bit
Kiểu dữ liệu MEDIUMINT
1 lưu trữ các giá trị nhị phân. Khi tạo một cột sẽ lưu trữ các giá trị như vậy, bạn xác định số lượng giá trị bit nằm trong khoảng từ 1 đến 64
Cú pháp cho kiểu dữ liệu MySQL này là MEDIUMINT
2. Nếu bạn không chỉ định MEDIUMINT
3, giá trị mặc định là 1
Kiểu dữ liệu ngày và giờ
Ngày và giờ là các kiểu dữ liệu thường được sử dụng. Cho dù bạn đang lưu trữ thời gian nhập dữ liệu, ngày sinh hay dấu thời gian hiện tại, bạn đều sử dụng một trong các cột sau
Các kiểu dữ liệu ngày và giờ bao gồm
MEDIUMINT
4,MEDIUMINT
5MEDIUMINT
6MEDIUMINT
7MEDIUMINT
8
NGÀY, DẤU THỜI GIAN
Để lưu trữ các giá trị ngày và giờ, hãy sử dụng MEDIUMINT
4 hoặc MEDIUMINT
5. Cả hai loại dữ liệu đều lưu trữ thông tin trong YYYY-MM-DD HH. MM. định dạng SS. Nó bao gồm năm, tháng, ngày, giờ, phút và giây
Sự khác biệt chính giữa hai là phạm vi của chúng
- Giá trị của
MEDIUMINT
4 nằm trong khoảng từ 1000-01-01 00. 00. 00 đến 9999-12-31 23. 59. 59 - Giá trị của
MEDIUMINT
5 nằm trong khoảng từ 1970-01-01 00. 00. 01 đến 2038-01-19 03. 14. 07
Bạn có thể bao gồm giây phân số cho cả hai tùy chọn. Để làm như vậy, chỉ định độ chính xác theo cú pháp INT
3/______34
Ví dụ: để lưu dấu thời gian 10. 53 giờ chiều ngày 1 tháng 3 năm 2021, với ba giây phân số, chỉ định loại dữ liệu INT
5. Mục nhập được lưu trữ dưới dạng. 2021-03-01 22. 53. 35. 346
Ghi chú. Tìm hiểu cách làm việc với dấu thời gian ngày/giờ trong MySQL với hướng dẫn chuyên sâu của chúng tôi về cách sử dụng Hàm ngày/giờ của MySQL
NGÀY THÁNG
MEDIUMINT
6 được dùng để lưu trữ các giá trị ngày ở định dạng YYYY-MM-DD [năm, tháng, ngày]
Loại dữ liệu hỗ trợ phạm vi 1000-01-01 đến 9999-12-31
THỜI GIAN
MEDIUMINT
7 được sử dụng để lưu trữ các giá trị thời gian dưới dạng HH-MM-SS [giờ, phút, giây] hoặc HHH-MM-SS. Các mục hiển thị thời gian đã trôi qua hoặc chênh lệch thời gian được lưu trữ và truy xuất ở định dạng dài hơn [nếu chúng cần nhiều chữ số hơn cho giờ]
Loại dữ liệu hỗ trợ phạm vi 1000-01-01 đến 9999-12-31
NĂM
MEDIUMINT
8 lưu trữ giá trị năm ở định dạng YYYY. Nó hỗ trợ các giá trị trong phạm vi 1901-2155
Trong khi các phiên bản cũ hơn MySQL 5. 7. 5 đã hỗ trợ cả mục nhập 2 và 4 chữ số cho MEDIUMINT
8, không có hỗ trợ 2 chữ số nào kể từ 5. 7. 5 phát hành
Kiểu dữ liệu chuỗi
Khi lưu trữ chuỗi dữ liệu, hãy sử dụng một trong các kiểu dữ liệu chuỗi. Chúng có thể chứa các chữ cái, số, hình ảnh hoặc tệp
Theo đó, có một số kiểu dữ liệu chuỗi khác nhau
BIGINT
0 vàBIGINT
1BIGINT
2 vàBIGINT
3BIGINT
4 vàBIGINT
5BIGINT
6BIGINT
7
CHAR và VARCHAR
BIGINT
0 và BIGINT
1 là các kiểu dữ liệu được sử dụng để lưu trữ các chuỗi không nhị phân. Sự khác biệt chính giữa hai là cách chúng lưu trữ dữ liệu
BIGINT
0 lưu trữ các chuỗi có độ dài cố định [tối đa 255 ký tự]. Khi tạo cột BIGINT
0, bạn chỉ định độ dài bằng cú pháp FLOAT
2. MEDIUMINT
3 là số lượng ký tự bạn muốn sử dụng. Nếu bạn không xác định độ dài, nó sẽ sử dụng giá trị mặc định 1
Các giá trị này được lưu trữ ở phần đệm bên phải với độ dài đã chỉ định. Do đó, nếu bạn thiết lập một cột FLOAT
4 và lưu trữ một mục gồm ba ký tự trong đó, thì nó vẫn chiếm năm ký tự
BIGINT
1 lưu trữ các chuỗi có độ dài thay đổi. Mặc dù độ dài phải được xác định khi tạo cột, nhưng các giá trị không được đệm bên phải. Chúng có giới hạn tối đa, nhưng độ dài không cố định và thay đổi tùy thuộc vào dữ liệu
Trước đây, phạm vi cho các mục là từ 0 đến 255. Sau khi phát hành MySQL 5. 0. Phạm vi 3 , BIGINT
1 lên tới 65 535 ký tự
BINARY và VARBINARY
Kiểu dữ liệu BIGINT
2 và BIGINT
3 tương tự như loại dữ liệu BIGINT
0 và BIGINT
1 đã đề cập trước đó. Sự khác biệt chính giữa hai nhóm này là BIGINT
2 và BIGINT
3 được sử dụng cho các chuỗi nhị phân
BIGINT
2 được sử dụng cho các chuỗi nhị phân có độ dài cố định, tối đa 255 byte. Cú pháp chính để xác định một cột như vậy là DOUBLE
4, trong đó MEDIUMINT
3 là số byte
BIGINT
3 lưu trữ các chuỗi nhị phân có độ dài thay đổi. MySQL phiên bản 5. 0. 3 và mới hơn lưu trữ tới 65 535 byte
BLOB và VĂN BẢN
Cả BIGINT
4 và BIGINT
5 đều được sử dụng để lưu trữ lượng lớn dữ liệu
BIGINT
4 xử lý Đối tượng lớn nhị phân [nghĩa là tập dữ liệu nhị phân lớn như hình ảnh, âm thanh hoặc tệp PDF]
Có 4 loại kiểu dữ liệu BLOB để sử dụng, tùy thuộc vào kích thước mà dữ liệu của bạn yêu cầu
FLOAT
0 [0 – 255; 255 byte]BIGINT
4 [0 – 65,535; 16 KB]FLOAT
2 [0 – 16,777,215; 16 MB]FLOAT
3 [0 – 4.294.967.295; 4 GB]
BIGINT
5 kiểu dữ liệu dùng để lưu trữ các chuỗi văn bản dài. Theo số lượng dữ liệu cần thiết, có
FLOAT
5 [0 – 255; 255 byte]BIGINT
5 [0 – 65,535; 16 KB]FLOAT
7 [0 – 16,777,215; 16 MB]FLOAT
8 [0 – 4.294.967.295; 4 GB]
ENUM
Kiểu dữ liệu BIGINT
6 được sử dụng để lưu trữ một trong các giá trị có thể được xác định trước trong một cột. Cột có thể có tới 65535 giá trị riêng biệt
Khi tạo cột bảng BIGINT
6 trong MySQL, bạn chỉ định danh sách tất cả các giá trị được phép
BỘ
Giống như BIGINT
6, loại dữ liệu BIGINT
7 có một danh sách xác định trước các giá trị có thể được lưu trữ trong cột
Sự khác biệt chính giữa hai loại này là BIGINT
7 cho phép một mục có nhiều hơn một giá trị
Ví dụ: nếu cột được xác định là DOUBLE
4 và có bốn giá trị có thể có trong danh sách, một mục có thể có giá trị 'Đỏ', trong khi một mục khác có thể có giá trị 'Đỏ','Vàng'
Số lượng giá trị tối đa được phép là 64
Các kiểu dữ liệu không gian
Khi lưu trữ dữ liệu không gian, bạn có thể sử dụng một trong nhiều kiểu dữ liệu không gian khác nhau mà MySQL hỗ trợ. Chúng được sử dụng để thể hiện thông tin về hình dạng hình học và vị trí vật lý
Chúng ta có thể chia thành hai nhóm
- Giá trị hình học đơn
- Bộ sưu tập các giá trị
Giá trị hình học đơn
Các loại dữ liệu hình học đơn lẻ bao gồm DOUBLE
5, DOUBLE
6, DOUBLE
7 và DOUBLE
8
DOUBLE
5 lưu trữ bất kỳ loại giá trị hình học/không gian nàoDOUBLE
6 được sử dụng cho một giá trị điểm duy nhấtDOUBLE
7 lưu trữ một tập hợp nhiều điểm tạo thành một đườngDOUBLE
8 là kiểu dữ liệu được sử dụng để lưu trữ một tập hợp nhiều điểm tạo thành một mặt đa giác
Bộ sưu tập các giá trị
Tập hợp các loại dữ liệu giá trị bao gồm FLOAT[M,D]
3, FLOAT[M,D]
4, FLOAT[M,D]
5 và FLOAT[M,D]
6
FLOAT[M,D]
3 lưu trữ một tập hợp các giá trị hình học/không gianFLOAT[M,D]
4 được sử dụng để lưu trữ một tập hợp nhiều giá trị điểmFLOAT[M,D]
5 lưu trữ một bộ sưu tập nhiều dòngFLOAT[M,D]
6 được sử dụng cho một tập hợp nhiều đa giác
Các kiểu dữ liệu JSON
Kể từ phiên bản 5. 7. 8, MySQL bao gồm hỗ trợ cho kiểu dữ liệu gốc SMALLINT
01, cho phép người dùng lưu trữ và quản lý tài liệu JSON thông qua cơ sở dữ liệu
MySQL đảm bảo rằng các tài liệu JSON hợp lệ và lưu trữ chúng vào cột JSON
Phần kết luận
Như bài viết đã phác thảo, có nhiều kiểu dữ liệu MySQL khác nhau để lựa chọn. Có nhiều loại lúc đầu có vẻ khó hiểu. Tuy nhiên, sự đa dạng của các loại dữ liệu chắc chắn sẽ giúp bạn tìm được loại phù hợp nhất với dữ liệu của mình và tối ưu hóa cơ sở dữ liệu để hoạt động tốt nhất.