Chương 11 Kiểu dữ liệu
MySQL hỗ trợ các loại dữ liệu SQL trong một số loại: loại số, loại ngày và thời gian, loại chuỗi [ký tự và byte], loại không gian và loại dữ liệu JSON
. Chương này cung cấp một cái nhìn tổng quan và mô tả chi tiết hơn về các thuộc tính của các loại trong mỗi loại và tóm tắt các yêu cầu lưu trữ kiểu dữ liệu. Các tổng quan ban đầu được cố ý ngắn gọn. Tham khảo các mô tả chi tiết hơn để biết thêm thông tin về các loại dữ liệu cụ thể, chẳng hạn như các định dạng cho phép trong đó bạn có thể chỉ định các giá trị.
Mô tả kiểu dữ liệu Sử dụng các quy ước này:
Đối với các loại số nguyên,
M
cho biết chiều rộng hiển thị tối đa. Đối với các loại điểm nổi và điểm cố định,M
là tổng số chữ số có thể được lưu trữ [độ chính xác]. Đối với các loại chuỗi,M
là độ dài tối đa. Giá trị tối đa cho phép củaM
phụ thuộc vào kiểu dữ liệu.D
áp dụng cho các loại điểm nổi và điểm cố định và chỉ ra số lượng các chữ số theo điểm thập phân [tỷ lệ]. Giá trị tối đa có thể là 30, nhưng không nên lớn hơn ________ 1−2.fsp
áp dụng cho các loạiTIME
,DATETIME
vàM
0 và biểu thị độ chính xác giây của phân số; Đó là, số lượng các chữ số theo điểm thập phân cho các phần phân số của giây. Giá trịfsp
, nếu được đưa ra, phải nằm trong phạm vi 0 đến 6. Giá trị 0 biểu thị rằng không có phần phân số. Nếu bị bỏ qua, độ chính xác mặc định là 0. [điều này khác với mặc định SQL tiêu chuẩn là 6, để tương thích với các phiên bản MySQL trước đó.]Dấu ngoặc vuông [
M
2 vàM
3] cho biết các phần tùy chọn của định nghĩa loại.
11 loại dữ liệu là gì?
Loại dữ liệu.
Đối với hầu hết các giá trị dữ liệu, chẳng hạn như các giá trị được lưu trữ trong các biến, số nguyên, shortInteger, thập phân, ngắn phân giải, số, văn bản, id, ntext, boolean, datetime và các loại dữ liệu ngày được hỗ trợ ..
Đối với các giá trị kích thước, số nguyên, số, văn bản, ID và các loại dữ liệu ntext được hỗ trợ ..
Văn bản kiểu dữ liệu trong MySQL là gì? Data types might have different names in different database. And even if the name is the same, the size and other details may be different! Always check the documentation!
Văn bản MySQL là một loại dữ liệu tiêu chuẩn để lưu trữ các chuỗi ký tự đặc biệt với kích thước tối đa hoặc như được xác định. Theo thứ tự của bộ ký tự của nó, các đánh giá và sắp xếp được xây dựng. Trong thực tế, loại dữ liệu văn bản này cho một cột bao gồm bốn loại. Chúng là Tinytext, Text, Mediumtext, Longtext.
Kiểu dữ liệu của một cột xác định giá trị mà cột có thể giữ: số nguyên, ký tự, tiền, ngày và thời gian, nhị phân, v.v.
Kiểu dữ liệu SQL
Lưu ý: Các loại dữ liệu có thể có tên khác nhau trong cơ sở dữ liệu khác nhau. Và ngay cả khi tên giống nhau, kích thước và các chi tiết khác có thể khác nhau! Luôn luôn kiểm tra tài liệu! | Kiểu dữ liệu MySQL [phiên bản 8.0] |
Trong MySQL có ba loại dữ liệu chính: chuỗi, số và ngày và thời gian. | Kiểu dữ liệu chuỗi |
Loại dữ liệu | Sự mô tả |
Char [kích thước] | Một chuỗi độ dài cố định [có thể chứa các chữ cái, số và ký tự đặc biệt]. Tham số kích thước chỉ định độ dài cột tính bằng các ký tự - có thể từ 0 đến 255. Mặc định là 1 |
Varchar [kích thước] | Một chuỗi độ dài thay đổi [có thể chứa các chữ cái, số và ký tự đặc biệt]. Tham số kích thước chỉ định độ dài chuỗi tối đa tính bằng các ký tự - có thể từ 0 đến 65535 |
Nhị phân [kích thước] | Bằng char [], nhưng lưu trữ chuỗi byte nhị phân. Tham số kích thước chỉ định độ dài cột tính bằng byte. Mặc định là 1 |
Varbinary [kích thước] | Bằng varchar [], nhưng lưu trữ chuỗi byte nhị phân. Tham số kích thước chỉ định độ dài cột tối đa tính bằng byte. |
Tinyblob | Cho BLOBS [các đối tượng lớn nhị phân]. Độ dài tối đa: 255 byte |
Tinytext | Giữ một chuỗi có chiều dài tối đa 255 ký tự |
Cỡ chữ] | Giữ một chuỗi có chiều dài tối đa là 65,535 byte |
Blob [kích thước] | Cho BLOBS [các đối tượng lớn nhị phân]. Chứa tới 65.535 byte dữ liệu |
Tương tự | Giữ một chuỗi có chiều dài tối đa là 16.777.215 ký tự |
Trung bình | Cho BLOBS [các đối tượng lớn nhị phân]. Chứa tới 16.777.215 byte dữ liệu |
VĂN BẢN DÀI | Giữ một chuỗi có chiều dài tối đa là 4.294.967.295 ký tự |
Longblob
Lưu ý: Các loại dữ liệu có thể có tên khác nhau trong cơ sở dữ liệu khác nhau. Và ngay cả khi tên giống nhau, kích thước và các chi tiết khác có thể khác nhau! Luôn luôn kiểm tra tài liệu! | Kiểu dữ liệu MySQL [phiên bản 8.0] |
Tinyint [kích thước] | Một số nguyên rất nhỏ. Phạm vi đã ký là từ -128 đến 127. Phạm vi không dấu là từ 0 đến 255. Tham số kích thước chỉ định chiều rộng hiển thị tối đa [là 255] |
Bool | Không được coi là sai, các giá trị khác không được coi là đúng. |
Boolean | Bằng bool |
Smallint [kích thước] | Một số nguyên nhỏ. Phạm vi đã ký là từ -32768 đến 32767. Phạm vi không dấu là từ 0 đến 65535. Tham số kích thước chỉ định chiều rộng hiển thị tối đa [là 255] |
Trung bình [kích thước] | Một số nguyên trung bình. Phạm vi đã ký là từ -8388608 đến 8388607. Phạm vi không dấu là từ 0 đến 16777215. Tham số kích thước chỉ định độ rộng hiển thị tối đa [là 255] |
Int [kích thước] | Một số nguyên trung bình. Phạm vi đã ký là từ -2147483648 đến 2147483647. Phạm vi không dấu là từ 0 đến 4294967295. Tham số kích thước chỉ định chiều rộng hiển thị tối đa [là 255] |
Số nguyên [kích thước] | Bằng int [kích thước] |
Bigint [kích thước] | Một số nguyên lớn. Phạm vi đã ký là từ -9223372036854775808 đến 9223372036854775807. Phạm vi không dấu là từ 0 đến 18446744073709551615. |
Float [kích thước, D] | Một số điểm nổi. Tổng số chữ số được chỉ định theo kích thước. Số chữ số sau điểm thập phân được chỉ định trong tham số D. Cú pháp này được không dùng nữa trong MySQL 8.0.17 và nó sẽ bị xóa trong các phiên bản MySQL trong tương lai |
Float [P] | Một số điểm nổi. MySQL sử dụng giá trị p để xác định xem có sử dụng float hay gấp đôi cho kiểu dữ liệu kết quả. Nếu P là từ 0 đến 24, kiểu dữ liệu sẽ nổi []. Nếu P là từ 25 đến 53, kiểu dữ liệu sẽ tăng gấp đôi [] |
Double [kích thước, D] | Một số điểm nổi có kích thước bình thường. Tổng số chữ số được chỉ định theo kích thước. Số chữ số sau điểm thập phân được chỉ định trong tham số D |
Độ chính xác gấp đôi [kích thước, d] | & nbsp; |
Thập phân [kích thước, d] | Một số điểm cố định chính xác. Tổng số chữ số được chỉ định theo kích thước. Số chữ số sau điểm thập phân được chỉ định trong tham số D. Số tối đa cho kích thước là 65. Số tối đa cho D là 30. Giá trị mặc định cho kích thước là 10. Giá trị mặc định cho D là 0. |
DEC [Kích thước, D] | Bằng thập phân [kích thước, d] |
Lưu ý: Tất cả các loại dữ liệu số có thể có một tùy chọn bổ sung: không dấu hoặc zerofill. Nếu bạn thêm tùy chọn không dấu, MySQL không cho phép các giá trị âm cho cột. Nếu bạn thêm tùy chọn Zerofill, MySQL tự động cũng sẽ thêm thuộc tính không dấu vào cột. All the numeric data types may have an extra option: UNSIGNED or ZEROFILL. If you add the UNSIGNED option, MySQL disallows negative values for the column. If you add the ZEROFILL option, MySQL automatically also adds the UNSIGNED attribute to the column.
Kiểu dữ liệu ngày và giờ
NGÀY | Một buổi hẹn hò. Định dạng: Yyyy-MM-DD. Phạm vi được hỗ trợ là từ '1000-01-01' đến '9999-12-31' |
DateTime [FSP] | Sự kết hợp ngày và giờ. Định dạng: YYYY-MM-DD HH: MM: SS. Phạm vi được hỗ trợ là từ '1000-01-01 00:00:00' đến '9999-12-31 23:59:59'. Thêm mặc định và cập nhật trong định nghĩa cột để tự động khởi tạo và cập nhật vào ngày và giờ hiện tại |
Dấu thời gian [FSP] | Một dấu thời gian. Các giá trị dấu thời gian được lưu trữ dưới dạng số giây kể từ Epoch Unix ['1970-01-01 00:00:00' UTC]. Định dạng: YYYY-MM-DD HH: MM: SS. Phạm vi được hỗ trợ là từ '1970-01-01 00:00:01' UTC đến '2038-01-09 03:14:07' UTC. Tự động khởi tạo và cập nhật vào ngày và thời gian hiện tại có thể được chỉ định bằng cách sử dụng mặc định |
Thời gian [FSP] | Một thời gian. Định dạng: HH: MM: SS. Phạm vi được hỗ trợ là từ '-838: 59: 59' đến '838: 59: 59' |
NĂM | Một năm ở định dạng bốn chữ số. Các giá trị được phép ở định dạng bốn chữ số: 1901 đến 2155 và 0000. MySQL 8.0 không hỗ trợ năm ở định dạng hai chữ số. MySQL 8.0 does not support year in two-digit format. |
Kiểu dữ liệu máy chủ SQL
Kiểu dữ liệu chuỗi
DateTime [FSP] | Sự kết hợp ngày và giờ. Định dạng: YYYY-MM-DD HH: MM: SS. Phạm vi được hỗ trợ là từ '1000-01-01 00:00:00' đến '9999-12-31 23:59:59'. Thêm mặc định và cập nhật trong định nghĩa cột để tự động khởi tạo và cập nhật vào ngày và giờ hiện tại | Dấu thời gian [FSP] | Một dấu thời gian. Các giá trị dấu thời gian được lưu trữ dưới dạng số giây kể từ Epoch Unix ['1970-01-01 00:00:00' UTC]. Định dạng: YYYY-MM-DD HH: MM: SS. Phạm vi được hỗ trợ là từ '1970-01-01 00:00:01' UTC đến '2038-01-09 03:14:07' UTC. Tự động khởi tạo và cập nhật vào ngày và thời gian hiện tại có thể được chỉ định bằng cách sử dụng mặc định |
Thời gian [FSP] | Một thời gian. Định dạng: HH: MM: SS. Phạm vi được hỗ trợ là từ '-838: 59: 59' đến '838: 59: 59' | Dấu thời gian [FSP] | Một dấu thời gian. Các giá trị dấu thời gian được lưu trữ dưới dạng số giây kể từ Epoch Unix ['1970-01-01 00:00:00' UTC]. Định dạng: YYYY-MM-DD HH: MM: SS. Phạm vi được hỗ trợ là từ '1970-01-01 00:00:01' UTC đến '2038-01-09 03:14:07' UTC. Tự động khởi tạo và cập nhật vào ngày và thời gian hiện tại có thể được chỉ định bằng cách sử dụng mặc định |
Thời gian [FSP] | Một thời gian. Định dạng: HH: MM: SS. Phạm vi được hỗ trợ là từ '-838: 59: 59' đến '838: 59: 59' | NĂM | Một dấu thời gian. Các giá trị dấu thời gian được lưu trữ dưới dạng số giây kể từ Epoch Unix ['1970-01-01 00:00:00' UTC]. Định dạng: YYYY-MM-DD HH: MM: SS. Phạm vi được hỗ trợ là từ '1970-01-01 00:00:01' UTC đến '2038-01-09 03:14:07' UTC. Tự động khởi tạo và cập nhật vào ngày và thời gian hiện tại có thể được chỉ định bằng cách sử dụng mặc định |
Thời gian [FSP] | Một thời gian. Định dạng: HH: MM: SS. Phạm vi được hỗ trợ là từ '-838: 59: 59' đến '838: 59: 59' | NĂM | Một năm ở định dạng bốn chữ số. Các giá trị được phép ở định dạng bốn chữ số: 1901 đến 2155 và 0000. MySQL 8.0 không hỗ trợ năm ở định dạng hai chữ số. |
Kiểu dữ liệu máy chủ SQL | Kiểu dữ liệu chuỗi | Kích thước tối đa | Kho |
char [n] | Đã sửa lỗi chuỗi ký tự chiều rộng | Kích thước tối đa | & nbsp; |
Thập phân [kích thước, d] | Đã sửa lỗi chuỗi ký tự chiều rộng | 8.000 ký tự | & nbsp; |
Thập phân [kích thước, d] | Đã sửa lỗi chuỗi ký tự chiều rộng | NĂM | & nbsp; |
Thập phân [kích thước, d] | Một số điểm cố định chính xác. Tổng số chữ số được chỉ định theo kích thước. Số chữ số sau điểm thập phân được chỉ định trong tham số D. Số tối đa cho kích thước là 65. Số tối đa cho D là 30. Giá trị mặc định cho kích thước là 10. Giá trị mặc định cho D là 0. | DEC [Kích thước, D] | & nbsp; |
Thập phân [kích thước, d] | Một số điểm cố định chính xác. Tổng số chữ số được chỉ định theo kích thước. Số chữ số sau điểm thập phân được chỉ định trong tham số D. Số tối đa cho kích thước là 65. Số tối đa cho D là 30. Giá trị mặc định cho kích thước là 10. Giá trị mặc định cho D là 0. | DEC [Kích thước, D] | & nbsp; |
Thập phân [kích thước, d] | Một số điểm cố định chính xác. Tổng số chữ số được chỉ định theo kích thước. Số chữ số sau điểm thập phân được chỉ định trong tham số D. Số tối đa cho kích thước là 65. Số tối đa cho D là 30. Giá trị mặc định cho kích thước là 10. Giá trị mặc định cho D là 0. | DEC [Kích thước, D] | & nbsp; |
Thập phân [kích thước, d] | Một số điểm cố định chính xác. Tổng số chữ số được chỉ định theo kích thước. Số chữ số sau điểm thập phân được chỉ định trong tham số D. Số tối đa cho kích thước là 65. Số tối đa cho D là 30. Giá trị mặc định cho kích thước là 10. Giá trị mặc định cho D là 0. | DEC [Kích thước, D] | & nbsp; |
Thập phân [kích thước, d]
DateTime [FSP] | Sự kết hợp ngày và giờ. Định dạng: YYYY-MM-DD HH: MM: SS. Phạm vi được hỗ trợ là từ '1000-01-01 00:00:00' đến '9999-12-31 23:59:59'. Thêm mặc định và cập nhật trong định nghĩa cột để tự động khởi tạo và cập nhật vào ngày và giờ hiện tại | & nbsp; |
Thập phân [kích thước, d] | Một số điểm cố định chính xác. Tổng số chữ số được chỉ định theo kích thước. Số chữ số sau điểm thập phân được chỉ định trong tham số D. Số tối đa cho kích thước là 65. Số tối đa cho D là 30. Giá trị mặc định cho kích thước là 10. Giá trị mặc định cho D là 0. | DEC [Kích thước, D] |
Bằng thập phân [kích thước, d] | Lưu ý: Tất cả các loại dữ liệu số có thể có một tùy chọn bổ sung: không dấu hoặc zerofill. Nếu bạn thêm tùy chọn không dấu, MySQL không cho phép các giá trị âm cho cột. Nếu bạn thêm tùy chọn Zerofill, MySQL tự động cũng sẽ thêm thuộc tính không dấu vào cột. | 2 byte |
int | Cho phép toàn bộ số trong khoảng -2,147,483,648 đến 2.147.483.647 | 4 byte |
lớn | Cho phép toàn bộ số trong khoảng -9.223.372.036.854.775.808 và 9.223.372.036.854.775.807 | 8 byte |
thập phân [p, s] | Đã sửa lỗi chính xác và tỷ lệ. Cho phép các số từ -10^38 +1 đến 10^38. Tham số P biểu thị tổng số chữ số tối đa có thể được lưu trữ [cả ở bên trái và bên phải của điểm thập phân]. P phải là một giá trị từ 1 đến 38. Mặc định là 18. Tham số S cho biết số lượng chữ số tối đa được lưu trữ ở bên phải của điểm thập phân. s phải là một giá trị từ 0 đến p. Giá trị mặc định là 0 | 5-17 byte |
Số [P, S] | Đã sửa lỗi chính xác và tỷ lệ. Cho phép các số từ -10^38 +1 đến 10^38. Tham số P biểu thị tổng số chữ số tối đa có thể được lưu trữ [cả ở bên trái và bên phải của điểm thập phân]. P phải là một giá trị từ 1 đến 38. Mặc định là 18. Tham số S cho biết số lượng chữ số tối đa được lưu trữ ở bên phải của điểm thập phân. s phải là một giá trị từ 0 đến p. Giá trị mặc định là 0 | 5-17 byte |
Số [P, S] | Smallmoney | 4 byte |
lớn | Cho phép toàn bộ số trong khoảng -9.223.372.036.854.775.808 và 9.223.372.036.854.775.807 | 8 byte |
thập phân [p, s] | Đã sửa lỗi chính xác và tỷ lệ. Cho phép các số từ -10^38 +1 đến 10^38. | Tham số P biểu thị tổng số chữ số tối đa có thể được lưu trữ [cả ở bên trái và bên phải của điểm thập phân]. P phải là một giá trị từ 1 đến 38. Mặc định là 18. |
Tham số S cho biết số lượng chữ số tối đa được lưu trữ ở bên phải của điểm thập phân. s phải là một giá trị từ 0 đến p. Giá trị mặc định là 0 | 5-17 byte | 4 byte |
lớn
Đã sửa lỗi chính xác và tỷ lệ. | Cho phép các số từ -10^38 +1 đến 10^38. | 8 byte |
thập phân [p, s] | Đã sửa lỗi chính xác và tỷ lệ. | Cho phép các số từ -10^38 +1 đến 10^38. |
Tham số P biểu thị tổng số chữ số tối đa có thể được lưu trữ [cả ở bên trái và bên phải của điểm thập phân]. P phải là một giá trị từ 1 đến 38. Mặc định là 18. | Tham số S cho biết số lượng chữ số tối đa được lưu trữ ở bên phải của điểm thập phân. s phải là một giá trị từ 0 đến p. Giá trị mặc định là 0 | 4 byte |
5-17 byte | Số [P, S] | Smallmoney |
Dữ liệu tiền tệ từ -214,748.3648 đến 214.748.3647 | tiền bạc | Dữ liệu tiền tệ từ -922.337,203,685,477.5808 đến 922.337,203,685,477.5807 |
Float [n] | Dữ liệu số chính xác nổi từ -1,79E + 308 đến 1.79e + 308. | Tham số N cho biết trường có nên giữ 4 hay 8 byte hay không. Float [24] giữ một trường 4 byte và float [53] giữ một trường 8 byte. Giá trị mặc định của n là 53. |
4 hoặc 8 byte | có thật | Dữ liệu số chính xác nổi từ -3,40E + 38 đến 3,40E + 38 |
Kiểu dữ liệu ngày và giờ
thập phân [p, s] | Đã sửa lỗi chính xác và tỷ lệ. |
Cho phép các số từ -10^38 +1 đến 10^38. | Tham số P biểu thị tổng số chữ số tối đa có thể được lưu trữ [cả ở bên trái và bên phải của điểm thập phân]. P phải là một giá trị từ 1 đến 38. Mặc định là 18. |
Tham số S cho biết số lượng chữ số tối đa được lưu trữ ở bên phải của điểm thập phân. s phải là một giá trị từ 0 đến p. Giá trị mặc định là 0 | 5-17 byte |
Số [P, S] | Smallmoney |
Dữ liệu tiền tệ từ -214,748.3648 đến 214.748.3647 | tiền bạc |
Dữ liệu tiền tệ từ -922.337,203,685,477.5808 đến 922.337,203,685,477.5807
Đã sửa lỗi chính xác và tỷ lệ. | Cho phép các số từ -10^38 +1 đến 10^38. | Dữ liệu số chính xác nổi từ -3,40E + 38 đến 3,40E + 38 |
Kiểu dữ liệu ngày và giờ | Loại dữ liệuNote: You cannot sort a memo field. However, they are searchable | Dữ liệu số chính xác nổi từ -3,40E + 38 đến 3,40E + 38 |
Kiểu dữ liệu ngày và giờ | Loại dữ liệu | Sự mô tả |
Kho | ngày giờ | 2 byte |
Từ ngày 1 tháng 1 năm 1753 đến ngày 31 tháng 12 năm 9999 với độ chính xác là 3,33 mili giây | Cho phép toàn bộ số trong khoảng -2,147,483,648 đến 2.147.483.647 | 4 byte |
DateTime2 | Từ ngày 1 tháng 1, 0001 đến ngày 31 tháng 12 năm 9999 với độ chính xác 100 nano giây | 4 byte |
6-8 byte | SmallDatetime | 8 byte |
Từ ngày 1 tháng 1 năm 1900 đến ngày 6 tháng 6 năm 2079 với độ chính xác là 1 phút | ngàyTip: You can choose which country's currency to use | 8 byte |
Chỉ lưu trữ một ngày. Từ ngày 1 tháng 1, 0001 đến ngày 31 tháng 12 năm 9999 | 3 byte | 4 byte |
thời gian | Lưu trữ thời gian chỉ cho độ chính xác 100 nano giây | 8 byte |
3-5 byte | DateTimeOffsetNote: Null values are not allowed in Yes/No fields | Giống như DateTime2 với việc bổ sung phần bù múi giờ |
8-10 byte | Dấu thời gian | Lưu trữ một số duy nhất được cập nhật mỗi khi một hàng được tạo hoặc sửa đổi. Giá trị dấu thời gian dựa trên đồng hồ nội bộ và không tương ứng với thời gian thực. Mỗi bảng có thể chỉ có một biến dấu thời gian |
& nbsp; | Các loại dữ liệu khác | Dữ liệu số chính xác nổi từ -3,40E + 38 đến 3,40E + 38 |
Kiểu dữ liệu ngày và giờ | Loại dữ liệu | 4 byte |