В данном конспекте рассмотрим основные типы данных SQL а также операторы операторы определения данных (Data Definition Language, DDL), которые позволяют создавать, изменять и удалять объекты базы данных (таблицы, представления и т.п.)
Типы данных SQL
В SQL существуют следующие четыре группы типов данных:
Числовые:
Целые:
- TINYINT[] - 1 байт
- SMALLINT[] - 2 байта
- MEDIUMINT[] - 3 байта
- INT[] - 4 байта
- BIGINT[] - 8 байт
В квадратных скобках указывается количество выводимых символов
С плавающей точкой:
- FLOAT[M, D] - 4 байта
- DOUBLE[M, D] (REAL, DOUBLE PRECISION) - 8 байт
- DECIMAL[M, D] (DEC, NUMERIC) - M + 2 байта
В квадратных скобках указывается количество под мантиссу и экспоненту
Бинарные:
- BOOLEAN - 1 байт (алиас для tinyint)
- BIT
Строковые:
- CHAR(M) - M - кол-во символов, строка фиксированной длины
- VARCHAR(M) - строка переменной длины
- TINYBLOB, TINYTEXT - 28 - 1 символов
- BLOB, TEXT - 216 - 1 символов
- MEDIUMBLOB, MEDIUMTEXT - 224 - 1 символов
- LONGBLOB, LONGTEXT - 232 - 1 символов
- ENUM(‘value1’, ‘value2’…) - 1 или 2 байта, 65536 допустимых значений
- SET(‘value1’, ‘value2’…) - 1,2,3,4 или 8 байт, 64 элемента может принимать несколько значений из этого множества
Главное различие char и varchar: для char сразу выделяется место под максимальное количество символов, что повышает эффективность поиска но увеличивает расход дискового пространнства.
Календарные:
- DATE - 3 байта, от “1000-01-01” до “9999-12-31”
- TIME - 3 байта, от “-828:59:59” до “828:59:59”
- DATETIME - 8 байт, от “1000-01-01 00:00:00” до “9999-12-31 59:59:59”
- TIMESTAMP - 4 байта, от “1970-01-01 00:00:00” до “2038-12-31 59:59:59” хранится количество секунд от 1970 года
- YEAR - 1 байт, YEAR(4) c 1901 до 2155; YEAR(2) c 1970 до 2069
NULL:
- при конкатенации cтрок с NULL все превращается в NULL.
- любые проверки операторами <, > =, <> дают false
- COUNT(поле) - считает кол-во не NULL строк, хотя COUNT(*) считает все строки включая NULL
Оператор CREATE
Общая сигнатура такова:
1 2 3 4 |
|
Где create_definition:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Где column_definition:
1 2 3 4 5 6 |
|
Где reference_definition:
1 2 3 4 |
|
Где reference_option:
1
|
|
Оператор ALTER
Общая сигнатура такова:
1 2 3 |
|
Где alter_specification:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
Ограничения (CONSTRAINT) на значения данных
Составной первичный ключ:
1 2 3 4 5 6 |
|
Проверка вводимых значений CHECK:
1 2 3 4 5 6 7 |
|
Именование ограничений и удаление их:
1 2 3 4 5 6 7 |
|
CONSTRAINT — является не обязательным;
Использование:
ALTER TABLE table_name DROP CONSTRAINT LuckyBarcelona
Добавление внешнего ключа через alter table:
1
|
|
Действия выполняемые по ссылке:
CASCADE: - п и UPDATE — значение внешнего ключа заменяется новым значением; - п и DELETE — строки внеш. Ключа будут удалены.
SET NULL — значения внешнего ключа будут установлены в NULL.
SET DEFAULT — будет установлено зн-е по дефолту для внешнего ключа.
NO ACTION — значение по дефолту, зн-е не меняется но если есть ссылки оператор игнорируется.
Пример:
1 2 3 4 5 |
|