Char vs. Varchar

Char vs. Varchar
Typy danych char i varchar w SQL są najbardziej widoczne, ponieważ pozwalają nam przechowywać dane ciągów.

Ten samouczek przejdzie przez każdy typ danych i przedstawi różnicę.

Typ Char SQL

Typ char odnosi się do typu danych używanego do przechowywania ciągów znaków o stałej długości.

Typ Char pozwala określić określony rozmiar dla danych wstawionych w tym wierszu.

Chociaż implementacja typu charytatycznego może się nieznacznie zmieniać w zależności od silnika bazy danych, w standardowym SQL typ char może pomieścić do maksymalnie 8000 znaków nie-uniicode.

Aby zdefiniować długość typu char, możesz użyć składni:

char (n)

Gdzie n odnosi się do liczby (długości) znaków, które można przechowywać.

Ponieważ typ zwęglenia ma ustaloną długość, jeśli wstawisz ciąg z mniejszą liczbą znaków niż określony rozmiar, ciąg jest wyściełany dodatkowymi przestrzeniami, aby pasować do ustawionego ciągu.

Podobnie, jeśli wstawiasz ciąg o większej długości niż ustawiony rozmiar, ciąg jest obcięty do ustawionego rozmiaru.

Aby zilustrować, zacznij od utworzenia przykładowej bazy danych:

Zauważ, że w tym przykładzie używamy PostgreSQL, ale możesz wybrać dowolny smak SQL.

$ PSQL -U Postgres

Utwórz przykładową bazę danych:

Postgres =# Utwórz bazę danych STREAP_DB;

Połącz się z bazą danych.

Postgres =# \ C STRIP_DB

Utwórz tabelę z dwoma wierszami. Pierwszy powinien być identyfikatorem z automatycznym wzrostem (seryjnym) i drugim typem charakterem.

Utwórz tabelę char_v_varchar (ID Serial, Full_name char (15))

Zauważ, że maksymalna długość kolumny Full_name wynosi 15.

Dodajmy teraz przykładowe dane.

Wstaw do wartości char_v_varchar (Full_name) („Aaron Wise”); - 10 znaków
Wstaw do wartości char_v_varchar (Full_name) („Aaron Wise Jack”); - 15 znaków
Wstaw do wartości char_v_varchar (Full_name) („Aaron Wise inna nazwa bla blah”); - Ponad 15 znaków

Zwróć uwagę na trzy stwierdzenia wstawienia. Pierwszy wkłada wartość 10 znaków, drugi dodaje wartość dokładnie 15 znaków, a druga dodaje wartość znaków większą niż 15.

Pierwsza wartość zostanie wyściełana z 5 kolejnymi znakami przestrzeni do maksymalnej długości ustawionej, jeśli uruchomimy kod powyżej.

Drugi będzie idealnie pasował, a trzeci zostanie obcięty.

Dodanie wartości większej niż długość zestawu jest zabronione w niektórych silnikach bazy danych. Na przykład w PostgreSQL druga instrukcja wstawki nie powiedzie się z błędem:

Błąd: wartość zbyt długo dla znaku typu (15)
SQL Stan: 22001

Aby sprawdzić długość rekordów, możemy uruchomić zapytanie:

Wybierz długość (Full_name) z char_v_varchar;

Kod powyżej powinien zwrócić długość każdego wiersza w tabeli:

długość
--------
15
15
(2 wiersze)

Zauważ, że w niektórych silnikach bazy danych może pozwolić na dodanie wartości mniejszej długości bez wyściółki z dodatkowymi przestrzeniami.

Dobrze jest pamiętać, że typ char używa 1 bajtu dla jednego włożonego znaku.

Typ varchar SQL

W przeciwieństwie do typu char, varchar lub zmiennego znaku, przechowuje ciągi znaków o różnych długościach.

Oznacza to, że możesz zdefiniować rozmiar kolumny varchar. Jednak możesz dodać wartości wielkości większe lub mniejsze niż długość ustawiona.

Weźmy przykład poniżej:

Utwórz tabelę char_v_varchar (ID Serial, Full_name varchar);

W takim przypadku definiujemy tabelę z kolumną varchar. Ponieważ rozmiar varchar może się różnić, nie musimy ustawiać długości.

Następnie możemy wstawić trzy wartości o różnej wielkości jako:

Wstaw do wartości char_v_varchar (Full_name) („Aaron Wise”); - 10 znaków
Wstaw do wartości char_v_varchar (Full_name) („Aaron Wise Jack”); - 15 znaków
Wstaw do wartości char_v_varchar (Full_name) („Aaron Wise inna nazwa bla blah”); - Ponad 15 znaków
Wybierz długość (Full_name) z char_v_varchar;

Kod powyżej powinien wstawić trzy rekordy i zwrócić rozmiar każdego.

Końcowe przemyślenia

To jest wtedy różnica między typem char i varchar. Zarm zawiera ciągami znaków o stałym rozmiarze, podczas gdy varchar trzyma sznur znaków o różnych długościach.

Chociaż Varchar może wydawać się mieć zastosowanie do większości sytuacji, może ponieść znaczne trafienia wydajności, jeśli zostanie użyte nieuzasadnione. Dlatego jeśli wydajność jest kluczowym czynnikiem dla Twojej bazy danych, rozważ użycie char, chyba że jest to konieczne.