Существует два популярных типа баз данных: реляционные и нереляционные. Нереляционные предполагают отказ от табличной модели хранения. В них используется модель, которая оптимально подходит под конкретные требования типа хранимых данных. Так, в нереляционных БД данные могут храниться в виде пары «ключ — значение», JSON-файлов или графов.
Реляционные базы данных — это привычные нам таблицы с предопределёнными связями между данными. Информация хранится в строках и столбцах, и каждая строка содержит какие-то данные, относящиеся к одному объекту/сущности. Среди реляционных БД известны Oracle DB, PostgreSQL, MySQL и т. д. Давайте разберёмся, как создать MySQL таблицу, менять её и вносить данные.
Синтаксис CREATE TABLE
Перед созданием таблицы укажите базу данных, в которую она будет записана. Это делается командой USE:
USE name_database;
Для создания таблиц в MySQL используются особые запросы с указанием атрибутов таблицы. В этих запросах также описываются типы данных в атрибутах, их описание и ограничения. Самый распространённый способ создания таблиц MySQL с нуля — это с помощью инструкции CREATE TABLE. Вот пример, как создать таблицу MySQL:
CREATE TABLE Table_Name
(
column_name_one column_type_one,
column_name_two column_type_two,
...,
column_name_X column_type_X,
);
Синтаксис простой. Table_Name — имя создаваемой таблицы (рекомендуем присваивать осмысленное имя), column_name — имя столбца, а column_type — тип данных, которые будут храниться в столбце.
Можно создать MySQL таблицу, скопировав уже существующую. Для этого используется сочетание CREATE TABLE и SELECT. Например, так: CREATE TABLE New_Table_Name [AS] SELECT * FROM Original_Table_Name;
Для переименования уже созданной таблицы используйте команду RENAME TABLE:
RENAME TABLE old_name TO new_name;
Дополнительные параметры таблиц
В описание иногда необходимо добавлять следующие параметры:
- PRIMARY KEY — определяем колонку или множество колонок как первичный ключ.
- AUTO_INCREMENT— определяем, что значение колонки при появлении в таблице новых записей автоматически увеличивается. В таблице можно задавать только одну AUTO_INCREMENT колонку.
- UNIQUE — определяем, что все значения в колонке для всех записей должны быть уникальными.
- NOT NULL — определяем, что значения в колонке не должны быть нулевыми (Null).
- DEFAULT — задаём значения по умолчанию. Параметр не применим к типам BLOB, TEXT, GEOMETRY и JSON.
Названия таблиц и столбцов
Старайтесь присваивать осмысленные названия для таблиц и столбцов, тогда и вам, и другому разработчику даже через год будет понятно, где что находится. Использование транслита или стандартных имён вроде table1/table2 не приветствуется. А вот названия Users, Sales, Calls информативны и логичны — по ним легко определить, что за данные содержатся в таблице. Аналогичный подход рекомендуется и при переименовании столбцов. Максимальная длина названия — 64 символа.
Типы данных в MySQL
MySQL поддерживает работу с разными типами данных. Их можно разделить на числовые, символьные, бинарные и временные типы. Расскажем детальнее о каждом.
Числовые типы данных в MySQL
INT |
К этому типу относятся диапазон целочисленных значений от −2147483648 до 2147483647. Занимает в памяти 4 байта. |
DECIMAL |
Используется для хранения точных дробных чисел (число занимаемых в памяти байт зависит от выбранной точности). Может принимать два параметра DECIMAL(precision, scale). Этот тип рекомендуется для работы с валютами и координатами. |
TINYINT |
Используется для хранения целых чисел от −127 до 128. Занимает 1 байт памяти. Атрибут UNSIGNED позволяет запретить отрицательные значения. |
BOOL |
Используется для однозначного ответа 0 или 1 на вопрос «false» или «true». Имеет синоним BOOLEAN. |
FLOAT |
Используется для хранения дробных чисел с плавающей запятой (точкой) хранит до 24 знаков после запятой. Занимает 4 байта в памяти. |
до 40% от каждого клиентаСтать партнёром
Символьные типы данных в MySQL
VARCHAR(N) |
Используется для хранения текстовых данных переменной длины. Занимаемая память зависит от длины строки. Параметр N определяет максимальную длину строки. |
CHAR(N) |
Используется для хранения данных фиксированной длины. Каждая запись занимает ровно столько памяти, сколько необходимо для хранения строки длиной N. Параметр N определяет максимальную длину строки. |
TEXT |
Используется для хранения текстовых данных объёмом до 65 KB |
Временные типы данных в MySQL
DATE |
Хранится только дата в диапазоне от 1000-01-01 по 9999-12-31 и формате 'YYYY-MM-DD'. Используется для хранения дат рождения, исторических дат, начиная с 11 века. Занимает 3 байта памяти. |
TIME |
Хранится только время в диапазоне от '-838:59:59.00' до '838:59:59.00' и формате 'hh:mm:ss'. Занимает 3 байта памяти. |
DATETIME |
Объединяет дату и время в диапазоне от 1001 по 9999 год в формате: 'YYYY-MM-DD hh:mm:ss'. Не зависит от часового пояса. Точность — до 1 секунды. Занимает 8 байт памяти. |
TIMESTAMP |
Хранит дату и время в диапазоне от '1970-01-01 00:00:01' до '2038-01-19 03:14:07' в виде количества секунд (и микросекунд). Занимает 4 байта памяти. Зависит от часового пояса. |
Бинарные типы данных в MySQL
BLOB |
Используется для хранения в бинарном виде файлов, фото, документов, аудио и видеоконтента объёмом до 65 КБ. |
LARGEBLOB |
Используется для хранения в бинарном виде файлов, фото, документов, аудио и видеоконтента объёмом до 4 ГБ. |
Изменение структуры таблицы
Команда ALTER TABLE позволяет быстро добавить столбцы. Можно добавить одновременно несколько столбцов с разными данными. Вот пример, как добавить в MySQL столбцы с почтой возрастом, семейным статусом сотрудников:
ALTER TABLE Table_name
ADD email VARCHAR(50),
ADD age INT,
ADD has_family BOOLEAN;
Удаление таблицы
Для удаления таблицы используется оператор DROP TABLE. Эта процедура навсегда удаляет все хранящиеся в таблице данные, индексы, триггеры, ограничения и разрешения. Пример команды на удаление таблицы MySQL:
DROP TABLE Table_name;
Будьте осторожны с командой удаления таблицы — вернуть данные обратно без наличия бэкапов будет почти невозможно.