Перейти к содержимому

Как удалить таблицу в postgresql

  • автор:

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

Но после того как я в интерфейсе pgadmin4 выполняю ту же команду, всё удаляется testdb-# \dt+
Отношения не найдены.
В чем причина, что я не могу удалить таблицу через командную строку?

Отслеживать
29k 5 5 золотых знаков 28 28 серебряных знаков 55 55 бронзовых знаков
задан 3 авг 2023 в 8:18
stepanevgen2013 stepanevgen2013
385 1 1 серебряный знак 10 10 бронзовых знаков
; в конце не хватает?
3 авг 2023 в 8:20
Для правильного форматирования добавляйте пустые строки перед и после таблицы. Это давний баг SO.
3 авг 2023 в 15:30

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

В терменале В linux так:

sudo -iu postgres psql -p -c "\c ; DROP TABLE publisher;" 

Смею предположить что в windows что-то типа:

\\psql -iu postgres -p -c "\c ; DROP TABLE publisher;" 

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

Отслеживать
ответ дан 3 авг 2023 в 8:34
Konstantin_SH Konstantin_SH
2,892 2 2 золотых знака 21 21 серебряный знак 44 44 бронзовых знака

ответ в текущем виде попросту неверен из-за того, что в postgresql в принципе не существует команды USE

3 авг 2023 в 18:54
@Мелкий. Да, Вы правы. Исправил.
7 авг 2023 в 4:55

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

В случае PostgreSQL (и других СУБД) символ ; используется для завершения SQL-запроса. В командной строке psql или других SQL-клиентах, вы должны вводить SQL-запрос целиком и нажимать Enter, чтобы запрос был отправлен на выполнение. SQL-клиент сам поймет, что команда закончилась и выполнит её.

Отслеживать
ответ дан 3 авг 2023 в 8:28
stepanevgen2013 stepanevgen2013
385 1 1 серебряный знак 10 10 бронзовых знаков

  • sql
  • postgresql
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

PostgreSQL оператор DROP TABLE

В этом учебном пособии вы узнаете, как использовать в PostgreSQL оператор DROP TABLE с синтаксисом и примерами.

Описание

PostgreSQL оператор DROP TABLE позволяет удалить таблицу из базы данных PostgreSQL.

Синтаксис

В простейшем виде синтаксис для оператора DROP TABLE в PostgreSQL:

DROP TABLE table_name;

Полный синтаксис для оператора PostgreSQL DROP TABLE:

DROP [ TEMPORARY ] TABLE [ IF EXISTS ]
table_name1, table_name2.
[ RESTRICT | CASCADE ];

Параметры или аргументы

TEMPORARY Необязательный. Он указывает, что оператору DROP TABLE следует удалять только временные таблицы. table_name Имя таблицы для удаления из базы данных. table_name1 , table_name2 Таблицы, которые нужно удалить из базы данных, если удаляется более одной таблицы в операторе DROP TABLE. IF EXISTS Необязательный. Если указано, оператор DROP TABLE не вызовет ошибку, если одна из таблиц не существует. RESTRICT Необязательный. Если указано, таблица будет удалена, только если нет других объектов, которые зависят от нее. CASCADE Необязательный. Если указано, таблица будет удалена, а все объекты, которые зависят от нее, будут автоматически удалены.

Примечание

  • Если вы используете оператор DROP TABLE в PostgreSQL для удаления одной или нескольких несуществующих таблиц, база данных выдаст ошибку (если вы не укажете параметр IF EXISTS в операторе DROP TABLE).

Пример

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

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

Сначала рассмотрим простой пример DROP TABLE, который показывает, как использовать DROP TABLE для удаления одной таблицы в PostgreSQL.
Например:

Как удалить таблицу в postgresql

DELETE — удалить записи таблицы

Синтаксис

[ WITH [ RECURSIVE ] запрос_WITH [, . ] ] DELETE FROM [ ONLY ] имя_таблицы [ * ] [ [ AS ] псевдоним ] [ USING список_USING ] [ WHERE условие | WHERE CURRENT OF имя_курсора ] [ RETURNING * | выражение_результата [ [ AS ] имя_результата ] [, . ] ]

Описание

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

Подсказка

TRUNCATE — расширение Postgres Pro , реализующее более быстрый механизм удаления всех строк из таблицы.

Удалить строки в таблице, используя информацию из других таблиц в базе данных, можно двумя способами: применяя вложенные запросы или указав дополнительные таблицы в предложении USING . Выбор предпочитаемого варианта зависит от конкретных обстоятельств.

Предложение RETURNING указывает, что команда DELETE должна вычислить и возвратить значения для каждой фактически удалённой строки. Вычислить в нём можно любое выражение со столбцами целевой таблицы и/или столбцами других таблиц, упомянутых в USING . Список RETURNING имеет тот же синтаксис, что и список результатов SELECT .

Чтобы удалять данные из таблицы, необходимо иметь право DELETE для неё, а также право SELECT для всех таблиц, перечисленных в предложении USING , и таблиц, данные которых считываются в условии .

Параметры

запрос_WITH

Предложение WITH позволяет задать один или несколько подзапросов, на которые затем можно ссылаться по имени в запросе DELETE . Подробнее об этом см. Раздел 7.8 и SELECT . имя_таблицы

Имя (возможно, дополненное схемой) таблицы, из которой будут удалены строки. Если перед именем таблицы добавлено ONLY , соответствующие строки удаляются только из указанной таблицы. Без ONLY строки будут также удалены из всех таблиц, унаследованных от указанной. При желании, после имени таблицы можно указать * , чтобы явно обозначить, что операция затрагивает все дочерние таблицы. псевдоним

Альтернативное имя целевой таблицы. Когда указывается это имя, оно полностью скрывает фактическое имя таблицы. Например, в запросе DELETE FROM foo AS f дополнительные компоненты оператора DELETE должны обращаться к целевой таблице по имени f , а не foo . список_USING

Список табличных выражений, позволяющий добавлять в условие WHERE столбцы из других таблиц. Он подобен списку таблиц, который можно задать в предложении Предложение FROM оператора SELECT ; например, в нём можно определить псевдоним для таблицы. Целевую таблицу повторять в списке_USING нужно, только если требуется определить замкнутое соединение. условие

Выражение, возвращающее значение типа boolean . Удалены будут только те строки, для которых это выражение возвращает true . имя_курсора

Имя курсора, который будет использоваться в условии WHERE CURRENT OF . С таким условием будет удалена строка, выбранная из этого курсора последней. Курсор должен образовываться запросом, не применяющим группировку, к целевой таблице команды DELETE . Заметьте, что WHERE CURRENT OF нельзя задать вместе с булевским условием. За дополнительными сведениями об использовании курсоров с WHERE CURRENT OF обратитесь к DECLARE . выражение_результата

Выражение, которое будет вычисляться и возвращаться командой DELETE после удаления каждой строки. В этом выражении можно использовать имена любых столбцов таблицы имя_таблицы или таблиц, перечисленных в списке USING . Чтобы получить все столбцы, достаточно написать * . имя_результата

Имя, назначаемое возвращаемому столбцу.

Выводимая информация

В случае успешного завершения, DELETE возвращает метку команды в виде

DELETE число 

Здесь число — количество удалённых строк. Заметьте, что это число может быть меньше числа строк, соответствующих условию , если удаления были подавлены триггером BEFORE DELETE . Если число равно 0, это означает, что запрос не удалил ни одной строки (это не считается ошибкой).

Если команда DELETE содержит предложение RETURNING , её результат будет похож на результат оператора SELECT (с теми же столбцами и значениями, что содержатся в списке RETURNING ), полученный для строк, удалённых этой командой.

Замечания

Postgres Pro позволяет ссылаться на столбцы других таблиц в условии WHERE , когда эти таблицы перечисляются в предложении USING . Например, удалить все фильмы определённого продюсера можно так:

DELETE FROM films USING producers WHERE producer_id = producers.id AND producers.name = 'foo';

По сути в этом запросе выполняется соединение таблиц films и producers , и все успешно включённые в соединение строки в films помечаются для удаления. Этот синтаксис не соответствует стандарту. Следуя стандарту, эту задачу можно решить так:

DELETE FROM films WHERE producer_id IN (SELECT id FROM producers WHERE name = 'foo');

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

Примеры

Удаление всех фильмов, кроме мюзиклов:

DELETE FROM films WHERE kind <> 'Musical';

Очистка таблицы films :

DELETE FROM films;

Удаление завершённых задач с получением всех данных удалённых строк:

DELETE FROM tasks WHERE status = 'DONE' RETURNING *;

Удаление из tasks строки, на которой в текущий момент располагается курсор c_tasks :

DELETE FROM tasks WHERE CURRENT OF c_tasks;

Совместимость

Эта команда соответствует стандарту SQL , но предложения USING и RETURNING являются расширениями Postgres Pro , как и возможность использовать WITH с DELETE .

Пред. Наверх След.
DECLARE Начало DISCARD

Как удалить таблицу в postgresql

DROP TABLE — удалить таблицу

Синтаксис

DROP TABLE [ IF EXISTS ] имя [, . ] [ CASCADE | RESTRICT ]

Описание

DROP TABLE удаляет таблицы из базы данных. Удалить таблицу может только её владелец, владелец схемы или суперпользователь. Чтобы опустошить таблицу, не удаляя её саму, вместо этой команды следует использовать DELETE или TRUNCATE .

DROP TABLE всегда удаляет все индексы, правила, триггеры и ограничения, существующие в целевой таблице. Однако, чтобы удалить таблицу, на которую ссылается представление или ограничение внешнего ключа в другой таблице, необходимо дополнительно указать CASCADE . (С указанием CASCADE зависимое представление будет удалено полностью, но в случае с первичным ключом удалено будет только само ограничение, а не таблица, к которой оно относится.)

Параметры

Не считать ошибкой, если таблица не существует. В этом случае будет выдано замечание. имя

Имя (возможно, дополненное схемой) таблицы, подлежащей удалению. CASCADE

Автоматически удалять объекты, зависящие от данной таблицы (например, представления). RESTRICT

Отказать в удалении таблицы, если от неё зависят какие-либо объекты. Это поведение по умолчанию.

Примеры

Удаление таблиц films и distributors :

DROP TABLE films, distributors;

Совместимость

Эта команда соответствует стандарту SQL, но возможность удалять в одной команде несколько таблиц и указание IF EXISTS являются расширениями Postgres Pro .

См. также

Пред. Наверх След.
DROP SERVER Начало DROP TABLESPACE

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *