как добавить поле в таблицу mysql

Как добавить поле в таблицу mysql

Пример базового использования команды INSERT

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

Используйте команду SELECT для проверки введенных данных.

Вставка данных только для определенных столбцов

Мы не указали значения полей dept и salary. В итоге, мы получили NULL в этих столбцах. Обратите внимание, это не строковое значение “NULL”, это значение, указывающие на то, что ячейка пуста.

Пример Insert Set

Вместо ключевого слова values вы можете использовать слово SET для установки значения нужному полю.

Следующая команда является полным аналогом той, что мы рассмотрели выше:

Вставка значений на основе значений из другой таблицы

В этом примере мы используем INSERT. SELECT метод, для выбора значений из другой таблицы.

Ввод выбранных столбцов из другой таблицы

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

Также допускается использование условий WHERE.

Обратите внимание, если запись с указанным ID уже существует, вы получит ошибку. ERROR 1062 (23000): Duplicate entry ‘100’ for key ‘PRIMARY’

Ввод записей в определенную секцию

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

Обратите внимание, что запись с этим ID уже существует в указанном разделе. Поэтому мы получим соответствующую ошибку.

Внимание: Этот пример отработает только в MySQL 5.6 и выше.

Вставка записей в несколько разделов таблицы

Обратите внимание, если по какой-либо причине одна из записей вызовет ошибку при обработке, то весь запрос будет отменен.

Снова, пример отработает только в MySQL 5.6 и выше.

Игнорирование ошибок при вводе данных

К примеру, следующая команда вызовет ошибку, так как запись с таким ID уже существует.

Значение по-умолчанию

Если MySQL запущен в строгом режиме, то, не указав значения по-умолчанию для полей, мы получим ошибки.

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

Например, в таблице bonus оба поля не могут принимать значение NULL.

Введем значение только для id.

При выборке данных, мы видим, что поле amount приняло значение 0.

Если мы опустим оба поля при вводе данных, то они примут значение 0. Если поля не указаны при вводе, то они принимают значения по-умолчанию для таблицы.

Выражения в качестве значение в INSERT

Изменение приоритета команды INSERT

Например, следующая команда откладывает операцию INSERT до тех пор, пока сервер не обработает все операции чтения над таблицей.

Также можно указывать высокий приоритет. Это операции полностью противоположна предыдущей.

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

Обновления строки при повторении

Если в процессе записи будет обнаружена запись с повторяющимся значением ID, операция будет остановлена с соответствующей ошибкой.

Читайте также:  мойка крыш в лиде

Источник

Команда ALTER TABLE в MySQL: как добавить, удалить и изменить столбцы

Главное меню » Базы данных » База данных MySQL » Команда ALTER TABLE в MySQL: как добавить, удалить и изменить столбцы

Использование и примеры ALTER TABLE

Во-первых, давайте создадим базу данных и таблицу, которые мы будем называть соответственно «mytest» и «andreyex». Вот как вы это сделаете:

Переименовать таблицу

Синтаксис для переименования таблицы:

Итак, чтобы изменить таблицу andreyex на «myusers», выполните следующие действия:

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

Синтаксис добавления столбца в таблицу:

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

Здесь мы добавим строковый столбец «address», набрав:

Добавьте столбец TIMESTAMP с именем «date», введя следующую команду:

Добавьте индекс в столбец с именем «id», выполнив:

Также возможно сделать несколько дополнений одновременно:

Теперь наша таблица должна выглядеть так:

Изменить тип столбца

Синтаксис модификации столбцов:

Чтобы изменить поле адреса, чтобы разрешить более крупные строки:

Мы также можем объединить сразу несколько модификаций:

С помощью этой команды мы также изменили столбец с именем «name» на «lastname» и указали ему значения NULL.

Изменение значения столбца по умолчанию

Чтобы изменить значение по умолчанию для столбца, используйте синтаксис SET DEFAULT:

Теперь наша финальная таблица выглядит так:

Почему вы должны использовать ALTER TABLE?

Внесение изменений в структуру базы данных MySQL через командную строку и ALTER TABLE иногда может быть более быстрым и гибким, чем использование PHPMyAdmin или аналогичных инструментов графического интерфейса.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Добавление столбцов в таблицу (компонент Database Engine)

В этой статье содержатся инструкции по добавлению новых столбцов в таблицу в SQL Server при помощи SQL Server Management Studio или Transact-SQL.

Перед началом

Ограничения

Использование инструкции ALTER TABLE для добавления столбцов в таблицу приводит к автоматическому добавлению этих столбцов в конец таблицы. Если требуется, чтобы столбцы располагались в таблице в определенном порядке, воспользуйтесь SQL Server Management Studio. Однако помните, что это не рекомендуемый метод конструирования баз данных. Рекомендуется указывать порядок, в котором возвращаются столбцы, на уровне приложения и запроса. Не следует предполагать, что SELECT * будет возвращать все столбцы в ожидаемом порядке, основанном на порядке их определения в таблице. Всегда указывайте столбцы в запросах и приложениях по именам в том порядке, в котором они должны следовать.

безопасность

Permissions

Требуется разрешение ALTER на таблицу.

Использование среды SQL Server Management Studio

Вставка в таблицу столбцов с помощью конструктора таблиц

В обозревателе объектов щелкните правой кнопкой мыши таблицу, в которую необходимо добавить столбцы, и выберите пункт Конструктор.

Введите имя столбца в ячейку. Имя столбца — значение, которое необходимо указать.

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

Читайте также:  Колесная формула что значит

Это — обязательное значение, и если его не указать, будет использоваться значение по умолчанию.

Значения по умолчанию можно установить или изменить в диалоговом окне Параметры в Инструменты для баз данных.

По окончании добавления столбцов из меню Файл выберите пункт Сохранить имя таблицы.

Источник

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Базы данных

ALTER TABLE оператор MySQL

В этом учебном пособии вы узнаете, как использовать MySQL оператор ALTER TABLE для добавления столбца, изменения столбца, удаления столбца, переименования столбца или переименования таблицы (с синтаксисом и примерами).

Описание

MySQL оператор ALTER TABLE используется для добавления, изменения или удаления столбцов в таблице. Оператор MySQL ALTER TABLE также используется для переименования таблицы.

Добавить столбец в таблицу

Синтаксис

Синтаксис добавления столбца в таблицу MySQL (с использованием оператора ALTER TABLE):

Пример

Рассмотрим пример, который показывает, как добавить столбец в таблицу MySQL, используя оператор ALTER TABLE.
Например:

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

Синтаксис

Синтаксис добавления нескольких столбцов в таблицу MySQL (с использованием оператора ALTER TABLE):

Пример

Рассмотрим пример, который показывает, как добавить несколько столбцов в таблицу MySQL, используя оператор ALTER TABLE.
Например:

Изменить столбец в таблице

Синтаксис

Синтаксис для изменения столбца в таблице MySQL (с использованием оператора ALTER TABLE):

Пример

Рассмотрим пример, который показывает, как изменить столбец в таблице MySQL с помощью оператора ALTER TABLE.
Например:

Этот пример ALTER TABLE изменит столбец с именем last_name как тип данных varchar (50) и установит для столбца значения NULL.

Изменить несколько столбцов в таблице

Синтаксис

Синтаксис для изменения нескольких столбцов в таблице MySQL (с использованием оператора ALTER TABLE):

Пример

Рассмотрим пример, который показывает, как изменить несколько столбцов в таблице MySQL, используя оператор ALTER TABLE.

Удаление столбца из таблицы

Синтаксис

Синтаксис для удаления столбца из таблицы в MySQL (с использованием оператора ALTER TABLE):
Например:

Пример

Рассмотрим пример, который показывает, как удалить столбец из таблицы в MySQL с помощью оператора ALTER TABLE.
Например:

Переименование столбца в таблице

Синтаксис

Синтаксис для переименования столбца в таблице MySQL (с использованием оператора ALTER TABLE):

Пример

Рассмотрим пример, который показывает, как переименовать столбец в таблице MySQL с помощью оператора ALTER TABLE.
Например:

Источник

ALTER очень больших таблиц в MySQL

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

Дано: таблица размером в несколько десятков гигабайт данных. Задача — изменить структуру таблицы.

Сразу забегу в перед, работать метод будет только на транзакционных таблицах. Если у вас MyISAM-таблица на десятки гигабайт, то тут как в том анекдоте — «разбирайтесь сами со своими проблемами». Пример будет приведен для InnoDB таблицы.

Предположим что структура нашей таблицы такая:

Мы хотим добавить в эту таблицу поле last_login.

Читайте также:  как сделать крышу рубероидом

Какие у нас есть варианты.

В лоб

Вариант прекрасно работет на мелких проектах где размер таблиц редко превышает 50 000 записей. Нам вариант не подходит т.к. ALTER будет выполнятся слишком долго и все это время таблица будет заблокирована как на запись так и на чтение. Соответственно сервис нужно будет останавливать на это время.

Включаем мозг

Можно вообще не трогать таблицу раз уж на то пошло, а сделать отдельную `users_lastvisits`:

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

И все таки — нужно добавить поле

Можно поднять master-slave репликацию, сделать ALTER на slave-сервере а потом поменять их местами. Если честно я таким никогда не занимался, может это и проще следующего способа, но не всегда есть возможность поднять репликацию.

Мой способ заключается в следующем

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

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

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

Все, теперь пока таблица переливается у нас есть время подумать как будем вливать изменившиеся с момента начала переливки данные. Тут вообщем то ничего сложного — скрипт приводить я не буду, нужно просто брать по одной записи из таблицы users_updated_rows в том порядке, в котором они добавлялись (сортировать по первичному ключу) и обновлять или удалять её в таблице _users;

Итак, переливка таблицы уже закончилась, нужно вливать остальные данные. Запускаем скрипт. Скрипт должен работать постоянно и обновлять все записи которые добавляются в лог, когда он перельет все данные нужно переименовать таблицы:

Стоит заметит что в этот момент возможна небольшая потеря данных т.к. запросы выполняются не атомарно. Если это критично, лучше выключить сервис на некоторое время чтобы запросов на изменение не было. Можно например забрать права на запись у пользователя а выполнять команды под другим пользователем.

Если все сделать правильно данные не будут потеряны и перерывов в работе сервиса практически не будет. Что нам и требовалось. Таким же способом можно перелить данные на другой сервер, поменяется только способ переливки. Вместо

нужно перелить через mysqldump:

Таким способом мне удалось перелить без остановки работы сервисов на другой сервер таблицу размером в 60Gb и 400 млн строк где то за 12 часов.

Кстати, велосипед уже изобретен Facebook и называется Online Schema Change for MySQL.

Источник

Развивающий портал