Добавить столбец в таблицу в mysql: Как добавить столбец в таблицу MySQL

sql — MySQL Заполнить новый столбец отобранными значениями из одного столбца по условию зависимости от второго столбца

Есть некоторый список тегов transport = («авто», «пешеход»)
Нужно найти элементы этого списка в поле tagname (всегда может быть только один тег), и если такой элемент нашелся, то для каждой строки с тем же productid добавить в новую колонку transport данный элемент

Т.е. из таблицы

productid tagname
31 авто
31 колесо
50 пешеход
50 ботинки
50 кроссовки
31 двигатель

нужно получить следующую таблицу с помощью запроса в MySQL:

productid tagname transport
31 авто авто
31 колесо авто
50 пешеход пешеход
50 ботинки пешеход
50 кроссовки пешеход
31 двигатель авто
  • mysql
  • sql






2

Вам нужен мультитабличный UPDATE

UPDATE
  mytable t,
  (
    SELECT
      productid,
      tagname
    FROM
      mytable
    WHERE
      tagname IN ('авто', 'пешеход')
  ) tags
SET
  t. transport = tags.tagname
WHERE
  t.productid = tags.productid;

SQL Fiddle

Или так

UPDATE
  mytable tags
  JOIN mytable t ON (
    t.productid = tags.productid
  )
SET
  t.transport = tags.tagname
WHERE
  tags.tagname IN ('авто', 'пешеход')

SQL Fiddle


А если вам не нужен UPDATE, а нужен обычный SELECT, так это вообще просто

SELECT
  t.productid,
  t.tagname,
  tags.tagname AS transport
FROM
  mytable tags
  JOIN mytable t ON (
    t.productid = tags.productid
  )
WHERE
  tags.tagname IN ('авто', 'пешеход')

SQL Fiddle






2







Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации


Почта

Необходима, но никому не показывается




Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки


Ошибка 404 — Not Found


Похоже, что кто-то взял эту страницу и не вернул назад. Испытайте удачу на новой. Список чуть ниже.

It looks like somebody took this page away and did not put it back.

  • IT
    PC

    • Система компьютерной вёрстки LaTeX

      • Самоучитель LaTeX

      • Символы LaTeX

      • LaTeX → HTML

      • WinEdt
      • MikTex
      • Видеоуроки LaTeX
      • Титульный лист LaTeX

    • Операционные системы Линукс

      • Debian FAQ
      • Debian
      • Дневник — первый опыт с Debian
      • Memory stick в Debian
      • Configure Make Install

      • Настройка сети в Linux

      • Системная переменная PATH Linux

      • Virtualbox

      • Bash

        • Bash Scripting

      • Ubuntu

      • CentOS

    • DEVOPS

      • AWS

      • Git

      • Docker

      • Virtulabox

        • Уставновка виртуальной Windows 7 с помощью Virtulabox в Debian

    • Операционная система OpenBSD

    • Программы, за которые не нужно платить

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

      • Язык программирования Си
      • Язык программирования Си++
      • Java Script
      • Язык программирования Python

        • Python: сложности, нюансы, детали.

        • PIP

      • Язык программирования Ruby
      • Язык программирования PHP

        • Как отобразить время различных часовых поясов PHP

        • Как вставить переменную в ссылку PHP

        • json_decode PHP

        • Как определить ширину экрана PHP

        • Premature end of chunk coded message body: closing chunk expected

    • Web

      • Язык разметки HTML
      • CMS Joomla
      • Браузер Mozilla Firefox
      • Переадресация внутри сайта
    • IT Helpdesk

      • Заметки о BAT файлах
      • Доступ по RDP через SSH туннель
      • Grep
      • Sed
      • Awk
      • Заметки о системном администрировании
      • Режим разработчика в Windows 10
      • Использование Bash в Windows 10
      • Запись установочного образа на флешку с помощью UltraISO
      • Firewall Windows
    • Microsoft Office

      • Microsoft Excel

        • Цветной выпадающий список

        • Всё пропало

      • Microsoft Word

    • Как создать репозиторий с помощью TortoiseSVN
    • Тестирование ПО
      • Jira
      • Учебник
      • Тестирвоание API
      • SOAP UI
      • Clumsy 0. 2
      • Postman
      • Тестирование с Python
      • Cherry Picking
  • Образование
    • Физика
      • Физика 6 класс
      • Физика 7 класс
      • Физика 8 класс
      • Физика 9 класс
      • Физика ГИА
      • Физика 10 класс
      • Физика 11 класс
      • Физика ЕГЭ
      • Прикладная оптика
      • Микроэлектроника
      • Оптоэлектроника
      • Оптическая спектроскопия
      • Антенны
    • Математика
    • Ядерная физика
      • Заметки о ядерной физике
        • Ядерные уровни
        • Эффективное поперечное сечение
        • Деление ядер
        • Распределение энергии деления 235U тепловыми нейтронами между продуктами.
        • Классификация частиц
        • Видеоматериалы
      • Кафедра ядерной физики СПбГУ
        • Конспекты и прочее
        • Основные свойства атомных ядер
        • Ядерные силы
        • Электронные методы
        • Вторичное квантование
        • Теория групп
        • Резонансное рассеяние гамма-лучей
        • Ядерные реакции
        • Кварковая структура адронов
        • Основы дозиметрии
        • Экзотические ядра
        • Внутренняя конверсия
        • Слабые и электромагнитные процессы
        • Прямые ядерные реакции
        • Квантовая хромодинамика
        • Нейтронные резонансы и нейтронная оптика
        • Тяжёлые ионы
    • Атомная энергетика
      • Список принятых в ядерной энергетике сокращений
      • ВВЭР
    • Физический факультет СПбГУ
      • Численные методы
      • Болонский процесс
      • Жизнь студентов — покупательная способность стипендии
      • ПУНК глазами немцев
      • Впечатления Максима Николаевича
      • Максим Николаевич о Физ-факе
    • Теорвер
      • Задачи по теорверу
    • Английския язык

      • Вводные предложения в английском языке
    • Литература
      • Эрих Мария Ремарк. В каком порядке читать
      • Эрих Мария Ремарк. Фильмы
      • Эрих Мария Ремарк. Аудиокниги
      • Кормак МакКарти
      • Анджей Сапковский. Ведьмак
      • Бокононизм
  • Физкультура, спорт, здоровье
    • Баскетбол
      • Баскетбольный клуб Спартак Санкт-Петербург
        • Видео
          • 2013 Осень
          • 2013 Весна
          • 2012 Осень
          • 2012 Весна
          • 2011 Осень
          • 2011 Весна
          • 2010 Весна
          • 2009 Осень
          • 2009 Весна
          • 2008 Осень
          • 2000 — 2005
          • 90-е
        • Bisons — Спартак (6 ноября 2013)
      • Физическая подготовка
      • Техника
    • Здоровый образ жизни
  • Разное
    • Инновационный центр СПбГУ
    • Поликлиника в ПГТ им. Морозова
    • Навальный и Носик считают деньги
    • Карта сайта
    • RFID
      • RFID Основы
      • RFID тэги
      • RFID Компании
      • Online инструменты
      • RFID словарь
  • Реклама
  • Блог
    • Varis
  • Другие проекты
    • HeiHei.ru
    • TopBicycle.ru
  • Mузыка
    • Музыка
    • Maruv
    • Холстинин
    • Ежемесячные
    • Лук, лучок
    • Валентин Дядька
    • Бутер Бродский
  • Поиск по сайту

  • aofeed — Telegram канал чтобы следить за выходом новых статей
  • aofeedchat — задать вопрос в Телеграм-группе
Контакты и сотрудничество:
Рекомендую наш хостинг beget. ru
Пишите на
[email protected] если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели
рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок
или вводящий в заблуждение — пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д.

…….
5. Статьи можно расшарить в соцсетях, нажав на иконку сети:

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

Система базы данных MySQL — это высокомасштабируемая служба базы данных для создания облачных приложений. Поэтому мы должны выполнять различные операции, работая над ним. Объявление ALTER TABLE используется для добавления, удаления или изменения столбцов при работе с уже существующей таблицей в любой схеме MySQL. В этом руководстве мы научим вас, как именно объявить столбец в существующей таблице, используя выражение MySQL ADD COLUMN.

Синтаксис:

>> ALTER TABLE имя_таблицы ADD новое_имя_столбца определение_столбца [FIRST | ПОСЛЕ имя_столбца];

Вот детали этого запроса:

  • Table_name : это существующая таблица, которую вы хотите изменить или добавить новый столбец.
  • New_column_name : заголовок для добавляемого нового столбца.
  • Column_definition : Это тип данных нового столбца и его определение, например, Null, Not Null.
  • ПЕРВЫЙ | ПОСЛЕ имя_столбца : В этом предложении указывается расположение нового столбца в таблице. Это необязательно; поэтому, если он не используется, столбец будет имплантирован в конец таблицы.

Добавить столбец через MySQL Workbench

Откройте только что установленную рабочую среду MySQL с помощью кнопки «Пуск» на рабочем столе. Убедитесь, что ваше рабочее место подключено к базе данных.

В панели навигации рабочей среды под схемой вы можете найти уже созданные базы данных. Мы создали базу данных «данные» и добавили в нее таблицу «студент». Таблица «студент» имеет следующие столбцы и записи.

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

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

Из изображения ниже видно, что мы добавили новый столбец «возраст» в последний из всех столбцов с определенным определением.

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

Окно будет открыто. Нажмите «Готово», чтобы увидеть изменения.

Ниже прилагается реструктурированная таблица.

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

Добавить столбец через оболочку командной строки

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

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

>> SELECT * FROM data.student ORDER BY id;

Пример 01: Добавить один столбец

Если вы хотите добавить один столбец в существующую таблицу, то этот пример предназначен для вас. Теперь мы добавим новый столбец с именем «возраст» на последнем месте таблицы «студент». Чтобы добавить новый столбец «возраст» после столбца «класс», попробуйте выполнить приведенный ниже запрос в оболочке командной строки MySQL.

>> ALTER TABLE data.student ADD age VARCHAR(20) NOT NULL AFTER class;

При проверке таблицы вы увидите, что таблица создала новый пустой столбец «возраст» на последнем месте, как показано на рисунке.

>> SELECT * FROM data.student ORDER BY id;

Мы будем обновлять таблицу, добавляя значения во вновь созданный столбец «возраст». Мы попробовали выполнить три запроса UPDATE ниже, чтобы добавить значения в столбец «возраст».

>> ОБНОВИТЬ data. student SET age= ‘25’ ГДЕ id > 0 и id < 3;

>> ОБНОВИТЬ data.student SET age= ‘17’ WHERE id > 3;

>> ОБНОВИТЬ data.student SET age= ‘18’ WHERE id = 3;

Давайте проверим обновленную таблицу «student», используя приведенный ниже запрос SELECT в оболочке:

>> SELECT * FROM data.student ORDER BY id;

Теперь у нас есть полностью обновленная таблица, как показано ниже.

Пример 02: Добавить несколько столбцов

Вы также можете добавить несколько столбцов в разных местах существующей таблицы, используя запрос ALTER. Давайте попробуем выполнить приведенный ниже запрос, чтобы добавить два новых столбца, например, пол и город, в последний из всех столбцов таблицы «студент». Мы использовали два предложения ADD в этом запросе, чтобы добавить два столбца.

>> ИЗМЕНИТЬ ТАБЛИЦУ data.student ДОБАВИТЬ СТОЛБЦУ пол VARCHAR(20) НЕ НУЛЕВОЕ ПОСЛЕ возраста, ДОБАВИТЬ СТОЛБЦУ город VARCHAR(20) НЕ НУЛЕВОЕ ПОСЛЕ пола;

Вы найдете обновленную таблицу ниже, проверив ее с помощью запроса SELECT в оболочке. Вы обнаружите, что таблица создала два новых столбца без каких-либо значений.

>> SELECT * FROM data.student ORDER BY id;

Чтобы новые столбцы не были пустыми, мы будем добавлять значения в новые столбцы, например, пол и город. Мы попробовали выполнить три запроса UPDATE ниже, чтобы добавить значения в столбцы «пол» и «город». Прежде всего, мы обновили столбец «пол», используя следующий запрос:

>> ОБНОВИТЬ data.student УСТАНОВИТЬ пол = «Женщина», ГДЕ id < 6;

После этого мы обновили столбец «город» с помощью следующих двух команд UPDATE:

>> UPDATE data.student SET city = «Исламабад» WHERE id < 3;

>> ОБНОВИТЬ data.student SET city = «Равалпинди», ГДЕ id> 2;

Давайте проверим обновленную таблицу «student», используя приведенный ниже запрос SELECT в оболочке командной строки:

>> SELECT * FROM data.student ORDER BY id;

Наконец, мы получили заново реструктурированную таблицу, как показано ниже.

Заключение

Отлично! Мы эффективно испробовали все запросы на добавление одного столбца или нескольких столбцов в существующую таблицу, работая в рабочей среде MySQL и клиентской оболочке командной строки.

MySQL ALTER TABLE Добавить столбец

В MySQL команда ALTER TABLE используется для изменения имени таблицы или переименования одного или нескольких столбцов таблицы, добавления новых столбцов, удаления существующих, изменения типа данных, длины, индекс одного или нескольких столбцов, а также мы можем переименовать имя таблицы. Эта команда чаще всего используется с операторами ADD, DROP и MODIFY в зависимости от операции, которую вы хотите выполнить для таблицы, ее столбцов или индексов. Мы даже можем изменить последовательность столбцов в таблице с помощью команды ALTER TABLE. В этой статье мы изучим синтаксис и использование оператора команды ALTER TABLE для добавления столбца в таблицу с помощью примеров.

Оператор ALTER TABLE с командой ADD –

Мы можем добавить один или несколько столбцов в существующую таблицу, используя оператор ALTER TABLE с командой ADD. Синтаксис добавления столбцов с помощью оператора ALTER следующий:

ALTER TABLE name_of_table
ADD name_of_new_column details_of_column
[ FIRST | ПОСЛЕ имя_существующего_столбца];

  • name_of_table — это имя существующей таблицы, в которую мы хотим добавить новый столбец с помощью запроса ALTER.
  • name_of_new_column — это имя нового столбца, который мы добавляем в таблицу.
  • details_of_column — Это помогает указать детали и определение нового добавляемого столбца, включая тип данных столбца и другие детали, такие как NULL или NOT NULL, UNIQUE и т. д.
  • name_of_existing_column — Мы можем указать позицию добавляемого столбца относительно существующей позиции столбцов в таблице с именем name_of_table, используя ключевые слова FIRST и AFTER. FIRST означает, что новый столбец будет помещен в начало, а AFTER означает положение нового столбца после именованного столбца name_of_existing_column в таблице. Позиция по умолчанию, в которой добавляется новый столбец, — последняя.

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

Рассмотрим одну таблицу с именем educab_writers table, которая описывается следующим образом, когда мы используем

DESC educba_writers;

команда:

Теперь мы хотим добавить два столбца с именами rate и joining_date в таблицу educba_writers с помощью команды ALTER TABLE. Тип данных rate будет десятичным с точностью и масштабом (5,2), а тип данных joining_date должен быть DATE. Мы можем написать запрос ALTER TABLE с оператором ADD, чтобы добавить два столбца следующим образом —

ALTER TABLE educba_writers
ДОБАВИТЬ ставку DECIMAL(5,2),
ДОБАВИТЬ joining_date DATE;

Выполнение приведенного выше оператора запроса дает следующий вывод в командной строке –

Давайте еще раз опишем таблицу educba_writers, чтобы проверить, успешно ли добавлены наши столбцы, используя следующий оператор запроса –

DESC educba_writers;

, который дает следующий вывод —

. Давайте извлечем записи в таблице educab_writers и посмотрим значение для добавленных столбцов для существующих записей —

выберите * из educba_writers;

, что дает следующий вывод –

Все значения столбца имеют значение по умолчанию как NULL.

Значение по умолчанию вновь добавленных столбцов зависит от значения режима SQL. Это значение можно проверить, выполнив следующий запрос —

SELECT @@GLOBAL.sql_mode;

, который дает следующий вывод на моем сервере базы данных командной строки, который используется выше —

Пример использования клиентского инструмента SQLYog

Рассмотрим существующую таблицу с именем Developers. После выполнения следующей команды SELECT —

SELECT * FROM `developers`;

это дает следующий вывод —

Теперь мы хотим добавить еще один столбец с именем experience, который имеет целочисленный тип данных, поскольку он будет хранить значение в годах. Для этого мы можем использовать оператор ALTER TABLE с командой ADD, и запрос будет примерно таким —

ALTER TABLE разработчики
ДОБАВИТЬ опыт INTEGER NOT NULL DEFAULT 0;

выполнение вышеуказанного запроса даст следующий результат –

Давайте проверим записи, выбрав его с помощью этого запроса –

SELECT * FROM `developers`;

, что дает следующий вывод –

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

Мы даже можем добавить несколько столбцов в один оператор запроса. Предположим, мы хотим добавить еще три столбца с именами joiningDate, age и address. Мы можем сделать это, выполнив следующую команду ALTER TABLE —

ИЗМЕНИТЬ ТАБЛИЦУ разработчиков
ДОБАВИТЬ joiningDate
ДАТУ ПЕРВОГО,
ДОБАВИТЬ возраст INT NOT NULL
ПОСЛЕ ИМЯ,
ДОБАВИТЬ адрес VARCHAR(100) NOT NULL
ПОСЛЕ опыта;

, который дает следующий вывод –

Теперь давайте извлечем записи из таблицы разработчиков, чтобы просмотреть наши изменения, выполнив следующий запрос на выборку –

SELECT * FROM `developers`;

, что дает следующий результат –

Как мы видим, все новые столбцы добавляются в соответствующие позиции, которые мы упомянули, и инициализируются значением по умолчанию в зависимости от их типа данных. Значение по умолчанию для столбца целочисленного типа данных равно 0, varchar, т.е. строка «» пуста, а для даты — NULL. Значение по умолчанию вновь добавленных столбцов зависит от значения режима SQL. Это значение можно проверить, выполнив следующий запрос —

SELECT @@GLOBAL.sql_mode;

, который дает следующий вывод на моем удаленном сервере, для которого мы используем клиентский инструмент с именем SQL yog, который используется выше —

Заключение: MySQL ALTER TABLE Добавить столбец

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

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