CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2;
Я читал это заявление где-то в Интернете, но не мог понять WHERE 1=2.
Кто-нибудь, пожалуйста, объясните это?
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2;
Я читал это заявление где-то в Интернете, но не мог понять WHERE 1=2.
Кто-нибудь, пожалуйста, объясните это?
Ответы:
Этот тип команды обычно используется для копирования структуры одной таблицы в другую. В этом случае EMPL_DEMOбудет такая же структура столбцов employees, за исключением ключей или ограничений .
1=2Всегда имеет значение , Falseкоторое предотвращает Вас от копирования любой из строк.
CREATE TABLE new_table LIKE old_table
LIKE old_tableэто не конструкция SQL Server ...
nameи typeстолбец. Учтите, что есть некоторые другие свойства, также как структура столбца - например, значение по умолчанию, псевдоним и т.д.;).
CREATE TABLE (Создать новую таблицу)
EMPL_DEMO (Называется EMPL_DEMO)
AS (С данными и структурой)
SELECT * FROM employees WHERE 1=2; (Все в сотрудников, где 1 = 2. Поскольку 1 никогда не бывает 2 - скопируйте структуру и все 0 совпадающих строк)
..По сути копируйте структуру, а не данные.
Этот синтаксис делает то же самое, но более очевидно, он создает таблицу с той же структурой, без данных.
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees limit 0;
LIMIT. Но, похоже, в MSSQL его нет (что кажется мне хорошей причиной просто не использовать MSSQL). По-видимому, они есть TOP, но в результатах Google так много людей не используют это, поэтому, вероятно, вокруг этого есть какие-то шутки.
Это может быть полезно для копирования структуры таблицы, исключая ее ограничения, ключи, индексы, свойство идентификации и строки данных.
Этот запрос создаст EMPL_DEMOтаблицу без строк, скопированных из таблицы сотрудников, поскольку WHERE 1=2условие всегда будет оцениваться как FALSE.
CREATE TABLE EMPL_DEMO
AS
SELECT *
FROM employees
WHERE 1=2;
Доверься Google, друг мой. Из нижней части первого результата, когда вы гуглите это утверждение :
Например:
CREATE TABLE suppliers AS (SELECT * FROM companies WHERE 1=2);В результате будет создана новая таблица с названием «поставщики», в которую будут включены все столбцы из таблицы компаний, но не будет данных из таблицы компаний.
Оракул:
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2; //just structure not data
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=1; //ststructure and data
Лучшее понимание в базе данных Teradata:
CREATE TABLE EMPL_DEMO AS Memployees with no data; //structure
CREATE TABLE EMPL_DEMO AS Memployees with data; //structure and data
В SQL Server
выберите * в table1 из table2, где 1 = 2 (только структура)
выберите * в table1 из table2, где 1 = 1 (структура с данными)