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);Це дозволить створити нову таблицю з назвою постачальників, яка включає всі стовпці з таблиці компаній, але не містить даних з таблиці компаній.
Oracle:
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
виберіть * у таблицю1 з таблиці2, де 1 = 2 (лише структура)
виберіть * у таблицю1 з таблиці2, де 1 = 1 (Структура з даними)