- Типы данных SQL
- 이번 포스팅은 아주 간단하게 이런 Type이 있구나 보기위해 작성했다.
STRING Типы
CHAR(x): строка фиксированной длины
VARCHAR(x): строка переменной длины (예를 들면, имя пользователя, пароль, адрес электронной почты и т. д.) (макс. 65 535 символов (~ 64 КБ)
Почтовый индекс, номер телефона 등은 Числовое значение임에도 불구하고, STRING으로 사용이 가능하다. 그 이유는 Почтовый индекс와 Номер телефона를 가지고 어떤 수학적 연산도 하지 않기 때문이다.
VARCHAR가 저장할 수 있는 것보다 더 길어지는 상황에 대안으로,
СРЕДНИЙТЕКСТ (макс. 16 МБ). 또 다른 대안으로는
ДЛИННЫЙ ТЕКСТ (макс. 4 ГБ) (주로 BOOK 등을 저장할 때 사용한다)가 있다.
Целочисленные типы
TINYINT: 1 байт [-128, 127]
UNSIGNED TINYINT: [0, 255]
SMALLINT: 2 байта [-32K, 32K]
СРЕДНИЙ: 3 байта [-8M, 8M]
INT: 4 байта [-2B, 2B]
БОЛЬШОЙ: 8 байт [-9Z, 9Z]
외울 필요없다.
Используйте наименьший тип данных, который соответствует вашим потребностям
Типы с фиксированной и плавающей запятой
DECIMAL(p, s) → DECIMAL(9, 2) => 1234567,89
ДЕК
ЦИФРОВОЙ
ФИКСИРОВАННЫЙ
FLOAT — для научных расчетов
DOUBLE — для научных расчетов
Логические типы
BOOL
логическое значение
Перечисление и набор типов
한 Column에서 특정 값만은 허용된다고 생각해보자. 예를 들면,
A Стол: «маленький», «средний», «большой».
이 경우 ENUM Type을 사용할 수 있다.
ENUM('маленький', 'средний', 'большой'). 이렇게 Тип을 정의한 Столбец 에느 маленький, средний, большой 값만 넣을 수 있다. ENUM 은 Многоразовый 이 불가능하다.
Типы даты и времени
ДАТА
ВРЕМЯ
ДАТАВРЕМЯ: 8 байт
TIMESTAMP: 언제 한 row에 값이 삽입되거나 혹은 가장 최근에 갱신되었는가를 계속해서 추적한다. (4 байта) (до 2038)
ГОД
Типы больших двоичных объектов
Изображение, видео, pdf, текстовый файл.
TINYBLOB: 255 байт
Большой двоичный объект: 65 КБ
СРЕДНИЙБЛОК: 16 МБ
ДЛИННЫЙ БЛОК: 4 ГБ
ПРОБЛЕМЫ С ХРАНЕНИЕМ ФАЙЛОВ В БАЗЕ ДАННЫХ
- Увеличенный размер базы данных
- Медленное резервное копирование
- Проблемы с производительностью
- Больше кода для чтения/записи изображений
ТИП JSON
- Облегченный формат для хранения и передачи данных через Интернет.
--JSON { "Key" : value } -- Value can be anything
- Целевая версия MySQL по умолчанию Не менее 8
UPDATE products SET properties = ' { "dimensions": [1, 2, 3], "weight: 10, "manufacturer": {"name": "su"} }' WHERE product_id = 1;
- UPDATE한 값을 확인해보자
SELECT * FROM products;
- 더 간단한 방법으로 JSON Data를 작성해보자
UPDATE products SET properties = JSON_OBJECT( 'weight', 10, 'dimensions', JSON_ARRAY(1,2,3), 'manufacturer', JSON_OBJECT('name', 'lg') ); WHERE product_id = 1;
- JSON Data를 Select해보자
SELECT product_id, JSON_EXTRACT(properties, '$.weight') FROM products WHERE product_id = 1;
- Метод JSON_EXTRACTВозможность использования метода JSON_EXTRACT
SELECT product_id, properties -> '$.weight' FROM products WHERE product_id = 1;
- JSON_ARRAY 접근해보자
SELECT product_id, properties -> '$.dimensions[0]' FROM products WHERE product_id = 1;
- JSON_OBJECT 접근해보자
SELECT product_id, properties -> '$.manufacturer.name' FROM products WHERE product_id = 1;
- 결과값의 Quote를 없애보자. 화살표를 하나 더 추가하면된다.
SELECT product_id, properties ->> '$.manufacturer.name' FROM products WHERE product_id = 1;
- Заявление WHERE에도-››사용이 가능하다.
SELECT product_id, properties ->> '$.manufacturer.name' FROM products WHERE product_id ->> '$.manufacturer.name' = 'lg';
- JSON_OBJECT 의 여러 Key Value 중 Weight Key 의 Value를 Update 하고 싶은 상황의 쿼리는 아래와 같다. JSON_SET 이용하면 된다.
UPDATE products SET properties = JSON_SET( properties, '$.weight', 20, '$.age, 10 -- ADD New Properties ) WHERE product_id = 1;
- 이제 Update 된 JSON 값을 확인해보자
SELECT product_id, properties FROM products WHERE properties ->> '$.manufacturer.name' = 'lg';
- JSON_SET 을 이용해 Update 하거나 새로운 값을 Add 하는데 사용 할 수 있다.
- 마지막으로, JSON Property를 삭제할 때는 JSON_REMOVE를 사용하면 된다.
UPDATE products SET properties = JSON_REMOVE( properties, -- JSON OBJ를 명시해주고 '$.age' -- REMOVE 항목을 하나 혹은 여러개 명시 ) WHERE product_id = 1;
- JSON_REMOVE가 잘 동작했는지 테스트해보자.
SELECT product_id, properties FROM products WHERE properties ->> '$.manufacturer.name' = 'lg';
ССЫЛКИ И РЕСУРСЫ