MySQL - 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. Ví dụ: không xác định một trường rộng 10 ký tự, nếu bạn biết bạn sẽ chỉ sử dụng 2 ký tự. 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 đó.
MySQL sử dụng nhiều kiểu dữ liệu khác nhau được chia thành ba loại:
- Numeric
- Ngày và giờ
- Các loại chuỗi.
Bây giờ chúng ta hãy thảo luận chi tiết về chúng.
Kiểu dữ liệu số
MySQL 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 MySQL từ một hệ thống cơ sở dữ liệu khác, các đị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 các 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 như sau:
DATE- Ngày ở định dạng YYYY-MM-DD, từ 1000-01-01 đến 9999-12-31. Ví dụ, 30 tháng 12 ngày , 1973 sẽ được lưu trữ như 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 vào buổi chiều trên 30 tháng 12 ngày , 1973 sẽ được lưu trữ như 1973/12/30 15:30:00.
TIMESTAMP- Một dấu thời gian giữa nửa đêm, ngày 01 tháng 1 st , 1970 và đôi khi trong 2037. vẻ này như định dạng DATETIME trước, chỉ có mà không có dấu gạch nối giữa các con số; 03:30 vào buổi chiều trên 30 Tháng 12 thứ , 1973 sẽ được lưu trữ như 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ể nằm trong khoảng từ 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à kiểu ngày tháng 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 MySQL.
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 cả hai là sự sắp xếp và so sánh trên dữ liệu được lưu trữ làcase sensitive trên BLOB và not case sensitivetrong 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 đó.
Trong chương tiếp theo, chúng ta sẽ thảo luận về cách tạo bảng trong MySQL.