[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE
collation_name]

A variable-length string. M represents the maximum column length in
characters. The range of M is 0 to 65,535. The effective maximum length
of a VARCHAR is subject to the maximum row size (65,535 bytes, which is
shared among all columns) and the character set used. For example,
utf8mb3 characters can require up to three bytes per character, so a
VARCHAR column that uses the utf8mb3 character set can be declared to
be a maximum of 21,844 characters. See
https://dev.mysql.com/doc/refman/8.0/en/column-count-limit.html.

MySQL stores VARCHAR values as a 1-byte or 2-byte length prefix plus
data. The length prefix indicates the number of bytes in the value. A
VARCHAR column uses one length byte if values require no more than 255
bytes, two length bytes if values may require more than 255 bytes.

*Note*:

MySQL follows the standard SQL specification, and does not remove
trailing spaces from VARCHAR values.

VARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the
standard SQL way to define that a VARCHAR column should use some
predefined character set. MySQL uses utf8mb3 as this predefined
character set.
https://dev.mysql.com/doc/refman/8.0/en/charset-national.html. NVARCHAR
is shorthand for NATIONAL VARCHAR.

URL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html

