Web Cơ Bản

Các kiểu dữ liệu (DATA TYPE) trong MySQL

1) Dữ liệu là gì !?

- Dữ liệu (data) có thể tạm hiểu là những thông tin được lưu trữ bên trong cơ sở dữ liệu thông qua các cái bảng.

- Ví dụ: Trong cơ sở dữ liệu của tôi có một bảng SinhVien như bên dưới, các thông tin: 1 Nguyễn Thành Nhân 1993 Nam 2 La Thiếu Bảo 1988 Nam . . . . chính là dữ liệu.

MSSV HoTen NamSinh GioiTinh
1 Nguyễn Thành Nhân 1993 Nam
2 La Thiếu Bảo 1988 Nam
3 Doãn Quốc Thiên Thanh 1992 Nữ
4 Tây Môn Khánh 1986 Nam

2) Kiểu dữ liệu là gì !?

- Kiểu dữ liệu (DATA TYPE) được dùng để đại diện cho một "thể loại" dữ liệu nào đó.

- Mỗi kiểu dữ liệu sẽ có một cái tên bằng tiếng Anh, ví dụ:

  • Kiểu dữ liệu TEXT dùng để đại diện cho những dữ liệu có dạng chuỗi ký tự.
  • Kiểu dữ liệu INT dùng để đại diện cho những dữ liệu có dạng số nguyên.
  • Kiểu dữ liệu DECIMAL dùng để đại diện cho những dữ liệu có dạng số thập phân.
  • . . . .

3) Các kiểu dữ liệu trong MySQL

- Trong hệ quản trị cơ sở dữ liệu MySQL, khi tạo một cái bảng, việc xác định chính xác kiểu dữ liệu của từng cột đóng một vai trò hết sức quan trọng, nó giúp cho dữ liệu đầu vào được minh bạch, tránh nhận phải những giá trị không hợp lệ. Ngoài ra thì việc xác định chính xác kiểu dữ liệu của từng cột còn giúp tiết kiệm được tài nguyên, cải thiện tốc độ truy vấn dữ liệu, . . . .

- Trong bài học này, tôi sẽ giới thiệu tất cả những kiểu dữ liệu được hỗ trợ trong MySQL cho các bạn tham khảo, điều đó sẽ giúp các bạn biết & chọn được chính xác kiểu dữ liệu mà mình cần trong quá trình tạo bảng, nhằm để đạt được hiệu quả tối ưu nhất.

3.1) Các kiểu dữ liệu liên quan đến chuỗi ký tự

CHAR(size)

- Một chuỗi ký tự (có thể chứa các chữ cái, số, ký tự đặc biệt). Trong đó, tham số size là tùy chọn, nó dùng để xác định độ dài tối đa của chuỗi tính theo đơn vị số lượng ký tự, nó có thể nhận một giá trị trong phạm vi từ 0 đến 255. Mặc định là 1.

VARCHAR(size)

- Gần giống với kiểu chữ liệu CHAR. Tuy nhiên, tham số size là bắt buộc, nó cần phải nhận một giá trị nằm trong phạm vi từ 0 đến 4,294,967,295

- Lưu ý:

  • Nếu size = 21,845 thì kiểu dữ liệu sẽ tự động chuyển thành TEXT
  • Nếu size >= 21,846 thì kiểu dữ liệu sẽ tự động chuyển thành MEDIUMTEXT
  • Nếu size >= 5,592,406 thì kiểu dữ liệu sẽ tự động chuyển thành LONGTEXT
TYNYTEXT

- Một chuỗi ký tự có độ dài tối đa 255 ký tự.

TEXT

- Một chuỗi ký tự có độ dài tối đa 65,535 ký tự.

MEDIUMTEXT

- Một chuỗi ký tự có độ dài tối đa 16,777,215 ký tự.

LONGTEXT

- Một chuỗi ký tự có độ dài tối đa 4,294,967,295 ký tự.

ENUM(str1, str2, str3)

- Một danh sách các chuỗi (có thể lên đến 65,535 chuỗi). Khi chèn vào bảng, dữ liệu phải là một trong số các chuỗi nằm trong danh sách, nếu không sẽ bị thay thế bằng một chuỗi rỗng.

- Ví dụ, nếu các bạn muốn trường nhận một trong các chuỗi X, Y, Z thì kiểu dữ liệu cần phải xác định là ENUM("X", "Y", "Z")

3.2) Các kiểu dữ liệu liên quan đến số

TINYINT

- Một số nguyên nằm trong phạm vi:

  • -128 127 (mặc định, hoặc khi thiết lập thuộc tính SIGNED)
  • 0 255 (khi thiết lập thuộc tính UNSIGNED)
SMALLINT

- Một số nguyên nằm trong phạm vi:

  • -32768 32767 (mặc định, hoặc khi thiết lập thuộc tính SIGNED)
  • 0 65535 (khi thiết lập thuộc tính UNSIGNED)
MEDIUMINT

- Một số nguyên nằm trong phạm vi:

  • -8388608 8388607 (mặc định, hoặc khi thiết lập thuộc tính SIGNED)
  • 0 16777215 (khi thiết lập thuộc tính UNSIGNED)
INT

- Một số nguyên nằm trong phạm vi:

  • -2147483648 2147483647 (mặc định, hoặc khi thiết lập thuộc tính SIGNED)
  • 0 4294967295 (khi thiết lập thuộc tính UNSIGNED)
BIGINT

- Một số nguyên nằm trong phạm vi:

  • -9223372036854775808 9223372036854775807
  • 0 18446744073709551615 (khi thiết lập thuộc tính UNSIGNED)
DECIMAL(size,d)

- Một số thập phân, trong đó:

  • Tham số size chỉ định tổng số lượng chữ số của số thập phân, nó có thể nhận giá trị tối đa là 65 (mặc định là 10)
  • Tham số d chỉ định tổng số lượng chữ số của phần thập phân, nó có thể nhận giá trị tối đa là 30 (mặc định là 0)

3.3) Các kiểu dữ liệu liên quan đến ngày tháng

DATE

- Một ngày với định dạng là YYYY-MM-DD

(giá trị hợp lệ nằm trong phạm vi từ 1000-01-01 đến 9999-12-31)

DATETIME

- Một ngày & thời gian với định dạng là YYYY-MM-DD hh:mm:ss

(giá trị hợp lệ nằm trong phạm vi từ 1000-01-01 00:00:00 đến 9999-12-31 23:59:59)

TIME

- Thời gian với định dạng là hh:mm:ss

(giá trị hợp lệ nằm trong phạm vi từ -838:59:59 đến 838:59:59)

YEAR

- Một năm với định dạng bốn chữ số (giá trị hợp lệ trong phạm vi từ 1901 đến 2155)

- Trong quá trình tạo bảng, khi xác định kiểu dữ liệu từng cột, các bạn chỉ nên chọn kiểu dữ liệu vừa đủ đáp ứng nhu cầu công việc (như thế sẽ giúp tiết kiệm tài nguyên, cải thiện tốc độ truy vấn dữ liệu)

- Ví dụ như khi xác định kiểu dữ liệu cho cột HoTen (trong cái bảng SinhVien ở mục một), thường thì họ tên của sinh viên sẽ không vượt quá 100 ký tự, cho nên tôi chỉ cần dùng kiểu dữ liệu CHAR(100) là đủ rồi, nếu dùng những kiểu dữ liệu khác như TEXT, MEDIUMTEXT, LONGTEXT thì quá dư thừa.