Thứ Năm, 1 Tháng Mười Hai 2022
Trang chủPHP & MysqlMySQLCác kiểu dữ liệu trong MySQL (Data Types) - Học MySQL

Các kiểu dữ liệu trong MySQL (Data Types) – Học MySQL

Cũng như các ngôn ngữ lập trình, hệ quản trị cơ sở dữ liệu MySql cũng có các kiểu dữ liệu. Vậy MySql bao gồm những kiểu dữ liệu nào, kiểu dữ liệu nào thường được hay dùng nhất chúng ta sẽ tìm hiểu trong bài viết này.

Các kiểu dữ liệu trong MySQL (Data Types)

MySQL bao gồm 3 kiểu dữ liệu chính đó là Kiểu dữ liệu chuỗi, Kiểu dữ liệu số, Kiểu dữ liệu ngày và giờ, trong đó mỗi kiểu dữ liệu chính sẽ lại chia nhỏ ra thành các kiểu dữ liệu con để phù hợp nhất với từng mục đích lưu trữ.

Kiểu dữ liệu chuỗi (String Types)

kiểu dữ liệu chuỗi gồm 6 dạng chính là CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT.

Kiểu dữ liệu CHAR và VARCHAR

CHAR(size): Một chuỗi có độ dài CỐ ĐỊNH có kích thước là size.

VARCHAR(size): Một chuỗi có thể thay đổi kích thước tùy vào dữ liệu lưu trữ, với kích thước tối đa là size.

Ví dụ như sau để bạn dễ hình dung hơn.

Mình có chuỗi “tuicocach.com“, chuỗi này bao gồm 13 ký tự, mình khai báo 2 bảng dữ liệu riêng biệt và sử dụng cột info để lưu trữ chuỗi như trên, nhưng ở hai bảng này một bảng mình dùng kiểu CHAR(100), và một bảng là kiểu VARCHAR(100), tức là cả 2 bảng đều có kích thước khai báo tối đa là 100. Tuy nhiên lúc này khi lưu trữ dữ liệu vào bảng, thì bảng số 1 lưu trữ chuỗi trên thì sẽ luôn luôn chiếm kích thước trong bộ nhớ là 100byte, còn bảng số 2 sử dụng kiểu dữ liệu VARCHAR lúc này kích thước bộ nhớ chỉ chiếm có 13byte.

>> XEM THÊM: Hiển thị CODE các ngôn ngữ lập trình trong bài viết WordPress

Kiểu dữ liệu BINARY và VARBINARY

BINARY(size): Bằng với CHAR (), nhưng lưu trữ chuỗi byte dưới dạng nhị phân.

VARBINARY(size): Bằng với VARCHAR (), nhưng lưu trữ chuỗi byte dưới dạng nhị phân..

Kiểu dữ liệu BLOB và TEXT

TINYBLOB:

  • Dành cho BLOB (Binary Large Objects).
  • Độ dài tối đa: 255 byte.

TINYTEXT:

  • Giữ một chuỗi có độ dài tối đa là 255 ký tự.

TEXT(size):

  • Giữ một chuỗi có độ dài tối đa là 65,535 byte.

BLOB(size):

  • Dành cho BLOB (Binary Large Objects). Lưu trữ lên đến 65.535 byte dữ liệu.

MEDIUMTEXT:

  • Giữ một chuỗi có độ dài tối đa là 16,777,215 ký tự.

MEDIUMBLOB:

  • Dành cho BLOB (Binary Large Objects). Lưu trữ lên đến 16.777.215 byte dữ liệu.

LONGTEXT:

  • Giữ một chuỗi có độ dài tối đa là 4,294,967,295 ký tự.

LONGBLOB:

  • Dành cho BLOB (Binary Large Objects). Chứa tới 4.294.967.295 byte dữ liệu.

ENUM(val1, val2, val3, …):

  • Một đối tượng chuỗi chỉ có thể có một giá trị, được chọn từ danh sách các giá trị có thể có.
  • Bạn có thể liệt kê tới 65535 giá trị trong danh sách ENUM.
  • Nếu một giá trị được chèn mà không có trong danh sách, một giá trị trống sẽ được chèn.
  • Các giá trị được sắp xếp theo thứ tự bạn nhập vào.

SET(val1, val2, val3, …):

  • Một đối tượng chuỗi có thể có 0 hoặc nhiều giá trị, được chọn từ danh sách các giá trị có thể.
  • Bạn có thể liệt kê tối đa 64 giá trị trong danh sách SET.

2. Kiểu dữ liệu số (Numeric Data Types)

Các kiểu dữ liệu số bao gồm 2 dạng là:Kiểu dữ liệu số nguyên, Kiểu dữ liệu số thực.

Kiểu dữ liệu số nguyên

BIT(size): Kiểu giá trị bit. Số lượng bit trên mỗi giá trị được chỉ định rõ về kích thước. Tham số kích thước có thể giữ giá trị từ 1 đến 64. Giá trị mặc định cho kích thước là 1.

TINYINT(size): Một số nguyên rất nhỏ. Phạm vi đã ký là từ -128 đến 127. Phạm vi chưa ký 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: Số 0 được coi là sai, các giá trị khác 0 được coi là đúng.

BOOLEAN: Tương đương với BOOL.

SMALLINT(size): Một số nguyên nhỏ. Dải ô đã ký là từ -32768 đến 32767. Dải ô chưa ký 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).

MEDIUMINT(size): Một số nguyên trung bình. Dải ô đã ký là từ -8388608 đến 8388607. Dải ô chưa ký là từ 0 đến 16777215. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255).

INT(size): Một số nguyên trung bình. Dải ô đã ký là từ -2147483648 đến 2147483647. Dải ô chưa ký 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).

INTEGER(size): Bằng INT(size).

BIGINT(size): Một số nguyên lớn. Dải ô đã ký là từ -9223372036854775808 đến 9223372036854775807. Dải ô chưa ký là từ 0 đến 18446744073709551615. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255).

Kiểu dữ liệu số thực

FLOAT(size, d):

  • Một số dấu phẩy động. Tổng số chữ số được chỉ định về kích thước.
  • Số chữ số sau dấu thập phân được chỉ định trong tham số d. Cú pháp này không được chấp nhận 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ố dấu phẩy động.
  • MySQL sử dụng giá trị p để xác định xem nên sử dụng FLOAT hay DOUBLE cho kiểu dữ liệu kết quả.
  • Nếu p từ 0 đến 24, kiểu dữ liệu sẽ trở thành FLOAT (). Nếu p từ 25 đến 53, kiểu dữ liệu trở thành DOUBLE ().

DOUBLE(size, d):

  • Một số dấu phẩy động có kích thước thông thường.
  • Tổng số chữ số được chỉ định về kích thước. S
  • ố chữ số sau dấu thập phân được chỉ định trong tham số d.

DOUBLE PRECISION(size, d)

DECIMAL(size, d):

  • Một số điểm cố định chính xác.
  • Tổng số chữ số được chỉ định về kích thước.
  • Số chữ số sau dấu thập phân được chỉ định trong tham số d. Số tối đa cho kích thước là 65. Số lớn nhất 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(size, d): Bằng với DECIMAL(size,d).

>>XEM THÊM: MySql là gì? Tìm hiểu về hệ quản trị cơ sở dữ liệu MySql

3. Kiểu dữ liệu ngày và giờ (Date and Time)

Các kiểu dữ liệu ngày và giờ trong MySQL cần lưu ý về định dạng và phạm vi được hỗ trợ.

Kiểu dữ liệu DATE

  • Dữ liệu ngày tháng.
  • Định dạng: YYYY-MM-DD.
  • Phạm vi được hỗ trợ là từ ‘1000-01-01’ đến ‘9999-12-31’.

Kiểu dữ liệu DATETIME(fsp)

  • Ngày và giờ kết hợp.
  • Đị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 DEFAULT và ON UPDATE trong định nghĩa cột để tự động khởi tạo và cập nhật cho ngày và giờ hiện tại.

Kiểu dữ liệu TIMESTAMP(fsp)

  • Dấu thời gian.
  • Giá trị TIMESTAMP được lưu trữ dưới dạng số giây kể từ kỷ nguyên 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.
  • Có thể chỉ định tự động khởi tạo và cập nhật cho ngày và giờ hiện tại bằng cách sử dụng.

DEFAULT CURRENT_TIMESTAMP và ON UPDATE CURRENT_TIMESTAMP trong định nghĩa cột.

Kiểu dữ liệu TIME(fsp)

  • Dữ liệu thời gian.
  • Định dạng: hh: mm: ss.
  • Phạm vi được hỗ trợ là từ ‘-838: 59: 59’ đến ‘838: 59: 59’.

Kiểu dữ liệu YEAR

  • 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.
  • Kiểu dữ liệu trong MySQL 8.0 không hỗ trợ năm ở định dạng hai chữ số.

>>XEM THÊM: Câu lệnh SELECT trong MySql

Bảng tổng hợp các kiểu dữ liệu trong MySQL

Mình sẽ tổng hợp lại các kiểu dữ liệu trong MySQL dưới dạng bảng để tiện theo dõi hơn.

Kiểu dữ liệu chuỗi

Các loại chuỗiSự mô tả
 CHARMột chuỗi có độ dài cố định
 VARCHARMột chuỗi có độ dài thay đổi
 BINARYMột chuỗi nhị phân có độ dài cố định
 VARBINARYMột chuỗi nhị phân có độ dài thay đổi
 TINYBLOBMột BLOB rất nhỏ (đối tượng lớn nhị phân)
 BLOBMột BLOB nhỏ
 MEDIUMBLOBBLOB cỡ vừa
 LONGBLOBBLOB lớn
 TINYTEXTMột chuỗi không phải nhị phân rất nhỏ
 TEXTMột chuỗi nhỏ không phải nhị phân
 MEDIUMTEXTMột chuỗi không phải nhị phân có kích thước trung bình
 LONGTEXTMột chuỗi không nhị phân lớn
 ENUMMột bảng kê; mỗi giá trị cột có thể được chỉ định một thành viên liệt kê
 SETMột bộ; mỗi giá trị cột có thể được gán không hoặc nhiều SETthành viên

Kiểu dữ liệu số

Các loại ngày và giờSự mô tả
 DATEGiá trị ngày ở CCYY-MM-DDđịnh dạng
 TIMEGiá trị thời gian ở hh:mm:ssđịnh dạng
 DATETIMEGiá trị ngày và giờ ở CCYY-MM-DD hh:mm:ssđịnh dạng
 TIMESTAMPMột giá trị dấu thời gian ở CCYY-MM-DD hh:mm:ssđịnh dạng
 YEARGiá trị năm ở dạng CCYYhoặc YY định dạng

Kiểu dữ liệu ngày và giờ

Các kiểu dữ liệu không gianSự mô tả
 GEOMETRYGiá trị không gian thuộc bất kỳ loại nào
 POINTMột điểm (một cặp tọa độ XY)
 LINESTRINGĐường cong (một hoặc nhiều POINT giá trị)
 POLYGONMột đa giác
 GEOMETRYCOLLECTIONMột tập hợp các GEOMETRYgiá trị
 MULTILINESTRINGMột tập hợp các LINESTRINGgiá trị
 MULTIPOINTMột tập hợp các POINTgiá trị
 MULTIPOLYGONMột tập hợp các POLYGONgiá trị

[XEM TẤT CẢ BÀI VIẾT VỀ PHP & MYSQL TẠI ĐÂY]

XEM THÊM
Lệnh DELETE trong MySQL – Lệnh xóa bản ghi
Tìm hiểu thuộc tính AUTO_INCREMENT trong MySQL – Giá trị tự tăng dần
Câu lệnh CREATE TABLE trong MySQL – Lệnh tạo bảng mới
Câu lệnh INSERT INTO trong MySQL – Lệnh chèn dữ liệu vào bảng
Mệnh đề WHERE trong MySQL – Mệnh đề điều kiện
0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?


0
Giáo sư! có thể ném gạch bên dưới nhé!x
()
x