Это небольшой прием, позволяющий избежать повторного ввода всей структуры столбцов. Будет создана таблица с теми же именами столбцов и типами данных, но без копирования каких-либо строк данных или ключей.
Adwaenyth
это сохраняет 2 (два) символа при вводе «1 = 2»: 3 символа, «False»: 5 символов
Archemar
1
Обратите внимание, что это ни в коем случае не стандартный SQL. Он работает в MySQL, не уверен в других диалектах.
Альваро Гонсалес,
Ответы:
110
Этот тип команды обычно используется для копирования структуры одной таблицы в другую. В этом случае EMPL_DEMOбудет такая же структура столбцов employees, за исключением ключей или ограничений .
1=2Всегда имеет значение , Falseкоторое предотвращает Вас от копирования любой из строк.
@ jpmc26 Думаю, «идентичный» - плохой выбор. Я просто имел в виду структуру столбцов.
DrZoo
Он также будет включать любые индексы или ограничения. По сути, вы сделаете копию столбцов с соответствующими типами данных
Барранка
7
Если вы хотите скопировать все ограничения, индексы и т. Д., Вы должны использоватьCREATE TABLE new_table LIKE old_table
Barmar
1
@Barmar, если это не что-то новое, LIKE old_tableэто не конструкция SQL Server ...
WernerCD
1
Я думаю , что вы имеете в виду структуру столбца как раз nameи typeстолбец. Учтите, что есть некоторые другие свойства, также как структура столбца - например, значение по умолчанию, псевдоним и т.д.;).
shA.t
27
CREATE TABLE (Создать новую таблицу)
EMPL_DEMO (Называется EMPL_DEMO)
AS (С данными и структурой)
SELECT * FROM employees WHERE 1=2; (Все в сотрудников, где 1 = 2. Поскольку 1 никогда не бывает 2 - скопируйте структуру и все 0 совпадающих строк)
@bgusach, боже, это так безумие. Я не мог себе представить, что никакой реалистичной БД не могло быть LIMIT. Но, похоже, в MSSQL его нет (что кажется мне хорошей причиной просто не использовать MSSQL). По-видимому, они есть TOP, но в результатах Google так много людей не используют это, поэтому, вероятно, вокруг этого есть какие-то шутки.
Кэт
@Kat У некоторых он есть , у многих - нет (включая стандартный SQL). Что такого особенного в этом синтаксисе?
Альваро Гонсалес
Дело не в синтаксисе, @ ÁlvaroGonzález, а в самой функциональности, IMO. Может быть, не так много для этого случая (хотя я считаю его более читаемым, чем другие варианты), но он, очевидно, полезен для разбивки результатов на страницы. Когда я поискал «MSSQL LIMIT», я заметил, что некоторые обходные пути, которые я видел, были безумны для функции, которая кажется неотъемлемой частью SQL (я также был удивлен, что она не была стандартной - кто может отслеживать, что и разве с SQL не так фрагментировано?).
Кэт
7
Это может быть полезно для копирования структуры таблицы, исключая ее ограничения, ключи, индексы, свойство идентификации и строки данных.
Этот запрос создаст EMPL_DEMOтаблицу без строк, скопированных из таблицы сотрудников, поскольку WHERE 1=2условие всегда будет оцениваться как FALSE.
CREATETABLE EMPL_DEMO
ASSELECT *
FROM employees
WHERE1=2;
CREATETABLE suppliers
AS (SELECT *
FROM companies WHERE1=2);
В результате будет создана новая таблица с названием «поставщики», в которую будут включены все столбцы из таблицы компаний, но не будет данных из таблицы компаний.
Обратите внимание, что результаты поиска Google настраиваются для каждого пользователя на основе того, что Google знает о пользователе. Таким образом, порядок результатов может быть разным для всех, и, следовательно, «первый результат» рискует быть разным для всех. В моем случае лучшим результатом для этого запроса является этот вопрос , а страница, на которую вы ссылаетесь, даже не отображается среди трех обращений.
пользователь
2
При ссылке на n-й результат используйте поисковую систему, такую как DuckDuckGo, которая дает статические результаты по каждому запросу.
wizzwizz4
@ MichaelKjörling Раньше была возможность показывать статические («не персонализированные») результаты. Я не знаю, насколько хорошо это работало, когда оно было, но теперь его больше нет, поскольку кажется, что пользовательские данные настолько переплелись с алгоритмом PageRank.
@Mehrdad Вторая ссылка в разделе «Удалить все пользовательские результаты» говорит, что одним из обязательных шагов является вход в вашу учетную запись Google, поэтому это явно недоступно для тех, у кого нет учетной записи Google. Кроме того, название параметра указывает, что он влияет только на рекламу , а не на результаты поиска, но текст намекает на то, что он также влияет на результаты, поэтому в лучшем случае это неясно.
пользователь
1
Оракул:
CREATETABLE EMPL_DEMO ASSELECT * FROM employees WHERE1=2; //just structure not data
CREATETABLE EMPL_DEMO ASSELECT * FROM employees WHERE1=1; //ststructure and data
Лучшее понимание в базе данных Teradata:
CREATETABLE EMPL_DEMO AS Memployees withnodata; //structure
CREATETABLE EMPL_DEMO AS Memployees withdata; //structure and data
Ответы:
Этот тип команды обычно используется для копирования структуры одной таблицы в другую. В этом случае
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 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 (структура с данными)
источник