Как создать таблицу в phpmyadmin
Перейти к содержимому

Как создать таблицу в phpmyadmin

  • автор:

Как создать таблицу в phpmyadmin

Окно при создание таблицы в phpMyAdmin

Каждая запись в таблице сохраняется, как определенный тип данных, это позволяет MySql взаимодействовать различными способами.

Типы данных которые вы будите использовать, зависят от назначения вашей таблицы, если открыть вкладку тип, вы можете наблюдать все типы данных и при наведении курсора мыши на них, вам покажут короткое объяснение данного типа.

Меню выбора типа данных в phpMyAdmin

INT – это тип данных для целых чисел.

DECIMAL – хранит десятичные значения и определяется как общее количество цифр и количество цифр после запятой.

CHAR – это основной тип данных для текста и строк, вам обычно нужно указать только максимальное количество содержащих себя знаков или символов.

DATE – этот тип данных хранит даты в формате: год, месяц и день, и т.д.

Есть много остальных типов данных кроме тех , что мы рассмотрели, вы их можете использовать для создания простой таблицы.

Создание таблицы в phpMyAdmin

Создание таблицы users , первое поле это name , тип данных будет VARCHAR длина значений будет 30 , следующее поле suname также тип данных указываем VARCHAR длина значений будет 30 , последнее поле это будет password , тип данных тоже будет VARCHAR длина значений будет 30 .

Создание таблицы в phpMyAdmin

Для поля suname (фамилия) мы зададим индекс PRIMARY .

Выбор индекса в phpMyAdmin

Далее нам нужно выбрать сравнение кодировке, выбираем utf8mb4_general_ci , и нажимаем поле вперед и таблица будет создана.

Выбор кодировки в phpMyAdmin

На этой странице сайта мы рассмотрели как создать простую таблицу с помощью phpMyAdmin .

Как добавить таблицу в MySQL

Читайте нашу статью, чтобы узнать, как создать таблицу в MySQL. Мы расскажем о структурных элементах таблицы и покажем, как создать ее разными способами.

Из чего состоит таблица

Таблица — это одна из составляющих базы данных. Она позволяет структурировать данные: вся информация хранится в соответствующих таблицах, благодаря чему данные выгружаются в нужном порядке.

Чтобы создать таблицу, нужно указать:

  • имя таблицы — отобразится в структуре базы данных;
  • имя поля — наименование столбца;
  • тип данных — поясняет, какой тип данных будет храниться в таблице.

В MySQL добавить таблицу можно:

  • через phpMyAdmin,
  • через SSH-соединение.

Как добавить таблицу в phpMyAdmin

добавить таблицу в phpmyadmin 1

Чтобы перейти к нужной базе данных, слева от неё нажмите на значок «плюс» и кликните Новая:

  • Имя таблицы — укажите название таблицы;
  • Имя — введите имя столбца;
  • Тип — укажите тип данных. Для числовых данных используйте тип «INT», для текстовых — «VARCHAR», а для формата даты — «DATE»;
  • Длина/Значения — укажите количество символов, которые можно использовать в ячейке. Как правило, используют значение 255. Используется только для типа данных «VARCHAR». Затем нажмите Сохранить:

добавить таблицу в phpmyadmin 2

После сохранения откроется созданная таблица:

добавить таблицу в phpmyadmin 3

Готово, вы добавили таблицу в phpMyAdmin.

Как добавить таблицу в Ubuntu через SSH-соединение

Создать новую таблицу можно с помощью консольной команды. Так выглядит ее синтаксис:

CREATE TABLE table_name (column_name column_type);
  • table_name — имя таблицы,
  • column_name — имя поля,
  • column_type — тип данных.

Чтобы создать таблицу:

Подключитесь к серверу по SSH.
Чтобы перейти в MySQL, выполните команду:

mysql -u u1234567_user -p

Где u1234567_user — имя пользователя MySQL. Затем введите пароль для входа в MySQL и нажмите Enter.
В консоли MySQL выполните команду:

USE u1234567_dbname;

добавить таблицу в ubuntu 1

Где u1234567_dbname — название базы данных, в которую нужно добавить таблицу. После выполнения команды появится уведомление:

Для создания таблицы используйте команду:

CREATE TABLE test (ID int, Name varchar(255), Age int);
  • test — название таблицы,
  • ID, Name и Age — названия столбцов,
  • int и varchar(255) — типы данных. Значение int используется для числовых данных, а varchar — для текстовых. Для типа varchar число в скобках показывает, на сколько символов может быть заполнена ячейка таблицы.

После создания таблицы отобразится сообщение:

добавить таблицу в ubuntu 2

Готово, вы добавили таблицу через SSH-соединение.

Помогла ли вам статья?

Спасибо за оценку. Рады помочь ��

Управление таблицами в PHPMyAdmin

Управление таблицами в PHPMyAdmin

В этой статье я научу Вас управлять таблицами в PHPMyAdmin, то есть создавать, редактировать и удалять таблицы в базе данных. Эта статья очень важная, и Вам надо обязательно её изучить.

Начнём с создания таблицы в PHPMyAdmin:

  1. Зайти на главную страницу PHPMyAdmin.
  2. Выбрать из выпадающего списка имя базы данных, в которую Вы хотите добавить таблицу. Выбрать базу данных в PHPMyAdmin
  3. Ввести имя новой таблицы, указать количество полей (столбцов) и нажать на кнопку «Пошёл«. Создание таблицы в PHPMyAdmin
  4. Укажите соответствующие настройки для каждого поля, потом для таблицы, а затем нажмите на кнопку «Пошёл«. Настройки таблицы в PHPMyAdmin

Тут есть о чём поговорить. Начнём с настроек для полей таблицы:

  • Имя, думаю, задать сможете. Единственное, не нарвитесь на зарезервинованное слово. То есть нельзя давать полю, например, такое имя «index«.
  • Тип. О типах полей подробно говорилось в этой статье: типы полей в MySQL, поэтому ничего добавлять не буду.
  • Длины/значения. Здесь можно указать предельные значения(длины) переменных. Я, например, часто использую данную возможность для экономии ресурсов. Например, для пароля я ставлю тип VARCHAR и максимальное количество символов — 32. Тогда как, по умолчанию, VARCHAR позволяет хранить до 255 символов.
  • Кодировка. Разумеется, данная настройка актуальна только для строковых типов. Если Вы будете хранить в этом поле строки из только русского и латинского алфавита, то используйте кириллицу (cp1251_general_ci), а если у Вас могут храниться другие символы, то используйте unicode (utf8_general_ci).
  • Атрибуты. Относится только к числам. Если у Вас число заведомо положительное, то включите опцию «UNSIGNED«, что позволит расширить положительный диапазон значений выбранного типа. Также есть опция «UNSIGNED ZEROFILL«, которая редко используется, но делает она следующее: заполняет нулями все неиспользованные старшие разряды. То есть, допустим, у Вас число 4, однако, храниться будет: «000000004«, где количество нулей определяется свободными разрядами выбранного типа.
  • Ноль. Эта опция позволяет включить возможность значения «null«. Запомните: «null» — это не 0, и не пустая строка. Это пустой объект, то есть ничего!
  • По умолчанию. Полезная опция, позволяющая задать значение поля по умолчанию.
  • Дополнительно. Позволяет задать «auto_increment«. Это очень важная возможность, которую Вы будете включать, думаю, что в каждой таблице. Эта опция позволяет при добавлении новой записи автоматически увеличивать на 1 значение поля. Идеальный вариант для ID (уникального идентификатора), который должен быть уникален для каждой записи. И чтобы не думать об уникальности этого поля, достаточно просто включить опцию «auto_increment«.
  • Дальше идут радиопереключатели:
    • Первичный ключ. Как правило, этим ключом назначают поле ID. Означает этот ключ, что значение поля уникально для всей таблицы, более того, по этому полю создаётся индекс. О том, что такое индекс и для чего он нужен, мы поговорим в одной из следующих статей.
    • Индекс. Собственно, создавать или нет для этого поля индекс.
    • Уникальное. Если поставить эту опцию, то значение данного поля должно быть уникальным.
    • И флажок «ПолнТекст» означает, создавать полнотекстовый индекс или нет.

    Настройки таблицы гораздо проще:

    • Комментарий к таблице. Можете заполнить, а можете ничего не писать.
    • Тип таблицы:
      • MyISAM. Самый популярный тип таблиц в MySQL, и он подходит для большинства задач.
      • Heap. Особенность данной таблицы в том, что она хранится в памяти, в результате данный тип таблиц обрабатывается ОЧЕНЬ быстро. Идеальный вариант для временных таблиц. Разумеется, при сбое в работе все данные будут утеряны.
      • Merge. Этот тип представляет собой совокупность обычный таблиц MyISAM. Сам я ещё не использовал данный тип, поэтому больше ничего сказать не могу, более того, данный тип — это ещё новшество, а, следовательно, за стабильность никто не ручается.

      Так, с созданием таблиц разобрались, а теперь поговорим о том, как изменить настройки таблицы в PHPMyAdmin:

      1. Зайти на главную страницу PHPMyAdmin.
      2. Выбрать из выпадающего списка имя базы данных, где находится требуемая таблица. Выбрать базу данных в PHPMyAdmin
      3. Кликнуть по имени таблицы, которую Вы хотите отредактировать. Выбрать таблицу в PHPMyAdmin
      4. Перейти в пункт «Операции«. Операции с таблицами в PHPMyAdmin
      5. Задать необходимые настройки и нажать на соответствующую настройке кнопку «Пошёл«. Редактирование таблицы в PHPMyAdmin

      Теперь о том, как отредактировать поле в таблице:

      1. Зайти на главную страницу PHPMyAdmin.
      2. Выбрать из выпадающего списка имя базы данных, в которой находится искомая таблица. Выбрать базу данных в PHPMyAdmin
      3. Кликнуть по имени таблицы, поле в которой Вы хотите отредактировать. Выбрать таблицу в PHPMyAdmin
      4. Щёлкнуть на значок «Карандаша» напротив поля, которое Вы хотите отредактировать. Выбор поля для редактирования в PHPMyAdmin
      5. Изменить необходимые настройки и нажать на кнопку «Сохранить«. Редактирование поля в PHPMyAdmin

      Чтобы удалить таблицу в PHPMyAdmin надо сделать следующее:

      1. Зайти на главную страницу PHPMyAdmin.
      2. Выбрать из выпадающего списка имя базы данных, в которой находится искомая таблица. Выбрать базу данных в PHPMyAdmin
      3. Кликнуть по имени таблицы, поле в которой Вы хотите отредактировать. Выбрать таблицу в PHPMyAdmin
      4. Перейти по ссылке «Уничтожить«. Удаление таблицы в PHPMyAdmin
      5. Подтвердить удаление. Подтверждение удаления таблицы в PHPMyAdmin

      И последнее — это удаление полей из таблиц в PHPMyAdmin:

      1. Зайти на главную страницу PHPMyAdmin.
      2. Выбрать из выпадающего списка имя базы данных, в которой находится искомая таблица. Выбрать базу данных в PHPMyAdmin
      3. Кликнуть по имени таблицы, в которой Вы хотите удалить поле. Выбрать таблицу в PHPMyAdmin
      4. Щёлкнуть на значок «Крестик» напротив того поля, которое Вы хотите удалить. Удаление поля в PHPMyAdmin
      5. Подтвердить удаление. Подтверждение удаления поля в PHPMyAdmin

      Всё. Надеюсь, Вам стало понятно, как управлять таблицами в PHPMyAdmin, ведь это нужно уметь обязательно.

      Подробная работа с phpMyAdmin в новой версии разобрана в курсе «PHP и MySQL с Нуля до Гуру«: http://srs.myrusakov.ru/php

      P.S. Всех Вас с Рождеством!

      Создано 07.01.2011 11:50:14

    • Михаил Русаков

    Как создавать таблицы в MySQL (Create Table)

    Рассказываем о типах данных, атрибутах, ограничениях и об изменениях в уже созданной таблице.

    Эта инструкция — часть курса «MySQL для новичков».

    Смотреть весь курс

    Введение

    В данной статье мы рассмотрим, как правильно создавать таблицы в MySQL. Для этого разберем основные типы данных, атрибуты, ограничения, и что можно исправить в уже созданной таблице. Чтобы сократить последующие изменения, стоит заранее продумать структуру таблицы и ее содержимое. Наиболее важные пункты:

    • Названия таблиц и столбцов.
    • Типы данных столбцов.
    • Атрибуты и ограничения.

    Ниже разберем подробнее, как реализовать этот короткий список для MySQL наиболее эффективно.

    Синтаксис Create table в MySQL и создание таблиц

    Поскольку наш путь в базы данных только начинается, стоит вспомнить основы. Реляционные базы данных хранят данные в таблицах, и каждая таблица содержит набор столбцов. У столбца есть название и тип данных. Команда создания таблицы должна содержать все вышеупомянутое:

    CREATE TABLE table_name ( column_name_1 column_type_1, column_name_2 column_type_2, . column_name_N column_type_N, ); 

    table_name — имя таблицы;

    column_name — имя столбца;

    column_type — тип данных столбца.

    Теперь разберем процесс создания таблицы детально.

    Названия таблиц и столбцов

    Таблицы и столбцы стоит называть осмысленно и прозрачно, чтобы было понятно, как другому разработчику, так и вам самим спустя полгода. Даже если это учебная база только для вашего пользования, рекомендуем сразу привыкать делать правильно.

    Имена могут содержать символы подчеркивания для большей наглядности. Классический пример непонятных названий — table1, table2 и т. п. Использование транслита, неясных сокращений и, разумеется, наличие орфографических ошибок тоже не приветствуется. Хороший пример коротких информативных названий: Customers, Users, Orders, так как по названию таблицы должно быть очевидно, какие данные таблица будет содержать. Эта же логика применима и к названию столбцов.

    Максимальная длина названия и для таблицы, и для столбцов — 64 символа.

    Типы данных столбцов

    Для каждого столбца таблицы будет определен тип данных. Неправильное использование типов данных увеличивает как объем занимаемой памяти, так и время выполнения запросов к таблице. Это может быть незаметно на таблицах в несколько строк, но очень существенно, если количество строк будет измеряться десятками и сотнями тысяч, и это далеко не предел для рабочей базы данных. Проведем краткий обзор наиболее часто используемых типов.

    Числовые типы
    • INT — целочисленные значения от −2147483648 до 2147483647, 4 байта.
    • DECIMAL — хранит числа с заданной точностью. Использует два параметра — максимальное количество цифр всего числа (precision) и количество цифр дробной части (scale). Рекомендуемый тип данных для работы с валютами и координатами. Можно использовать синонимы NUMERIC, DEC, FIXED.
    • TINYINT — целые числа от −127 до 128, занимает 1 байт хранимой памяти.
    • BOOL — 0 или 1. Однозначный ответ на однозначный вопрос — false или true. Название столбцов типа boolean часто начинается с is, has, can, allow. По факту это даже не отдельный тип данных, а псевдоним для типа TINYINT (1). Тип настолько востребован на практике, что для него в MySQL создали встроенные константы FALSE (0) или TRUE (1). Можно использовать синоним BOOLEAN.
    • FLOAT — дробные числа с плавающей запятой (точкой).
    Символьные
    • VARCHAR(N) — N определяет максимально возможную длину строки. Создан для хранения текстовых данных переменной длины, поэтому память хранения зависит от длины строки. Наиболее часто используемый тип строковых данных.
    • CHAR(N) — как и с varchar, N указывает максимальную длину строки. Char создан хранить данные строго фиксированной длины, и каждая запись будет занимать ровно столько памяти, сколько требуется для хранения строки длиной N.
    • TEXT — подходит для хранения большого объема текста до 65 KB, например, целой статьи.
    Дата и время
    • DATE — только дата. Диапазон от 1000-01-01 по 9999-12-31. Подходит для хранения дат рождения, исторических дат, начиная с 11 века. Память хранения — 3 байта.
    • TIME — только время — часы, минуты, секунды — «hh:mm:ss». Память хранения — 3 байта.
    • DATETIME — соединяет оба предыдущих типа — дату и время. Использует 8 байтов памяти.
    • TIMESTAMP — хранит дату и время начиная с 1970 года. Подходит для большинства бизнес-задач. Потребляет 4 байта памяти, что в два раза меньше, чем DATETIME, поскольку использует более скромный диапазон дат.
    Бинарные

    Используются для хранения файлов, фото, документов, аудио и видеоконтента. Все это хранится в бинарном виде.

    Подробный разбор типов данных, включая более специализированные типы, например, ENUM, SET или BIGINT UNSIGNED, будет в отдельной тематической статье.

    Практика с примерами

    Для лучшего понимания приведем пример, создав простую таблицу для хранения данных сотрудников, где

    • id — уникальный номер,
    • name — ФИО,
    • position — должность
    • birthday — дата рождения

    Синтаксис create table с основными параметрами:

    CREATE TABLE Staff ( id INT, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday Date ); 

    Тут могут появиться вопросы. Откуда MySQL знает, что номер уникален? Если еще нет должности для этого сотрудника, что будет, если оставить поле пустым?
    Все это (как и многое другое) придется указать с помощью дополнительных параметров — атрибутов.

    Часто таблицы создаются и заполняются скриптами. Если мы вызовем команду CREATE TABLE Staff, а таблица Staff уже есть в базе, команда выдаст ошибку. Поэтому перед созданием разумно проверить, содержит ли уже база таблицу Staff. Достаточно добавить IF NOT EXISTS, чтобы выполнить эту проверку в MySQL, то есть вместо

    CREATE TABLE Staff 
    CREATE TABLE IF NOT EXISTS Staff 

    Повторный запуск команды выведет предупреждение:

    1050 Table 'Staff' already exists 

    Если таблица уже создана и нужно создать таблицу с тем же именем с «чистого листа», старую таблицу можно удалить командой:

    DROP TABLE table_name; 

    Атрибуты (ATTRIBUTES) и ограничения (CONSTRAINTS)

    PRIMARY KEY

    Предназначение индексов — обеспечить быстрый доступ к табличным данным. Основная идея — существенное ускорение поиска. Создание первичного ключа, внешних ключей, определение уникальных значений в столбце — во всех этих случаях будут созданы индексы. Существуют определенные ограничения на построения индексов в зависимости от типов данных, но разбор этих нюансов будет в других статьях.

    Пользы индексов на примерах: для поиска уникального значения среди 10000 строк придется проверить, в худшем случае, все 10000 без индекса, с индексом — всего 14. Поиск по миллиону записей займет не больше в 20 проверок — это реализация идеи бинарного поиска.

    Создадим таблицу Staff с номером сотрудника в качестве первичного ключа. Первичный ключ гарантирует нам, что номер точно будет уникальным, а поиск по нему — быстрым.

    CREATE TABLE Staff ( id INT PRIMARY KEY, name VARCHAR(255), position VARCHAR(30), birthday Date, has_children BOOLEAN ); 

    NOT NULL

    При заполнении таблицы мы утверждаем, что значение этого столбца должно быть установлено. Если нет явного указания NOT NULL, и этот столбец не PRIMARY KEY, то столбец позволяет хранить NULL, то есть хранение NULL — поведение по умолчанию. Для первичного ключа это ограничение можно не указывать, так как первичный ключ всегда гарантирует NOT NULL.

    Изменим команду CREATE TABLE, добавив NOT NULL ограничения: таким образом, мы обозначим обязательные для заполнения столбцы (т.е. столбцы, поля в которых не могут оставаться пустыми при наличии записи в таблице):

    CREATE TABLE Staff ( id INT PRIMARY KEY, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday DATE NOT NULL, has_children BOOLEAN NOT NULL ); 

    DEFAULT

    Можно указать значение по умолчанию, т.е. текст или число, которые будут сохранены, если не указано другое значение. Применяется не ко всем типам: BLOB, TEXT, GEOMETRY и JSON не поддерживают это ограничение.
    Эта величина должна быть константой, функция или выражение не допустимы.

    Продолжим изменять команду, установив ограничение DEFAULT для поля BOOLEAN.

    CREATE TABLE Staff ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday DATE NOT NULL, has_children BOOLEAN DEFAULT(FALSE) NOT NULL ); 

    Для типа данных BOOLEAN можно использовать встроенные константы FALSE и TRUE. Вместо DEFAULT(FALSE) можно указать DEFAULT(0) — эти записи эквивалентны.

    AUTO_INCREMENT

    Каждый раз, когда в таблицу будет добавлена запись, значение этого столбца автоматически увеличится. На всю таблицу этот атрибут применим только к одному столбцу, причем этот столбец должен быть ключом. Рекомендуется использовать для целочисленных значений. Нельзя сочетать с DEFAULT.

    CREATE TABLE Staff ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday DATE NOT NULL, has_children BOOLEAN DEFAULT(FALSE) NOT NULL ); 

    Теперь номер сотрудника будет автоматически последовательно увеличиваться при каждой новой записи в таблицу.

    Интересно, что при CREATE TABLE MySQL не позволяет установить стартовое значение для AUTO_INCREMENT. Можно назначить стартовое значение для счетчика AUTO_INCREMENT уже созданной таблицы.

    ALTER TABLE Staff AUTO_INCREMENT=10001; 

    Первая запись после такой модификации получит >

    UNIQUE

    Это ограничение устанавливает, что все значения данного столбца будут уникальны в пределах таблицы, и создает индекс. Можно применять к столбцам с поддержкой NULL, но так как NULL будет считаться уникальным значением, возможна только одна NULL-запись.

    CREATE TABLE Staff ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday DATE NOT NULL, has_child BOOLEAN DEFAULT(0) NOT NULL, phone VARCHAR(20) UNIQUE NOT NULL ); 

    CHECK

    Позволяет установить дополнительную проверку данных для столбца или набора столбцов. Это тоже CONSTRAINT, так как накладывает ограничение.
    На примере ограничим дату рождения сотрудника.

    Синтаксис позволяет устанавливать CHECK как в описании столбца при CREATE TABLE:

    birthday DATE NOT NULL CHECK (birthday > ‘1900-01-01’), 

    так отдельно от описания столбцов:

    CHECK (birthday > ‘1900-01-01’), 

    В этих случаях название проверки будет определено автоматически. При вставке данных, не прошедших проверку, будет сообщение об ошибке Check constraint ‘staff_chk_1’ is violated. Ситуация усложняется, когда установлено несколько CHECK, поэтому рекомендуется давать понятное имя.

    Воспользуемся полной командой для создания CHECK и определим не только ограничение даты рождения, но и допустимые форматы телефона через регулярное выражение.

    CREATE TABLE Staff ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday DATE NOT NULL, has_child BOOLEAN DEFAULT(0) NOT NULL, phone VARCHAR(20) UNIQUE NOT NULL, CONSTRAINT staff_chk_birthday CHECK (birthday > '1900-01-01'), CONSTRAINT staff_chk_phone CHECK (phone REGEXP '[+]?[0-9] ?\\(?[0-9]\\)? ?[0-9][0-9 -]+[0-9]') ); 

    Для добавления ограничений используем оператор CONSTRAINT, при этом, все названия уникальны, как и имена таблиц. Учитывая, что по умолчанию названия включают в себя и имя таблицы, рекомендуем придерживаться этого правила. Если используется CONSTRAINT, мы обязаны дать имя ограничению, которое вводим.

    FOREIGN KEY или внешний ключ

    Внешний ключ — это ссылка на столбец или группу столбцов другой таблицы. Это тоже ограничение (CONSTRAINT), так как мы сможем использовать только значения, для которых есть соответствие по внешнему ключу. Таблицу с внешним ключом называют зависимой.

    FOREIGN KEY (column_name1, column_name2) REFERENCES external_table_name(external_column_name1, external_column_name2) 

    Сначала указывается выражение FOREIGN KEY и набор столбцов таблицы, откуда строим FOREIGN KEY. Затем ключевое слово REFERENCES указывает на имя внешней таблицы и набор столбцов этой внешней таблицы. В конце можно добавить операторы ON DELETE и ON UPDATE, с помощью которых настраивается поведение при удалении или обновлении данных в главной таблице. Это делать не обязательно, так как предусмотрено поведение по умолчанию. Поведение по умолчанию запрещает удалять или изменять записи из внешней таблицы, если на эти записи есть ссылки по внешнему ключу.

    Возможные опции для ON DELETE и ON UPDATE:

    CASCADE: автоматическое удаление/изменение строк зависимой таблицы при удалении/изменении связанных строк главной таблицы.
    SET NULL: при удалении/изменении связанных строк главной таблицы будет установлено значение NULL в строках зависимой таблицы. Столбец зависимой таблицы должен поддерживать установку NULL, т.е. параметр NOT NULL в этом случае устанавливать нельзя.
    RESTRICT: не даёт удалить/изменить строку главной таблицы при наличии связанных строк в зависимой таблице. Если не указана иная опция, по умолчанию будет использовано NO ACTION, что, по сути, то же самое, что и RESTRICT.

    Рассмотрим пример:
    Для таблицы Staff было определено текстовое поле position для хранения должности.
    Так как список сотрудников в компании обычно больше, чем список занимаемых должностей, есть смысл создать справочник должностей.

    CREATE TABLE Positions ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL ); 

    Поскольку из Staff мы будем ссылаться на Positions, таблица персонала Staff будет зависимой от Positions. Изменим синтаксис CREATE TABLE для таблицы Staff, чтобы должность была ссылкой на запись в таблице Positions.

    CREATE TABLE Staff ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, position_id int, birthday DATE NOT NULL, has_child BOOLEAN DEFAULT(0) NOT NULL, phone VARCHAR(20) UNIQUE NOT NULL, FOREIGN KEY (position_id) REFERENCES Positions (id) ); 

    При CREATE TABLE, чтобы не усложнять описание столбца, рекомендуется указывать внешний ключ и все его атрибуты после перечисления создаваемых столбцов.
    Можно ли добавить внешний ключ, если таблица уже создана и в ней есть данные? Можно! Для внесения изменений в таблицу используем ALTER TABLE.

    ALTER TABLE Staff ADD FOREIGN KEY (position_id) REFERENCES Positions(id); 

    Или в развернутой форме, определяя имя ключа fk_position_id явным образом:

    ALTER TABLE Staff ADD CONSTRAINT fk_position_id FOREIGN KEY (position_id) REFERENCES Positions(id); 

    Главное условие в этом случае — согласованность данных. Это значит, что для всех записей внешнего ключа position_id должно найтись соответствие в целевой таблице Positions по столбцу id.

    Создание таблиц на основе уже существующих, временные таблицы

    Мы рассмотрели создание таблицы с «чистого листа», но есть два других способа:

    LIKE

    Создание таблицы на основе уже существующей таблицы. Копирует структуру — количество, названия и типы столбцов, индексы, все ограничения, кроме внешних ключей. Как мы помним, внешний ключ создает индекс. При создании через LIKE индексы в новой таблице будут построены также, как и в старой, но внешние ключи не скопируются. Таблица будет создана без записей и без счетчиков AUTO_INCREMENT.

    CREATE TABLE new_table LIKE source_table; 

    SELECT

    Можно создать таблицу на основе SELECT-запроса — результат этой выборки будет записан в новую таблицу. Такая таблица не будет иметь индексов, ограничений и ключей. Все столбцы, с учетом порядка, типов данных и названий, будут взяты из запроса — поля из SELECT станут столбцами новой таблицы. При этом можно переопределить изначальные названия полей, что особенно актуально, когда в выборку попадают столбцы с одинаковыми названиями (на уровне таблицы названия столбцов всегда уникальны).

    CREATE TABLE new_table [AS] SELECT * FROM source_table; 

    Разберем пример создания новой таблицы через SELECT, используя две таблицы в выборке — Staff и Positions. В запросе определим три поля: id, staff, position — это будут столбцы новой таблицы StaffData211015 (срез сотрудников на определённую дату). Без присвоения псевдонимов (name as staff, name as position) в выборке получилось бы два одинаковых поля name, что не позволило бы создать таблицу из-за duplicate column name ошибки.

    CREATE TABLE StaffData211015 SELECT s.Id, s.name as staff, p.name as position FROM Staff s JOIN Positions p ON s.position_id = p.id 

    TEMPORARY

    При подготовке отчетов или обработке данных на стороне базы, нередко может потребоваться сохранять промежуточные результаты в отдельные таблицы.
    После завершения всех вычислений внутри скрипта эти вспомогательные таблицы нам будут уже не нужны. В таких ситуациях удобно использовать временные таблицы, которые будут существовать до завершения работы скрипта.

    Чтобы обозначить таблицу как временную, нужно добавить TEMPORARY в CREATE TABLE:

    CREATE TEMPORARY TABLE table_name; 

    Работа с уже созданной таблицей

    Когда таблица создана, работа с ней только начинается. Операторы и команды для работы с данными рассмотрены в другой статье, а сейчас посмотрим, что же можно исправить, если потребовалось внести изменения.

    Переименование

    Ключевая команда — RENAME.

    • Изменить имя таблицы:
    RENAME TABLE old_table_name TO new_table_name; 
    • Изменить название столбца:
    ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name; 

    Удаление данных

    • DELETE FROM Staff; — удалит все записи из таблицы. Условие в WHERE позволит удалить только определенные строки, в примере ниже удалим только одну строку с DELETE FROM Staff WHERE TABLE Staff; — используется для полной очистки всей таблицы. При TRUNCATE счетчики AUTO_INCREMENT сбросятся. Если бы мы удалили все в строки командой DELETE, то новые строки учитывали бы накопленный за время жизни таблицы AUTO_INCREMENT.
    • DROP TABLE Staff; — команда удаления таблицы.

    Изменение структуры таблицы

    Команда ALTER TABLE включает в себя множество опций, рассмотрим основные вместе с примерами на таблице Staff.

    Добавление столбцов

    Добавим три столбца: электронную почту, возраст и наличие автомобиля. Так как в таблице уже есть записи, мы не можем пока что отметить эти поля как NOT NULL, по умолчанию они будут позволять хранить NULL.

    ALTER TABLE Staff ADD email VARCHAR(50), ADD age INT, ADD has_auto BOOLEAN; 
    Удаление столбцов

    Удалим столбец с возрастом, так как сейчас возраст сотрудников в базе всегда статичен, а должен быть вычисляемым полем в зависимости от текущей даты.

    ALTER TABLE Staff DROP COLUMN age; 
    Значение по умолчанию

    Выставим значение по умолчанию для столбца has_auto:

    ALTER TABLE Staff ALTER COLUMN has_auto SET DEFAULT(FALSE); 
    Изменение типа данных столбца

    Для столбца name изменим тип данных:

    ALTER TABLE Staff MODIFY COLUMN name VARCHAR(500) NOT NULL; 

    Максимальная длина поля была увеличена. Если не указать NOT NULL явно, то поле станет NULL по умолчанию.

    Установка CHECK

    Добавим ограничение формата для email через регулярное выражение:

    ALTER TABLE Staff ADD CONSTRAINT staff_chk_email CHECK (email REGEXP '^[^@]+@[^@]+\\.[^@]$'); 

    Заключение

    Любой путь начинается с первых шагов. В работе с базами данных этими шагами является создание структуры таблиц. Продуманная композиция сущностей (таблиц) и связей между ними — основа проектирования любого вашего приложения от интернет-магазинов до мощных систем управления предприятиями.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *