MySQLi - Các kiểu dữ liệu
Việc xác định đúng các trường trong bảng rất quan trọng đối với việc tối ưu hóa tổng thể cơ sở dữ liệu của bạn. Bạn chỉ nên sử dụng loại và kích thước trường mà bạn thực sự cần sử dụng; không xác định một trường rộng 10 ký tự nếu bạn biết rằng bạn sẽ chỉ sử dụng 2 ký tự. Những loại trường (hoặc cột) này cũng được gọi là kiểu dữ liệu, sautype of data bạn sẽ lưu trữ trong các trường đó.
MySQLi sử dụng nhiều kiểu dữ liệu khác nhau được chia thành ba loại: kiểu số, ngày và giờ và kiểu chuỗi.
Kiểu dữ liệu số
MySQLi sử dụng tất cả các kiểu dữ liệu số ANSI SQL tiêu chuẩn, vì vậy nếu bạn đang truy cập MySQLi từ một hệ thống cơ sở dữ liệu khác, những định nghĩa này sẽ trông quen thuộc với bạn. Danh sách sau đây hiển thị các kiểu dữ liệu số phổ biến và mô tả của chúng -
INT- Một số nguyên có kích thước bình thường, có thể có dấu hoặc không dấu. Nếu có dấu, phạm vi cho phép là từ -2147483648 đến 2147483647. Nếu chưa được ký, phạm vi cho phép là từ 0 đến 4294967295. Bạn có thể chỉ định chiều rộng tối đa 11 chữ số.
TINYINT- Một số nguyên rất nhỏ có thể có dấu hoặc không dấu. Nếu có dấu, phạm vi cho phép là từ -128 đến 127. Nếu không có dấu, phạm vi cho phép là từ 0 đến 255. Bạn có thể chỉ định chiều rộng tối đa 4 chữ số.
SMALLINT- Một số nguyên nhỏ có thể có dấu hoặc không dấu. Nếu có dấu, phạm vi cho phép là từ -32768 đến 32767. Nếu không có dấu, phạm vi cho phép là từ 0 đến 65535. Bạn có thể chỉ định chiều rộng tối đa 5 chữ số.
MEDIUMINT- Một số nguyên cỡ vừa, có thể có dấu hoặc không dấu. Nếu có dấu, phạm vi cho phép là từ -8388608 đến 8388607. Nếu không có dấu, phạm vi cho phép là từ 0 đến 16777215. Bạn có thể chỉ định chiều rộng tối đa 9 chữ số.
BIGINT- Một số nguyên lớn có thể có dấu hoặc không dấu. Nếu đã ký, phạm vi cho phép là từ -9223372036854775808 đến 9223372036854775807. Nếu chưa ký, phạm vi cho phép là từ 0 đến 18446744073709551615. Bạn có thể chỉ định chiều rộng tối đa 20 chữ số.
FLOAT(M,D)- Một số dấu phẩy động không thể không dấu. Bạn có thể xác định độ dài hiển thị (M) và số phần thập phân (D). Điều này không bắt buộc và sẽ mặc định là 10,2, trong đó 2 là số lượng phần thập phân và 10 là tổng số chữ số (bao gồm cả số thập phân). Độ chính xác thập phân có thể lên đến 24 vị trí cho một FLOAT.
DOUBLE(M,D)- Một số dấu phẩy động có độ chính xác kép không thể không dấu. Bạn có thể xác định độ dài hiển thị (M) và số phần thập phân (D). Điều này không bắt buộc và sẽ mặc định là 16,4, trong đó 4 là số thập phân. Độ chính xác thập phân có thể lên tới 53 vị trí cho DOUBLE. REAL là một từ đồng nghĩa với DOUBLE.
DECIMAL(M,D) - Một số dấu phẩy động đã giải nén không thể không dấu. Trong số thập phân được giải nén, mỗi số thập phân tương ứng với một byte. Cần xác định độ dài hiển thị (M) và số thập phân (D). NUMERIC là một từ đồng nghĩa với DECIMAL.
Loại ngày và giờ
Các kiểu dữ liệu ngày và giờ của MySQL là:
DATE- Ngày ở định dạng YYYY-MM-DD, từ 1000-01-01 đến 9999-12-31. Ví dụ: ngày 30 tháng 12 năm 1973 sẽ được lưu trữ là 1973-12-30.
DATETIME- Kết hợp ngày và giờ ở định dạng YYYY-MM-DD HH: MM: SS, trong khoảng từ 1000-01-01 00:00:00 đến 9999-12-31 23:59:59. Ví dụ: 3:30 chiều ngày 30 tháng 12 năm 1973 sẽ được lưu trữ thành 1973-12-30 15:30:00.
TIMESTAMP - Dấu thời gian từ nửa đêm, ngày 1 tháng 1 năm 1970 đến khoảng năm 2037. Định dạng này trông giống như định dạng DATETIME trước đó, chỉ không có dấu gạch ngang giữa các số; 3:30 chiều ngày 30 tháng 12 năm 1973 sẽ được lưu trữ là 19731230153000 (YYYYMMDDHHMMSS).
TIME - Lưu trữ thời gian ở định dạng HH: MM: SS.
YEAR(M)- Lưu trữ một năm ở định dạng 2 chữ số hoặc 4 chữ số. Nếu độ dài được chỉ định là 2 (ví dụ: YEAR (2)), thì YEAR có thể là 1970 đến 2069 (70 đến 69). Nếu độ dài được chỉ định là 4, thì YEAR có thể là 1901 đến 2155. Độ dài mặc định là 4.
Các loại chuỗi
Mặc dù kiểu số và ngày rất thú vị nhưng hầu hết dữ liệu bạn sẽ lưu trữ sẽ ở định dạng chuỗi. Danh sách này mô tả các kiểu dữ liệu chuỗi phổ biến trong MySQLi.
CHAR(M)- Một chuỗi có độ dài cố định có độ dài từ 1 đến 255 ký tự (ví dụ CHAR (5)), được đệm bên phải bằng khoảng trắng với độ dài được chỉ định khi được lưu trữ. Không bắt buộc phải xác định độ dài, nhưng mặc định là 1.
VARCHAR(M)- Một chuỗi có độ dài thay đổi từ 1 đến 255 ký tự; ví dụ VARCHAR (25). Bạn phải xác định độ dài khi tạo trường VARCHAR.
BLOB or TEXT- Trường có độ dài tối đa là 65535 ký tự. BLOB là "Đối tượng lớn nhị phân" và được sử dụng để lưu trữ lượng lớn dữ liệu nhị phân, chẳng hạn như hình ảnh hoặc các loại tệp khác. Các trường được định nghĩa là TEXT cũng chứa một lượng lớn dữ liệu; sự khác biệt giữa hai cách này là việc sắp xếp và so sánh trên dữ liệu được lưu trữ phân biệt chữ hoa chữ thường trên BLOB và không phân biệt chữ hoa chữ thường trong các trường TEXT. Bạn không chỉ định độ dài bằng BLOB hoặc TEXT.
TINYBLOB or TINYTEXT- Cột BLOB hoặc TEXT có độ dài tối đa là 255 ký tự. Bạn không chỉ định độ dài với TINYBLOB hoặc TINYTEXT.
MEDIUMBLOB or MEDIUMTEXT- Cột BLOB hoặc TEXT có độ dài tối đa là 16777215 ký tự. Bạn không chỉ định độ dài với MEDIUMBLOB hoặc MEDIUMTEXT.
LONGBLOB or LONGTEXT- Cột BLOB hoặc TEXT có độ dài tối đa là 4294967295 ký tự. Bạn không chỉ định độ dài bằng LONGBLOB hoặc LONGTEXT.
ENUM - Một sự liệt kê, là một thuật ngữ ưa thích để chỉ danh sách. Khi xác định ENUM, bạn đang tạo một danh sách các mục mà từ đó giá trị phải được chọn (hoặc có thể là NULL). Ví dụ: nếu bạn muốn trường của mình chứa "A" hoặc "B" hoặc "C", bạn sẽ xác định ENUM của mình là ENUM ('A', 'B', 'C') và chỉ những giá trị đó (hoặc NULL) bao giờ có thể điền vào trường đó.