mysql добавить новое поле в таблицу
Как добавить новый столбец в таблицу на SQL?
Продолжаем изучать SQL и сегодня мы поговорим о том, как можно добавить новую колонку в уже существующую таблицу с данными. И как обычно рассмотрим примеры реализации этого в разных СУБД.
Очень часто бывает, что нужно добавлять колонки в существующие таблицы, которые уже находятся в работе и в них уже есть данные. Причины такой необходимости могут быть разные, например, добавилась еще одна характеристика и ее нужно хранить именно в этой таблице. Ну, в общем если Вы читаете эту статью, то у Вас возникла такая необходимость и сейчас мы с Вами научимся добавлять новые столбцы в таблицу.
Добавляем колонку в таблицу в PostgreSQL
Сначала начнем разбирать пример на СУБД PostgreSQL. Допустим, у нас есть таблица «users» и в ней уже есть данные:
| id | Name | Fam |
| 1 | User1 | Fam1 |
| 2 | User2 | Fam2 |
| 3 | User3 | Fam3 |
Другими словами у нас в таблице имеется:
У нас возникла необходимость добавить в нашу таблицу еще и отчество пользователя. Обращаю Ваше внимание на то, что перед добавлением новой колонке Вы должны определить, какой тип данных будет в этой колонке. В нашем примере подойдет тип varchar.
Переходим к добавлению столбца:
Теперь после того, как Вы добавили колонку, можно обновить данные, например, добавим в строку со значением user1 отчество Otch1:
После этого можете проверить данные, выполнив запрос на выборку с помощью нам уже известного оператора SELECT:
Вы получите следующий результат:
| id | Name | Fam | Otch |
| 1 | User1 | Fam1 | Otch1 |
Добавляем новую колонку в таблицу в MS SQL Server 2000
Думаю, что с PostgreSQL мы разобрались, а точнее научились добавлять колонки в существующие таблицы.
Теперь попробуем проделать то же самое в MS SQL Server 2000. Все исходные данные допустим, будут такими же.
Здесь запрос практически такой же, но все равно он немного отличается:
Здесь уже название схемы указывать необязательно (по умолчанию таблица будет определена на основе контекста подключения), а также ключевое слово column тоже нет необходимости писать. Давайте также обновим и проверим наши данные:
Заметка! Всем тем, кто только начинает свое знакомство с языком SQL, рекомендую прочитать книгу «SQL код» – это самоучитель по языку SQL, которую написал я, и в которой я подробно, и в то же время простым языком, рассказываю о языке SQL.
Вот и все! Надеюсь, Вам помог этот небольшой урок по добавлению колонок в существующие таблицы с использованием языка SQL. Удачи!
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.
Например:
Вставка данных в базу данных MySQL
В этом уроке вы узнаете, как вставлять записи в таблицу MySQL с помощью PHP.
Вставка данных в таблицу базы данных MySQL
После создания таблицы, следующим шагом будет ввод данных в таблицу. Чтобы ввести данные в таблицу, мы должны соблюдать определенные правила:
Давайте сделаем SQL-запрос, используя оператор INSERT INTO с соответствующими значениями, после чего мы передадим его функции PHP mysqli_query() для вставки данных в таблицу.
Следующий пример вставляет новую строку в таблицу persons, указывая значения для полей first_name, last_name и email в трех различных версиях: с использованием синтаксиса объектно-ориентированной процедуры MySQLi, процедурный MySQLi и процедуры PDO.
Пример
Примечание: Если столбец — это AUTO_INCREMENT (например, столбец «id»), то его не нужно указывать в запросе SQL. Этот модификатор сообщает MySQL автоматически присвоить значение этому полю.
Вставка нескольких строк в таблицу
Вы также можете вставить сразу несколько строк в таблицу с помощью одного запроса на вставку. Для этого включите в оператор INSERT INTO несколько списков значений столбцов, где значения столбцов для каждой строки должны быть заключены в круглые скобки и разделены запятыми.
В следующем примере вставим еще несколько строк в таблицу persons:
Пример
Теперь перейдите в phpMyAdmin и проверьте данные таблицы persons внутри базы данных. Вы обнаружите, что значение столбца id присваивается автоматически путем увеличения значения предыдущего идентификатора на 1.
Чтобы облегчить чтение синтаксиса, мы, в отличие от предыдущего примера, разбиваем его на отдельные запросы и добавляем их друг к другу с помощью оператора (.=) :
Пример
Поскольку точка с запятой является частью SQL-запроса, а не оператором PHP, мы добавляем ее в кавычки запроса.
Вставка данных в БД из HTML-формы
В предыдущем разделе мы узнали, как вставлять данные в базу данных из сценария PHP. Теперь посмотрим, как мы можем вставить данные в базу данных, полученную из HTML-формы. Давайте создадим HTML-форму, которую можно использовать для вставки новых записей в таблицу persons.
Создадим простую HTML-форма с тремя текстовыми полями и кнопкой отправки:
Пример
Получение и вставка данных формы
Ниже приведен полный код нашего файла insert.php:
Пример
Примечание: Функция mysqli_real_escape_string() экранирует специальные символы в строке и создает допустимую строку SQL для защиты от атаки, при которой злоумышленник может внедрить или выполнить вредоносный код SQL.
Это простой пример вставки данных формы в таблицу базы данных MySQL. Вы можете расширить этот пример и сделать его более интерактивным, добавив проверки для пользовательского ввода перед вставкой его в таблицы базы данных. Ознакомьтесь с руководством по проверке форм PHP, чтобы узнать больше о валидации и проверке вводимых пользователем данных с помощью PHP.
Добавление данных в таблицу MySQL (INSERT INTO)
Дата: 16.04.2019 Категория: MySQL Комментарии: 0

В этом руководстве вы узнаете, как вставлять записи в таблицу базы данных MySQL с помощью SQL запроса.
Вставка данных в таблицу
В одной из предыдущих статей мы создали таблицу в нашей демонстрационной базе данных. Теперь пришло время вставить некоторые данные в нашу недавно созданную таблицу.
Оператор INSERT INTO используется для вставки новых строк в таблицу базы данных.
Синтаксис
Основной синтаксис для вставки данных в таблицу может быть задан с помощью:
Давайте вставим несколько записей в таблицу persons.
Шаг 1: Просмотр структуры таблицы MySQL
Перед добавлением записи рекомендуется получить информацию о структуре таблицы. Выполните следующую команду в командной строке MySQL. Она отобразит информацию о столбцах в таблице persons, то есть имя столбца, тип данных, ограничения и т.д.
Вы можете увидеть информацию о столбце или структуру любой таблицы в базе данных MySQL и Oracle, используя команду DESCRIBE table_name;
Шаг 2: Добавление записей в таблицу MySQL
Следующий оператор вставляет новую строку в таблицу persons.
Вы заметили, что мы не вставили никакого значения в поле id? Потому что поле id было помечено флагом AUTO_INCREMENT, что говорит MySQL автоматически назначать значение этому полю, если оно не определено.
Теперь, если вы выберете записи из таблицы, вывод будет выглядеть следующим образом:
SQL INSERT INTO: примеры вставки строк в таблицу БД MySQL
SQL оператор INSERT используется для вставки записей в существующую таблицу.
Синтаксис этого оператора следующий:
Создадим тестовую таблицу
Давайте создадим таблицу table1 со столбцами a, b, c в нашей MySQL базе данных:
Запрос на вставку строки
Простой запрос, который вставляет строку со столбцами 111, 222 и 333 выглядит так:
Еще один способ сделать то же самое:
Столбцы, которые вы не перечислите заполняются значениями по умолчанию, которые вы предусматриваете при создании таблицы, даже если это просто NULL.
У таблиц обычно есть поле id с первичным ключом (PRIMARY KEY) таблицы. Если этому полю установлено значение AUTOINCREMENT т.е. оно заполняется автоматически, то в таком случае вы не должны его перечислять в списке столбцов оператора INSERT.
Вставка без перечисления столбцов
Если количество значений, которые мы вставляем = количеству столбцов в таблице, то можно не перечислять столбцы, и наш запрос может выглядеть так:
Этот способ крайне не рекомендуется. Дело в том, что со временем вы можете менять таблицы, например добавлять в них новые столбцы, а это значит, что все запросы записанные таким способом просто перестанут работать и вам придется менять их по всему вашему приложению. Поэтому, навсегда забываем этот способ. Я его привел, только чтобы вы так не делали.
Вставка сразу нескольких строк с помощью INSERT INTO
Если нам нужно вставить несколько строк, то мы просто перечисляем группы значений через запятую выглядит это так:
Таким образом мы вставили 3 строки в нашу таблицу table1. Их может быть и больше. В MySQL четкого предела нет, однако он все таки существует и зависит от параметра max_allowed_packet который ограничивает размер запроса. Если вы установите SET GLOBAL max_allowed_packet=524288000; то размер запроса будет ограничен 500MB но делайте это в очень крайнем случае. Обычно всегда можно найти решение и разделить 1 большой запрос, на несколько более мелких и вставлять например не больше 1000 строк за один цикл.
Допустим у нас есть еще одна таблица table2 которая по структуре точно такая же как и первая. Нам в таблицу table2 нужно вставить все строки из table1.
Вставляем значения из table1 в таблицу table2:
Вам следует позаботиться об уникальности ключей, если они есть в таблице, в которую мы вставляем. Например при дублировании PRIMARY KEY мы получим следующее сообщение об ошибке:
Если вы делаете не какую-то единичную вставку при переносе данных, а где-то сохраните этот запрос, например в вашем PHP скрипте, то всегда перечисляйте столбцы.
Как не рекомендуется делать (без перечисления столбцов):
Если у вас со временем изменится количество столбцов в таблице, то запрос перестанет работать. При выполнении запроса MySQL в лучшем случае просто будет возвращать ошибку:
Либо еще хуже: значения вставятся не в те столбцы.
А теперь представим, что нам нужно вставить только те строки из table1, у которых столбец «c» равен 333. Тогда наш запрос будет выглядеть так
То есть мы просто вставляем данные в таблицу, которые выбрали из другой таблицы при помощи обычного SELECT запроса
Теперь в столбец d у нас записалась единица и проблема решена.
Если вам нужно вставить строки в определенный раздел таблицы, то нужно после таблицы указать PARTITION (название раздела), например так:
Вставка в несколько разделов. Первая строка вставляется в раздел p1, а вторая в p2
Вставка строк, некоторые из которых уже существуют в целевой таблице
Существование строк определяется по значению уникальных ключей. В зависимости от ситуации мы можем выбрать разные способы поведения при совпадении значений уникальных столбцов.
Игнорирование INSERT IGNORE INTO
Например если мы вставляем строку с PK = 1, и при этом в таблице уже есть PK = 1 то MySQL выдаст ошибку:
Выполнение запроса на этом прервется, однако нам в некоторых случаях хотелось бы просто вставить данные, игнорируя ошибки. В этом нам поможет INSERT IGNORE INTO:
Просто добавляем IGNORE в наш запрос и ошибки будут игнорироваться
Вставка с заменой существующих значений REPLACE INTO
REPLACE работает также INSERT, но если совпадают уникальные ключи, то старая строка (или строки!) удаляется до вставки новой.
В таком случае наш пример выглядит следующим образом:
Обновление некоторых полей, при существовании строк ON DUPLICATE KEY UPDATE
При совпадении ключей, мы можем также заменить некоторые или все поля в строке.
Наш запрос будет выглядеть так:
В данном примере если у нас какой-то уникальный ключ совпадает, то мы не производим вставку, а обновляем существующую строку или строки путем присваивания столбцу «c» значения, которое у нас перечислено в VALUES.
Иными словами, если ключ совпадает, то мы просто обновим данные столбца «с» а остальные столбцы трогать не будем.
Иногда нам нужно при совпадении ключей обновить все значения. Этом можно сделать просто перечислив все столбцы:
При обновлении столбцов мы также можем использовать разные выражения, например:
Выражения для вставляемых значений в VALUES
При вставке значений, мы можем использовать выражения и даже использовать в своих выражениях значения других столбцов.
Пример использования выражений:
Таким образом мы для формирования столбца «c» использовали столбцы «a» и «b».
Приоритет вставки INSERT LOW_PRIORITY / HIGH_PRIORITY
Установление приоритета нужно для решение проблем с конкурентными вставками. При вставках происходит блокировка строк и если 2 INSERT запроса требуют блокировки одних и тех же строк, для своего выполнения, то иногда может потребоваться повысить или понизить приоритет некоторых запросов, по отношению к другим. Это можно сделать указав приоритет LOW_PRIORITY или HIGH_PRIORITY
Наш запрос будет выглядеть так для LOW_PRIORITY:

