Когда кто-то создает таблицу в базе данных, обычно структура таблицы должна быть легко читаемой для любого, но в зависимости от опыта разработчика может быть хаотично работать с ней из-за сложного умственного отображения. Представьте себе таблицу, где столбец, а именно is_default
чьи возможные значения 1 или 0 (истина или ложь), например, следующая таблица human_values
:
1 | честность | 1 |
2 | толерантность | 1 |
3 | терпение | 1 |
4 | ненависть |
В этом случае человек должно быть честный, терпимый и терпеливый, обычно не должен никого ненавидеть. Ну, это еще не проблема, так как вы можете понять таблицу, если кто-то не решит изменить логику формы вместо is_default
в is_optional
, Значения is_optional
столбец все еще с тем же значением старого is_default
номенклатура. Все значения теперь в столбце будут неправильными, поскольку они не соответствуют новой номенклатуре. Логика была бы теперь обратной:
1 | честность | 1 |
2 | толерантность | 1 |
3 | терпение | 1 |
4 | ненависть |
По таблице сейчас человек не должен быть честный, терпимый или терпеливый и должен ненавидеть. Чтобы решить эту проблему, вы можете легко использовать запрос, который инвертирует значение столбцов, например, чтобы перевернуть все is_optional
значения столбца каждой строки human_values
Таблица, вы можете использовать следующий синтаксис запроса:
/** Invert all the values of the specified column **/
UPDATE tableName
SET `your_boolean_or_tiny_int_field` = NOT `your_boolean_or_tiny_int_field`
Чтобы изменить значения строк, мы будем использовать UPDATE
утверждение, указывающее, что конкретная таблица должна быть изменена. Затем используйте SET
оператор для определения нового значения поля, присваивающего то же значение, но с добавлением NOT
состояние. NOT
является условием для отмены, в этом случае это помогает инвертировать текущее значение столбца, например, 0 теперь будет 1, а 1 будет 0.
Для нашего стола human_values
запрос должен выглядеть так:
/** Invert all the values of the is_optional column **/
UPDATE human_values
SET `is_optional` = NOT `is_optional`
Выполнение предыдущего запроса обновит все 4 строки нашей таблицы и оставит следующую структуру:
1 | честность | |
2 | толерантность | |
3 | терпение | |
4 | ненависть | 1 |
Как видите, все нули были преобразованы в единицы и наоборот. Помните, что пример запроса изменяет все строки, вы можете добавить операторы WHERE, чтобы ограничить измененные строки в соответствии с вашими потребностями.