DEV Community

Abhay Singh Kathayat
Abhay Singh Kathayat

Posted on

CHAR vs VARCHAR in SQL: Key Differences Explained

Difference Between CHAR and VARCHAR in SQL

Both CHAR and VARCHAR are used to store character strings in SQL, but they differ significantly in terms of storage, performance, and usage. Here's a detailed comparison:


1. Definition

  • CHAR:

    A fixed-length character data type. It always uses a fixed amount of storage space, regardless of the length of the stored data.

  • VARCHAR:

    A variable-length character data type. The storage used depends on the actual length of the stored data.


2. Storage Behavior

  • CHAR:

    • Allocates the maximum defined size for every value.
    • If the stored string is shorter than the defined size, it is padded with spaces to fill the remaining space.
    • Example: CHAR(10) will always use 10 bytes, even if the string is "Hello" (5 bytes).
  • VARCHAR:

    • Uses only as much storage as needed for the string, plus an additional 1 or 2 bytes to store the length of the string.
    • Example: VARCHAR(10) storing "Hello" (5 bytes) will use 6 or 7 bytes (5 for the string + 1/2 for length).

3. Performance

  • CHAR:

    • Faster for fixed-length strings because the length is predetermined, and there is no need to manage variable lengths during data retrieval.
    • Ideal for storing data with consistent lengths, such as postal codes or country codes.
  • VARCHAR:

    • More efficient in terms of storage for variable-length data but slightly slower for operations due to the overhead of managing the length.

4. Use Cases

  • CHAR:

    • Best for fixed-length data like:
    • Country codes (e.g., "US", "UK")
    • Postal codes
    • Product codes
    • Ensures consistent storage and retrieval.
  • VARCHAR:

    • Suitable for variable-length data like:
    • Names (e.g., "John", "Alexander")
    • Email addresses
    • Descriptions or comments

5. Maximum Length

  • CHAR:

    • Supports up to 255 characters (depending on the database system).
  • VARCHAR:

    • Can store up to 65,535 characters in some database systems (e.g., MySQL), but the actual maximum depends on the row size and database engine.

6. Examples

Using CHAR:

CREATE TABLE countries (
    country_code CHAR(3) NOT NULL
);

INSERT INTO countries (country_code) VALUES ('US'), ('UK'), ('IN');
Enter fullscreen mode Exit fullscreen mode
  • Even if "US" is stored, it will occupy 3 bytes ('US ' with padding).

Using VARCHAR:

CREATE TABLE users (
    username VARCHAR(50)
);

INSERT INTO users (username) VALUES ('Alice'), ('Alexander');
Enter fullscreen mode Exit fullscreen mode
  • "Alice" occupies 6 bytes (5 bytes for the string + 1 for length), and "Alexander" occupies 10 bytes.

7. Summary Table

Aspect CHAR VARCHAR
Length Fixed-length Variable-length
Storage Always uses the defined size. Uses only the required size + length metadata.
Performance Faster for fixed-length strings. Slightly slower due to length management.
Padding Pads with spaces for shorter data. No padding; stores exact string.
Use Case Fixed-length data. Variable-length data.
Max Length 255 characters. Up to 65,535 characters.

Conclusion

  • Use CHAR for fixed-length data where consistency in size is crucial, and storage efficiency is not a primary concern.
  • Use VARCHAR for variable-length data to save storage space and handle flexible string lengths.

Hi, I'm Abhay Singh Kathayat!
I am a full-stack developer with expertise in both front-end and back-end technologies. I work with a variety of programming languages and frameworks to build efficient, scalable, and user-friendly applications.
Feel free to reach out to me at my business email: kaashshorts28@gmail.com.

Top comments (0)