Sql удалить столбец из таблицы: Как удалить столбец из таблицы на SQL в Microsoft SQL Server | Info-Comp.ru

MySQL удаляет столбец из существующей таблицы

Инфраструктура базы данных MySQL — это действительно полностью управляемая служба базы данных для создания облачных приложений. Бывают разные случаи, когда мы выполняем разные запросы или команды для изменения базы данных. В зависимости от случая, выражение ALTER часто включается в команды «ADD», «Delete / DROP» и «MODIFY». Из этого учебного руководства вы узнаете, как удалить столбец из существующей таблицы с помощью предложения MySQL DROP COLUMN.

Синтаксис

>>ИЗМЕНИТЬТАБЛИЦА table_name УРОНИТЬСТОЛБЕЦ exisiting_column_name;

Давайте рассмотрим приведенный выше синтаксис этого запроса:

  • Table_name: — это заголовок существующей таблицы, которую вы хотите изменить.
  • имя_существующего_столбца: имя удаляемого столбца.

Примечание. Вы можете удалить более одного столбца. Для этого вы должны использовать в своем запросе более одного предложения DROP COlUMN.

Отбросить столбец через MySQL Workbench

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

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

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

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

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

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

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

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

>>ИЗМЕНИТЬТАБЛИЦАданные.студент УРОНИТЬСТОЛБЕЦ возраст;

Новая измененная таблица без столбца «возраст» показана ниже.

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

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

Предположим, у нас есть таблица «student» с некоторой записью в ней, находящейся в схеме «data». При проверке мы обнаружили указанную ниже запись в таблице «студент». Сейчас в этой таблице, вероятно, 9 столбцов.

>>ВЫБРАТЬ*ИЗданные.студент СОРТИРОВАТЬ ПО я бы;

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

Если вы ищете пример удаления одного столбца из существующей таблицы, то этот пример действительно для вас. Учитывая ту же таблицу выше, давайте удалим из нее столбец с именем «фамилия». После этого у нас должно остаться 8 столбцов. Попробуйте выполнить приведенный ниже запрос в клиентской оболочке командной строки MySQL. Если запрос работает правильно, он отобразит сообщение, что запрос «ОК».

>>ИЗМЕНИТЬТАБЛИЦАданные.студент УРОНИТЬСТОЛБЕЦ фамилия;

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

>>ВЫБРАТЬ*ИЗданные.студент СОРТИРОВАТЬ ПО я бы;

Приведенный ниже вывод показывает, что у нас осталось только 8 столбцов, а столбец «lastname» и его значения были успешно удалены из таблицы «student».

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

Пример 02: Отбросить более одного столбца

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

>>ИЗМЕНИТЬТАБЛИЦАданные. студент УРОНИТЬСТОЛБЕЦ Пол,УРОНИТЬСТОЛБЕЦ reg_date;

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

>>ВЫБРАТЬ*ИЗданные.студент СОРТИРОВАТЬ ПО я бы;

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

Вывод

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

alter-table-stmt:скрыть column-def:показать column-constraint:показать conflict-clause:показать expr:показать filter-clause:показать over-clause:показать frame-spec:показать

1.

Overview

alter-table-stmt:

column-def:

column-constraint:

conflict-clause:

expr:

filter-clause:

over-clause:

frame-spec:

ordering-term:

raise-function:

select-stmt:

common-table-expression:

compound-operator:

join-clause:

join-constraint:

join-operator:

ordering-term:

result-column:

table-or-subquery:

window-defn:

frame-spec:

foreign-key-clause:

literal-value:

signed-number:

type-name:

signed-number:

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

2. ALTER TABLE RENAME

Синтаксис RENAME TO изменяет имя таблицы на новое имя таблицы.Данная команда не может быть использована для перемещения таблицы между подключенными БД,а только для переименования таблицы внутри одной и той же БД.Если переименовываемая таблица имеет триггеры или индексы,то после переименования они остаются прикрепленными к таблице.

 Compatibility Note: The behavior of ALTER TABLE when renaming a table was enhanced in versions 3.25.0 (2018-09-15) and 3.26.0 (2018-12-01) in order to carry the rename operation forward into triggers and views that reference the renamed table. This is considered an improvement. Applications that depend on the older (and arguably buggy) behavior can use the PRAGMA legacy_alter_table=ON statement or the SQLITE_DBCONFIG_LEGACY_ALTER_TABLE configuration parameter on sqlite3_db_config() interface to make ALTER TABLE RENAME behave as it did prior to version 3.25.0. 

Начиная с версии 3.25.0 (2018-09-15),ссылки на таблицу в телах триггеров и определения представлений также переименовываются.

До версии 3.26.0 (2018-12-01) ссылки FOREIGN KEY на переименованную таблицу редактировались только в том случае, если PRAGMA foreign_keys = ON , или, другими словами, если применялись ограничения внешнего ключа . Если PRAGMA foreign_keys = OFF , ограничения FOREIGN KEY не будут изменены при переименовании таблицы, на которую ссылается внешний ключ (« родительская таблица »). Начиная с версии 3.26.0, ограничения FOREIGN KEY всегда преобразуются при переименовании таблицы, если не задействован параметр PRAGMA legacy_alter_table = ON . В следующей таблице приведены различия:

PRAGMA foreign_keysPRAGMA legacy_alter_table Ссылки на родительские таблицы обновленыSQLite version
OffOffNo< 3.26.0
OffOffYes>= 3.26.0
OnOffYesall
OffOnNoall
OnOnYesall
3.

ИЗМЕНИТЬ ТАБЛИЦУ ПЕРЕИМЕНОВАТЬ СТОЛБЕЦ

Синтаксис RENAME COLUMN TO изменяет название столбца таблицы на новое название столбца.Имя столбца изменяется как внутри самого определения таблицы,так и внутри всех индексов,триггеров и представлений,на которые ссылается столбец.Если изменение имени столбца приведет к семантической неоднозначности в триггере или представлении,то ОГРАНИЧЕНИЕ РЕМЕНА не удается с ошибкой и никакие изменения не применяются.

4.ИЗМЕНИТЬ ТАБЛИЦУ ДОБАВИТЬ СТОЛБЕЦ

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

  • Столбец может не иметь ограничения PRIMARY KEY или UNIQUE.
  • Столбец может не иметь значения по умолчанию CURRENT_TIME,CURRENT_DATE,CURRENT_TIMESTAMP или выражения в круглых скобках.
  • Если указано ограничение NOT NULL,то столбец должен иметь значение по умолчанию,отличное от NULL.
  • Если ограничения внешнего ключа являются включены и столбцом с пунктом ЛИТЕРАТУРЫ добавляются столбец должен иметь значение по умолчанию NULL.
  • Столбец не может СОЗДАТЬ ВСЕГДА … ХРАНИТЬ , хотя ВИРТУАЛЬНЫЕ столбцы разрешены.

При добавлении столбца с ограничением CHECK или ограничением NOT NULL в сгенерированном столбце добавленные ограничения проверяются на соответствие всем ранее существовавшим строкам в таблице, и ADD COLUMN завершается сбоем, если какое-либо ограничение не выполняется. Тестирование добавленных ограничений на ранее существовавшие строки — это новое усовершенствование SQLite версии 3.37.0 (27 ноября 2021 г.).

Команда ALTER TABLE работает путем изменения текста SQL схемы, хранящейся в таблице sqlite_schema . В содержимое таблицы не вносятся изменения для переименования или добавления столбцов без ограничений. Из-за этого время выполнения таких команд ALTER TABLE не зависит от количества данных в таблице, и такие команды будут выполняться так же быстро для таблицы с 10 миллионами строк, как и для таблицы с 1 строкой. При добавлении новых столбцов с ограничениями CHECK, или добавлении сгенерированных столбцов с ограничениями NOT NULL, или при удалении столбцов все существующие данные в таблице должны быть либо прочитаны (чтобы проверить новые ограничения на существующие строки), либо записаны (чтобы удалить удаленные столбцы). ). В этих случаях команда ALTER TABLE требует времени, пропорционального объему изменяемого содержимого таблицы.

После запуска ADD COLUMN на базе данных,эта база данных не будет читаться SQLite версии 3.1.3 (2005-02-20)и более ранней.

5. ALTER TABLE DROP COLUMN

Синтаксис DROP COLUMN используется для удаления существующего столбца из таблицы.Команда DROP COLUMN удаляет именованный столбец из таблицы и переписывает его содержимое,чтобы очистить данные,связанные с этим столбцом.Команда DROP COLUMN работает только в том случае,если на столбец не ссылаются другие части схемы,он не является PRIMARY KEY и не имеет ограничения UNIQUE.Возможные причины,по которым команда DROP COLUMN может не сработать,включают:

  • Столбец является PRIMARY KEY или его частью.
  • Столбец имеет ограничение UNIQUE.
  • Колонка индексируется.
  • Столбец назван в предложении WHERE частичного индекса .
  • Столбец назван в таблице или ограничении CHECK столбца, не связанном с удаляемым столбцом.
  • Столбец используется в ограничении внешнего ключа .
  • Столбец используется в выражении сгенерированного столбца .
  • Колонка появляется в триггере или представлении.
5.1.Как это работает

SQLite хранит схему в виде простого текста в таблице sqlite_schema . Команда DROP COLUMN (а также все другие варианты ALTER TABLE) изменяют этот текст, а затем пытаются повторно проанализировать всю схему. Команда будет успешной только в том случае, если схема все еще действительна после изменения текста. В случае команды DROP COLUMN единственный измененный текст состоит в том, что определение столбца удаляется из оператора CREATE TABLE. Команда DROP COLUMN завершится ошибкой, если есть какие-либо следы столбца в других частях схемы, которые препятствуют синтаксическому анализу схемы после изменения оператора CREATE TABLE.

6.Отключение проверки ошибок с помощью PRAGMA writable_schema=ON

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

Начиная с SQLite 3.38.0 (22 февраля 2022 г.), эту проверку ошибок можно отключить, установив « PRAGMA writable_schema=ON; ». Когда схема доступна для записи, ALTER TABLE молча игнорирует все строки таблицы sqlite_schema, которые не анализируются.

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

Единственные команды изменения схемы, напрямую поддерживаемые SQLite, — это команды « переименовать таблицу », « переименовать столбец », « добавить столбец », « отбросить столбец », показанные выше. Однако приложения могут вносить другие произвольные изменения в формат таблицы, используя простую последовательность операций. Шаги по внесению произвольных изменений в схему некоторой таблицы X следующие:

  1. Если ограничения внешнего ключа включены, отключите их с помощью PRAGMA foreign_keys = OFF .

  2. Начать сделку.

  3. Запомните формат всех индексов,триггеров и представлений,связанных с таблицей X.Эта информация понадобится на шаге 8 ниже.Один из способов сделать это-выполнить запрос,подобный следующему:SELECT type,sql FROM sqlite_schema WHERE tbl_name=’X’.

  4. Используйте CREATE TABLE для создания новой таблицы «new_X», которая находится в желаемом измененном формате таблицы X. Конечно, убедитесь, что имя «new_X» не конфликтует с каким-либо существующим именем таблицы.

  5. Перенесите содержимое из X в new_X,используя оператор like:INSERT INTO new_X SELECT …FROM X.

  6. Отбросьте старые таблицы X: DROP TABLE X .

  7. Измените имя new_X на X:ALTER ТАБЛИЦА new_X RENAME TO X.

  8. Используйте CREATE INDEX , CREATE TRIGGER и CREATE VIEW для восстановления индексов, триггеров и представлений, связанных с таблицей X. Возможно, используйте старый формат триггеров, индексов и представлений, сохраненных с шага 3 выше, в качестве руководства, внося необходимые изменения для переделка.

  9. Если какие-либо представления ссылаются на таблицу X способом, на который влияет изменение схемы, отбросьте эти представления с помощью DROP VIEW и воссоздайте их с любыми изменениями, необходимыми для адаптации к изменению схемы с помощью CREATE VIEW .

  10. Если ограничения внешнего ключа были изначально включены, запустите PRAGMA foreign_key_check, чтобы убедиться, что изменение схемы не нарушило никаких ограничений внешнего ключа.

  11. Совершение сделки начинается на шаге 2.

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

Осторожно: Обязательно соблюдайте описанную выше процедуру. В блоках ниже приведены две процедуры изменения определения таблицы. На первый взгляд кажется, что они оба достигают одного и того же. Однако процедура справа не всегда работает, особенно с расширенными возможностями таблицы переименования , добавленными в версиях 3.25.0 и 3.26.0. В процедуре справа первоначальное переименование таблицы во временное имя может привести к повреждению ссылок на эту таблицу в триггерах, представлениях и ограничениях внешнего ключа. Безопасная процедура слева создает измененное определение таблицы, используя новое временное имя, затем переименовывает таблицу в ее окончательное имя, которое не разрывает связи.

  1. Создать новый стол
  2. Copy data
  3. Брось старый стол
  4. Переименовать новое в старое
  1. Переименовать старый стол
  2. Создать новый стол
  3. Copy data
  4. Брось старый стол

Correct

Incorrect

Обобщенная 12-шаговая процедура ALTER TABLE, описанная выше, будет работать, даже если изменение схемы приведет к изменению информации, хранящейся в таблице. Таким образом, описанная выше полная 12-шаговая процедура подходит для удаления столбца, изменения порядка столбцов, добавления или удаления ограничения UNIQUE или PRIMARY KEY, добавления ограничений CHECK, FOREIGN KEY или NOT NULL или изменения типа данных для столбца для пример. Однако для некоторых изменений, которые никоим образом не влияют на содержимое на диске, может быть использована более простая и быстрая процедура. Следующая более простая процедура подходит для удаления ограничений CHECK, FOREIGN KEY или NOT NULL, а также для добавления, удаления или изменения значений по умолчанию в столбце.

  1. Начать сделку.

  2. Запустите PRAGMA schema_version, чтобы определить текущий номер версии схемы. Этот номер понадобится для выполнения шага 6 ниже.

  3. Активируйте редактирование схемы с помощью PRAGMAwritable_schema = ON .

  4. Запустите оператор UPDATE, чтобы изменить определение таблицы X в таблице sqlite_schema : UPDATE sqlite_schema SET sql = . .. WHERE type = ‘table’ AND name = ‘X’;

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

  5. Если изменение в таблице X также влияет на другие таблицы или индексы, или триггеры являются представлениями в схеме, запустите операторы UPDATE, чтобы также изменить индексы и представления этих других таблиц. Например, если имя столбца изменяется, необходимо изменить все ограничения FOREIGN KEY, триггеры, индексы и представления, которые ссылаются на этот столбец.

    Внимание: еще раз, внесение изменений в таблицу sqlite_schema, подобными этой, приведет к повреждению базы данных и ее нечитаемости, если изменение содержит ошибку. Тщательно протестируйте всю эту процедуру на отдельной тестовой базе данных, прежде чем использовать ее в базе данных, содержащей важные данные, и / или сделайте резервные копии важных баз данных перед запуском этой процедуры.

  6. Увеличьте номер версии схемы, используя PRAGMA schema_version = X, где X на единицу больше, чем номер версии старой схемы, найденный на шаге 2 выше.

  7. Отключите редактирование схемы с помощью PRAGMAwritable_schema = OFF .

  8. (Необязательно) Запустите PRAGMA Integrity_check, чтобы убедиться, что изменения схемы не повредили базу данных.

  9. Совершите сделку,начатую на шаге 1 выше.

Если в какой-нибудь из будущих версий SQLite будут добавлены новые возможности ALTER TABLE,то эти возможности,скорее всего,будут использовать одну из двух процедур,описанных выше.

Большинство движков баз данных SQL хранят уже разобранную схему в различных системных таблицах.На этих двигателях БД ALTER TABLE приходится лишь вносить изменения в соответствующие системные таблицы.

SQLite отличается тем, что сохраняет схему в таблице sqlite_schema как исходный текст операторов CREATE, которые определяют схему. Следовательно, ALTER TABLE необходимо изменить текст оператора CREATE. Это может быть непросто для некоторых «креативных» схем.

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

Хранение схемы в виде текста,а не в виде разобранных таблиц,также придает гибкость реализации.Так как внутренний анализ схемы восстанавливается каждый раз при открытии БД,внутреннее представление схемы может меняться от одного выпуска к другому.Это важно,так как иногда новые функции требуют усовершенствования внутреннего представления схемы.Изменение внутреннего представления схемы было бы гораздо сложнее,если бы оно было открыто в файле базы данных. Другими словами,хранение схемы в виде текста помогает поддерживать обратную совместимость,а также обеспечивает возможность чтения и записи старых файлов БД более новыми версиями SQLite.

Сохранение схемы в виде текста также упрощает определение, документирование и понимание формата файла базы данных SQLite . Это помогает сделать файлы базы данных SQLite рекомендуемым форматом хранения для долгосрочного архивирования данных.

Недостатком хранения схемы в тексте является то,что это может сделать схему хитрой для изменения.И по этой причине поддержка ALTER TABLE в SQLite традиционно отстает от других движков БД SQL,которые хранят свои схемы в виде разобранных системных таблиц,которые легче модифицировать.




SQLite

3.40



  • SQL как понимается SQLite


    SQLite понимает большинство стандартных языков.




  • Встроенные агрегатные функции


    aggregate-function-invocation: hide expr: show literal-value: show over-clause: show frame-spec: show ordering-term: show raise-function: show select-stmt:




  • ANALYZE


    analyze-stmt:hide Команда ANALYZE собирает статистику об индексах таблиц и хранит собранную информацию внутри базы данных,где оптимизатор запросов




  • ATTACH DATABASE


    attach-stmt: hide expr: show filter-clause: show literal-value: show over-clause: show frame-spec: show ordering-term: show raise-function: show select-stmt:




  • 1



  • 350


  • 351


  • 352


  • 353


  • 354



  • 600


  • Next

sql server — удалить столбец из результата запроса (SQL)

спросил

Изменено
8 лет, 9 месяцев назад

Просмотрено
8к раз

Я использую следующий запрос SQL:

Запрос

 С selectRow AS
(
    ВЫБЕРИТЕ *, строка = НОМЕР_СТРОКИ() ВЕРНУТЬСЯ
    (
        ЗАКАЗАТЬ ПО (ВЫБЕРИТЕ 1)
    ) ИЗ моей таблицы
 )
 ВЫБЕРИТЕ * ОТ selectRow
 ГДЕ строка МЕЖДУ 1 И 10;
 

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

  • sql
  • sql-сервер

7

 С selectRow AS
(
    ВЫБЕРИТЕ *, строка = НОМЕР_СТРОКИ() ВЕРНУТЬСЯ
    (
        ЗАКАЗАТЬ ПО (ВЫБЕРИТЕ 1)
    ) ИЗ моей таблицы
 )
 ВЫБЕРИТЕ имена столбцов ИЗ selectRow
 ГДЕ строка МЕЖДУ 1 И 10;
 

Примечание. Используйте column_names=имена столбцов, какие бы вам ни потребовались.

Я вижу, что функция ROW_NUMBER() здесь не нужна, потому что вы используете over (выберите 1), что ничего не значит.
Вместо этого вы можете использовать приведенное ниже, просто используя «TOP n»

, выберите 10 лучших * из myTable.
 

Если вам нужен диапазон:

Тогда я вижу, как использовать NOT IN:

 выбрать 10 лучших * из myTable
где идентификатор отсутствует (выберите 20 лучших идентификаторов из mytable)
 

Если у вас есть SQL Server 2012, вы можете использовать «смещение»

 выберите * из myTable
     заказать по идентификатору
     смещение 10 строк
     получить только следующие 20 строк
 

6

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

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

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

Удаление столбцов в MS SQL Server

спросил

Изменено
2 года, 3 месяца назад

Просмотрено
74к раз

Как удалить столбец из существующей таблицы?

  • sql-сервер
  • sql-сервер-2005

3

Искомая команда:

 alter table tblName drop column columnName
 

, где tblName — это имя таблицы, а columnName — это имя столбца, но сначала вам может понадобиться сделать несколько вещей.

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

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

Один из более поздних выпусков Oracle фактически имеет обратимое удаление, которое может просто пометить столбец как неиспользуемый, не удаляя его физически. Это имеет тот же эффект, так как вы больше не можете ссылаться на него, и есть команда по строкам alter table ... удалить неиспользуемые столбцы , которая предназначена для запуска в спокойное время, что делает тяжелую работу по ее физическому удалению. .

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

ALTER TABLE XXX DROP COLUMN YYY;

Это также можно сделать с помощью графического интерфейса SSMS.

Мне нравится этот метод, потому что он предупреждает вас, если в этом столбце есть какие-либо отношения, а также может автоматически удалять их. Как утверждает PaxDiablo, если есть отношения, их нужно сначала удалить.

  1. Поместите таблицу в представление «Дизайн» (щелкните правой кнопкой мыши по таблице) следующим образом:
  1. Щелкните правой кнопкой мыши столбец в представлении «Дизайн» таблицы и выберите «Удалить».
    Колонна»

На этом этапе, если есть какие-либо отношения, которые также необходимо удалить, он спросит вас, хотите ли вы удалить и их.

3

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

 ALTER TABLE [Intake].[MER_SF_Opportunity_History] DROP COLUMN [[IntakeIsDeleted]]]
ИДТИ
 

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

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

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