Как вы используете SQL, чтобы узнать, существует ли таблица или нет?

Возможный дубликат:
SQL Server: проверьте, существует ли таблица
Oracle: если таблица существует

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


person Programmer    schedule 19.04.2012    source источник
comment
какой язык, как в mysql, вы можете использовать, если он существует   -  person Satya    schedule 19.04.2012
comment
В настоящее время я использую Oracle. Кажется, что все ответы предполагали, что я использую SQL Server, так как я забыл упомянуть об этом там ....   -  person Programmer    schedule 19.04.2012
comment
почему ты хочешь сделать это? В Oracle редко возникает необходимость создавать таблицы на лету (в отличие от некоторых других разновидностей СУБД).   -  person APC    schedule 19.04.2012


Ответы (5)


Вы можете попробовать просто ВЫБРАТЬ из него и зафиксировать ошибку, в противном случае вам нужно будет написать специальный SQL для БД, чтобы запросить соответствующие таблицы метаданных и посмотреть там.

person Will Hartung    schedule 19.04.2012

Предполагая, что SQL Server ... Запросы к системным объектам:

select * from sysobjects where xtype='U' and name ='tablename'
person JP.    schedule 19.04.2012
comment
Или для SQL Server 2005 и новее - даже лучше - запрос sys.tables: if exists (select * from sys.tables where Name = 'tablename') ..... - person marc_s; 19.04.2012

В MySQL вы можете использовать конструкцию CREATE TABLE IF NOT EXISTS и запускать ее перед запросом INSERT. Это создаст таблицу, если она не существует, и ничего не сделает, если таблица есть.

CREATE TABLE IF NOT EXISTS myTable (
    ....
)

http://dev.mysql.com/doc/refman/5.1/en/create-table.html

http://docs.oracle.com/cd/E17952_01/refman-5.1-en/create-table.html

person David Z.    schedule 19.04.2012
comment
Вы знаете, что это такое для Oracle вместо SQL Server? - person Programmer; 19.04.2012
comment
Вроде бы то же самое и с оракулом, но я не на 100%. Глядя на их документы, похоже, что это то же самое: - person David Z.; 19.04.2012
comment
эта документация предназначена для MySQL, см. docs.oracle.com/cd/E17952_01/refman -5.1-ru - person nick fox; 01.07.2015

ЕСЛИ MySQL:

select count(*) from my_tables where table_name='table_1'; 
If count>0 then  ...
person Erre Efe    schedule 19.04.2012

Этот простой запрос дает вам подробную информацию о конкретной таблице, созданной пользователями в Oracle. Попробуй.

 select * from user_tables where table_name = 'tablename';
person hitman047    schedule 19.04.2012
comment
Не забывайте, что имена таблиц по умолчанию в верхнем регистре. - person a_horse_with_no_name; 19.04.2012
comment
здесь tablenane - это общее название таблиц. tablename не является конкретной таблицей. - person hitman047; 19.04.2012
comment
Я понимаю это, но OP может не знать об этом. - person a_horse_with_no_name; 19.04.2012