Bài 4: Kiểu Dữ Liệu
Định nghĩa đúng các trường (field) trong table là một điều quan trọng để tối ưu hóa cơ sở dữ liệu của bạn. Bạn chỉ nên sử dụng loại và kích thước của trường mà bạn thực sự cần sử dụng. Đừng định nghĩa một field có độ rộng 10 ký tự nếu bạn biết bạn chỉ sử dụng 2 ký tự mà thôi. Các kiểu này ...
Định nghĩa đúng các trường (field) trong table là một điều quan trọng để tối ưu hóa cơ sở dữ liệu của bạn. Bạn chỉ nên sử dụng loại và kích thước của trường mà bạn thực sự cần sử dụng. Đừng định nghĩa một field có độ rộng 10 ký tự nếu bạn biết bạn chỉ sử dụng 2 ký tự mà thôi. Các kiểu này của field( cột, columns) cũng tương ứng với kiểu dữ liệu được lưu vào cột đó.
Ví dụ bạn định kiểu cho cột là số nguyên thì dữ liệu lưu vào phải là số nguyên.
MySQL sử dụng nhiều kiểu dữ liệu khác nhau và phân chia thành 3 categories: numeric, date and time và string.
Numeric Data Types:
MySQL sử dụng tất cả các chuẩn của kiểu dữ liệu số ANSI, nếu bạn đã từng biết qua hệ thống cơ sở dữ liệu khác thì bạn sẽ cảm thấy rất quen thuộc kiểu dữ liệu của MySQL.
- INT– Một số nguyên mà có dạng signed hoặc unsigned. Nếu signed, thì cho dãy từ -2147483648 tới 2147483647. Nếu unsigned, thì cho dãy từ 0 tới 4294967295. Bạn có thể cho độ rộng kiểu dữ liệu nguyên tới 11 số – int(11).
- TINYINT– Một loại số nguyên rất nhỏ cũng có dạng signed hoặc unsigned. Nếu signed, thì có dãy từ -128 tới 127. Nếu unsigned, là từ 0 tới 255. Bạn có thể xác định độ rộng field tới 4 chữ số.
- SMALLINT– Một số nguyên nhỏ signed hoặc unsigned. Nếu signed, có dãy từ -32768 tới 32767. Nếu unsigned, là 0 tới 65535. Bạn sẽ chỉ định độ rộng field tối đa 5 số.
- MEDIUMINT– Một loại trung bình có dạng signed hoặc unsigned. Nếu signed, thì có giá trị từ -8388608 tới 8388607. Nếu unsigned, sẽ có dãy từ 0 tới 16777215. Bạn có thể xác định độ rộng field tới 9 con số.
- BIGINT– Một số nguyên cở bự. Nếu signed, sẽ có dãy từ -9223372036854775808 tới 9223372036854775807. Nếu unsigned, thì có dãy từ 0 tới 18446744073709551615. Được xác định tới 20 số.
- FLOAT(M,D)– Là một kiểu dữ liệu có chấm động, kiểu số thực không có dạng unsigned. Bạn có thể định nghĩa chiều dài (M) và số thập phân (D). Nếu không có yêu cầu thì mặc định 10,2, 10 là số chữ số phần nguyên, còn 2 là phần thập phân, phần thập phân có thể lên tới 24 con số.
- DOUBLE(M,D)– Cũng là kiểu số thực nhưng to lớn hơn Float. Mặc định là 16,4. Phần thập phân có thể lên tới 53 chữ số
Date and Time Types
- DATE– Một kiểu ngày sẽ có định dạng YYYY-MM-DD, và nằm trong khoảng 1000-01-01 và 9999-12-31. Lấy ví dụ, December 30th, 1973 sẽ được lưu trữ như 1973-12-30.
- DATETIME– Một kiểu ngày và giờ sẽ bao gồm định dạng ngày và giờ như sau: YYYY-MM-DD HH:MM:SS, có giá trị trong khoảng 1000-01-01 00:00:00 và 9999-12-31 23:59:59. Lấy ví dụ, 3:30 PM December 30th, 1973 sẽ được lưu trữ là 1973-12-30 15:30:00.
- TIMESTAMP– Sẽ có định dạng như DATETIME mà không có dấu gạch ngang 19731230153000 ( YYYYMMDDHHMMSS ).
- TIME– Lưu trữ thời gian theo định dạng HH:MM:SS.
- YEAR(M)– Lưu trữ một năm bằng 2-chữ số hoặc 4-chữ số. Nếu chiều dài được xác định là 2 (Lấy ví dụ YEAR(2)), YEAR có thể là 1970 tới 2069 (70 to 69). Nếu chiều dài được xác định là 4, YEAR có thể là 1901 tới 2155. Mặc định thì chiều dài là
String Types
- CHAR(M)– Một chiều dài cố định của chuỗi trong khoảng 1 và 255 ký tự (ví dụ CHAR(5)), Mặc định là 1 và không bắt buộc định nghĩa chiều dài.
- VARCHAR(M)– Một chiều dài của chuỗi nằm giữa 1và 255 ký. Ví dụ VARCHAR(25). Bạn phải định nghĩa chiều dài khi khai varchar cho field.
- BLOB Hoặc TEXT– Một field với chiều dài tối đa là 65535 ký tự. BLOBs là “Các đối tượng nhị phân” và được sử dụng để trữ một lượng dữ liệu nhị phân lớn, chẳng hạn như hình ảnh hoặc các loại file có các kiểu khác. Các field được định nghĩa là TEXT cũng nắm giữ một lượng lớn dữ liệu. Sự khác nhau giữa 2 hình thức lưu trữ này là BLOBs phân biệt hoa thường còn TEXT thì không. Bạn không cần chỉ định chiều dài cho BLOB hoặc TEXT.
- TINYBLOB Hoặc TINYTEXT– Một BLOB hoặc TEXT column với một chiều dài tối đa là 255 ký tự và cũng không cần chỉ định chiều dài cho TINYBLOB hoặc TINYTEXT.
- MEDIUMBLOB Hoặc MEDIUMTEXT– Một BLOB or TEXT column với chiều dài tối đa là 16777215 ký tự. Không cần chỉ định chiều dài cho MEDIUMBLOB hoặc MEDIUMTEXT.
- LONGBLOB Hoặc LONGTEXT– Chiều dài tối đa cho 2 kiểu này là 4294967295 ký tự. Không yêu cầu chỉ định chiều dài cho LONGBLOB hoặc LONGTEXT.
- ENUM– Đây là một kiểu liệt. Khi định nghĩa một ENUM, bạn tạo danh sách các giá trị phải được chọn (hoặc nó có thể NULL). Lấy ví dụNếu bạn muốn tạo field chưa đựng “A” hoặc “B” hoặc “C”, Bạn sẽ định nghĩa ENUM (‘A’, ‘B’, ‘C’) Và chỉ những giá trị này mới được lưu vào field.
Đến đây chắc các bạn cũng choáng váng với mấy con số, phạm vi trong kiểu dữ liệu MySQL rồi phải ko. Đừng lo lắng, khi thực hành ta sẽ có dịp nhìn lại và làm nhiều thì nhớ thôi hj.