Вкладка 10
Базы данных 6(19.11.2025)
Знакомство с MySQL. Создание баз данных и таблиц. Типы данных.
Максимальное количество символов в названии - 64. В названии может быть всё, кроме слэш и точки.
Базы данных в MySQL задаются как каталоги с файлами, эти файлы
соответствуют таблицам в базе данных.
Максимальное количество символов в названии - 64. В названии может быть
всё, кроме слэш и точки. В имени столбца можно использовать до 64 любых символов.
Формальные имена баз данных и таблиц баз данных не чувствительны к
регистру под ОС Windows. Под Unix в некоторых версия - чувствительны, за
исключением MacOS. Хотя имена баз данных и таблиц не чувствительны к регистру под Windows не следует ссылаться на конкретную базу данных или таблицу используя различные регистры символов внутри одного и того же запроса.
Временная таблица созданная с атрибутом temporary автоматически удаляется по завершению соединения с базой. А её имя действительно только в рамках данного соединения, то есть это имя локально для каждого отдельного соединения.
InnoDB - самый распространённый тип таблиц который поддерживает транзакции, блокировку на уровне строк и другие функции которые обеспечивают целостность данных.
MyISAM - более старый тип таблиц, который не поддерживает транзакции и блокировка происходит на уровне всей таблицы.
MERGE - это набор таблиц MyISAM, которые используются как одна таблица. MRG MyISAM - псевдоним для таблицы merge.
HEAP - это означает, что таблицы хранятся полностью в оперативной памяти. Хороша тем что гарантирует максимальную скорость работы. Но данные теряются при перезапуске сервера.
BDB(Berkeley DB) - эти таблицы поддерживают транзакции и блокировку страниц.
ISAM - это устаревший формат, который использовался для MyISAM.
Преимущества транзакционных таблиц:
1. Надёжность. Если произойдёт сбой в работе MySQL свои данные можно восстановить либо посредством автоматического восстановления, либо при помощи резервной копии и журнала транзакций.
2. Можно сочетать несколько операторов и обрабатывать их с помощью команды commit.
3. Можно запустить команду rollback(откат), чтобы отменить внесённые
изменения.
4. Лучше обеспечивает параллельную работу при одновременных обновления таблицы и чтении из неё.
Преимущества не транзакционных таблиц:
1. Работа с этими таблицами выполняется гораздо быстрее, так как не выполняются доп. транзакции.
2. Для таких таблиц требуется меньшее дисковое пространство из за отсутствия доп. транзакций.
3. Для обновления таблицы используется меньшее количество памяти.
Вещественное число типа Decimal или Decimal(M,D) представляет собой вещественное число с фиксированной точностью, которое в отличии от типа Double хранится строчном формате(каждая цифра хранится как строчный символ). M - это общее количество действительных цифр в разрядной сетке, D - количество действительных цифр после запятой.
Для целых и вещественных числе можно указать тип с спецификатором UNSIGNED, что означает, что мы отбрасывает отрицательную часть и добавляем к положительной.
Если значение типа ENUM должно содержать ровно одно значение из указанного множества, то столбцы типа SET могут содержать любой элемент либо все элементы заданного множества одновременно.
Величина default(значение по умолчанию) не может быть функцией или выражением, а может быть только константой. Если для данного столбца не задаётся значение по умолчанию, MySQL автоматически назначает эту величину. Если столбец может принимать значение NULL, то по умолчанию присваивается значение NULL. Если столбец объявлен как NOT NULL, то есть не допускающий значение NULL, то значение по умолчанию зависит от типа столбца: для числовых типов, за исключением объявленных с атрибутом AUTO_INCREMENT, значение по умолчанию равно нулю. Для столбца AUTO_INCREMENT значение по умолчанию является следующее значение в последовательности номеров, начинающейся с единицы. Для указанных в таблице типов даты и времени значение по умолчанию равно соответствующей начальной величине для данного типа. Для строковых типов ENUM значением по умолчанию является пустая строка. Для типа ENUM значением по умолчанию равно первой величине из списка.
В некоторых случаях MySQL без уведомления изменяет определение столбца заданное командой create table: столбец типа varchar с длинной меньше чем 4 символа преобразуется в столбец типа char. Если некоторый столбец в таблице имеет переменную длину, то вся строка в результате будет иметь переменную длину, то есть если таблица содержит любые столбцы переменной длины, то есть типа varchar или text, то все столбцы типа char с длинной превышающей 3 символа автоматически преобразуются в столбцы типа varchar. Mysql приводит соответствие определённых типы столбцов используемые другими производителями баз данных.
Для просмотра структуры таблицы с отображением столбцов и их типов можно использовать команду DESCRIBE имя_таблицы.
Ограничение данных в таблицах.
Ограничения это правила, которые применяются к данных в таблице для обеспечения их целостности и корректности. Эти ограничения могут предотвращать нежелательные ситуации, к которым относятся:
1. Наличие нескольких пользователей с одинаковыми идентификаторами. 2. Ссылки на несуществующие записи в других таблицах.
3. Отсутствие обязательных данных. 4. Ввод некорректных значений.
NOT NULL - запрещает значение NULL в поле.
PRIMARY KEY - в качестве первичного ключа может выступать как один столбец, так и
набор столбцов, то есть набор атрибутов, которые однозначно идентифицируют
каждую запись в таблице. Не может содержать значение NULL и должен быть
уникальным.
Если первичный ключ состоит из одного атрибута, он называется простым, первичный ключ может состоять из двух или большего количества атрибутов и в этом случае называется составным.
FOREIGN KEY - внешний ключ это столбец или набор столбцов в одной таблице, который ссылается на первичный ключ другой таблицы. Он обеспечивает ссылочную целостность данных при которой значение в столбце внешнего ключа соответствует значениям из столбца первичного ключа связанной таблицы.
В данном примере ссылочная целостность обеспечивается следующими факторами. 1. Нельзя добавить товарный чек для несуществующего пользователя. 2. Нельзя удалить пользователя у которого есть товарные чеки.
Будем называть родительской таблицей ту таблицу, на первичной ключ которой ссылается внешний ключ другой таблицы, которую в свою очередь будем называть дочерней(пример: дерево(лист это узел дерева у которого нет потомков)).
С помощью ключевых слов ON DELETE и ON UPDATE можно указать действия, которые будут выполняться в дочерней таблице при изменении ключевого поля в родительской таблице.
UNIQUE - обеспечивает уникальность значения в столбце.
CHECK - проверка соответствия данных заданному условию.
С помощью ключевого слова CONSTRAINT можно вводить поименованные ограничения.
DEFAULT
Логические и физические модели баз данных.
Логическая показывает структуры полей, без привязки к программной реализации.
Индексирование. Изменение и удаление таблиц.
Поиск электронного адреса в таблице посредством обычного сравнения двух строк с последовательным просмотром всех записей в таблице потребует большого количества времени. При создании таблицы buyers автоматически создается индекс; при вставке новой строки в таблицу автоматически создается индекс первичного ключа, а при наличии внешнего ключа, также создается индекс внешнего ключа. Кроме того можно создавать пользовательские индексы. Для быстрого поиска покупателя с
заданным электронным адресом можно создать индекс для поля email.
Добавление, удаление и обновление данных.
Insert Select - нужен для добавления строк из других таблиц.
!Знать что такое ACID, как обеспечивается целостность данных.
!Уметь привести примеры диаграмм моделей логических и физических бд. С
внешними ключами, enum, null и not null.
