CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2;
Tôi đã đọc câu nói này ở đâu đó trên internet nhưng tôi không thể hiểu được WHERE 1=2
.
Có ai vui lòng giải thích điều này không?
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2;
Tôi đã đọc câu nói này ở đâu đó trên internet nhưng tôi không thể hiểu được WHERE 1=2
.
Có ai vui lòng giải thích điều này không?
Câu trả lời:
Loại lệnh này thường được sử dụng để sao chép cấu trúc của bảng này sang bảng khác. Trong trường hợp này, EMPL_DEMO
sẽ có cùng cấu trúc cột employees
, ngoại trừ các khóa hoặc ràng buộc .
Các 1=2
luôn đánh giá False
đó ngăn cản bạn từ việc sao chép bất kỳ hàng.
CREATE TABLE new_table LIKE old_table
LIKE old_table
không phải là một cấu trúc SQL Server ...
name
và type
của cột, Hãy xem xét rằng có một số thuộc tính khác cũng như cấu trúc cột - ví dụ: giá trị mặc định, bí danh và v.v.;).
CREATE TABLE
(Tạo một bảng mới)
EMPL_DEMO
(Được gọi là EMPL_DEMO)
AS
(Với Dữ liệu và cấu trúc của)
SELECT * FROM employees WHERE 1=2;
(Mọi thứ trong các nhân viên trong đó 1 = 2. Vì 1 không bao giờ là 2 - hãy sao chép cấu trúc và tất cả 0 hàng phù hợp)
..Sự sao chép cấu trúc chứ không phải dữ liệu.
Cú pháp này cũng thực hiện tương tự, nhưng rõ ràng hơn, nó tạo ra một bảng có cùng cấu trúc, không có dữ liệu.
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees limit 0;
LIMIT
. Nhưng có vẻ như MSSQL thiếu nó (điều này khiến tôi không thích sử dụng MSSQL). Rõ ràng là họ có TOP
, nhưng kết quả google có rất nhiều người không sử dụng nó, vì vậy có thể có một số hijink xung quanh nó.
Điều này có thể hữu ích để sao chép cấu trúc của một bảng ngoại trừ các ràng buộc, khóa, chỉ mục, thuộc tính nhận dạng và các hàng dữ liệu của nó.
Truy vấn này sẽ tạo EMPL_DEMO
bảng không có hàng nào được sao chép từ bảng nhân viên vì WHERE 1=2
điều kiện luôn được đánh giá là FALSE
.
CREATE TABLE EMPL_DEMO
AS
SELECT *
FROM employees
WHERE 1=2;
Hãy tin tưởng vào Google, bạn của tôi. Từ cuối kết quả đầu tiên khi bạn google câu lệnh đó :
Ví dụ:
CREATE TABLE suppliers AS (SELECT * FROM companies WHERE 1=2);
Điều này sẽ tạo ra một bảng mới có tên là nhà cung cấp bao gồm tất cả các cột từ bảng công ty, nhưng không có dữ liệu từ bảng công ty.
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
Hiểu rõ hơn trong Cơ sở dữ liệu Teradata:
CREATE TABLE EMPL_DEMO AS Memployees with no data; //structure
CREATE TABLE EMPL_DEMO AS Memployees with data; //structure and data
Trong SQL Server
chọn * vào table1 từ table2 trong đó 1 = 2 (Chỉ cấu trúc)
chọn * vào table1 từ table2 trong đó 1 = 1 (Cấu trúc với dữ liệu)