Mtime and ctime of Linux

if you edit a file with vi, even if the contents of the file are not modified, as long as both wq, mtime and ctime will change.
the content of the file has not changed, and I can barely understand that mtime changes as long as wq, mtime will change. (I don"t know if this is correct? )
but the content of the file has not changed, and the size of the file has not changed, so why has the attribute (ctime) changed?
can it be said that as long as there is a change in mtime, it will certainly lead to a change in ctime?
Thank you all

Mar.13,2021

atime:access time

mtime: modify timeviBlock

ctime: change timeinodeBlock
MySQL Query : SELECT * FROM `codeshelper`.`v9_news` WHERE status=99 AND catid='6' ORDER BY rand() LIMIT 5
MySQL Error : Disk full (/tmp/#sql-temptable-64f5-1e56249-44bc9.MAI); waiting for someone to free some space... (errno: 28 "No space left on device")
MySQL Errno : 1021
Message : Disk full (/tmp/#sql-temptable-64f5-1e56249-44bc9.MAI); waiting for someone to free some space... (errno: 28 "No space left on device")
Need Help?