CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2;
Przeczytałem to oświadczenie gdzieś w Internecie, ale nie mogłem zrozumieć WHERE 1=2.
Czy ktoś może to wyjaśnić?
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2;
Przeczytałem to oświadczenie gdzieś w Internecie, ale nie mogłem zrozumieć WHERE 1=2.
Czy ktoś może to wyjaśnić?
Odpowiedzi:
Ten typ polecenia jest zwykle używany do kopiowania struktury jednej tabeli do drugiej. W tym przypadku, EMPL_DEMObędzie miał taką samą konstrukcję kolumny employees, z wyjątkiem klawiszy lub ograniczenia .
1=2Zawsze ma wartość False, która uniemożliwia kopiowanie którymś z wierszy.
CREATE TABLE new_table LIKE old_table
LIKE old_tablenie jest konstrukcją SQL Server ...
namei typekolumny. Weź pod uwagę, że istnieją inne właściwości również jako struktura kolumny - np. Wartość domyślna, alias itp .;).
CREATE TABLE (Utwórz nową tabelę)
EMPL_DEMO (Zadzwoniono do EMPL_DEMO)
AS (Z danymi i strukturą)
SELECT * FROM employees WHERE 1=2; (Wszystko w pracownikach, gdzie 1 = 2. Ponieważ 1 nigdy nie jest 2 - skopiuj strukturę i wszystkie 0 pasujących wierszy)
.. Zasadniczo kopiuj strukturę, a nie dane.
Ta składnia robi to samo, ale jest bardziej oczywiste, tworzy tabelę o tej samej strukturze, bez danych.
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees limit 0;
LIMIT. Ale wygląda na to, że MSSQL go nie ma (co wydaje mi się dobrym powodem, aby po prostu nie używać MSSQL). Najwyraźniej tak TOP, ale w wynikach Google jest tak wiele osób, które tego nie używają, więc prawdopodobnie wiąże się to z pewnym przeczuciem.
Może to być przydatne do kopiowania struktury tabeli z wyłączeniem jej ograniczeń, kluczy, indeksów, właściwości tożsamości i wierszy danych.
To zapytanie utworzy EMPL_DEMOtabelę bez wierszy skopiowanych z tabeli pracowników, ponieważ WHERE 1=2warunek zawsze będzie oceniany jako FALSE.
CREATE TABLE EMPL_DEMO
AS
SELECT *
FROM employees
WHERE 1=2;
Zaufaj Google, przyjacielu. Od dołu pierwszego wyniku po wygooglowaniu tego stwierdzenia :
Na przykład:
CREATE TABLE suppliers AS (SELECT * FROM companies WHERE 1=2);Spowoduje to utworzenie nowej tabeli o nazwie dostawcy, która zawierałaby wszystkie kolumny z tabeli firm, ale nie zawierała danych z tabeli firm.
Wyrocznia:
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
Lepsze zrozumienie w bazie danych Teradata:
CREATE TABLE EMPL_DEMO AS Memployees with no data; //structure
CREATE TABLE EMPL_DEMO AS Memployees with data; //structure and data
W SQL Server
wybierz * do tabeli1 z tabeli2, gdzie 1 = 2 (tylko struktura)
wybierz * do tabeli1 z tabeli2, gdzie 1 = 1 (Struktura z danymi)