Vấn đề:
Bạn muốn tạo một bảng mới trong cơ sở dữ liệu với dữ liệu được xác định bởi truy vấn SQL.
Ví dụ:
Chúng tôi muốn tạo bảng gamer
dựa trên một truy vấn SQL. Trong truy vấn này, chúng tôi chọn dữ liệu từ một bảng khác có tên championship
được trình bày bên dưới.
id | game thủ | điểm | Championship_date |
---|---|---|---|
1 | alice | 14 | 2020-08-10 |
2 | giám sát viên | 10 | 2020-09-28 |
3 | happyman | 0 | 2020-08-10 |
4 | lukas | 6 | 2020-08-10 |
5 | oli | 12 | 2020-08-10 |
6 | lớn hơn | 7 | 2020-09-12 |
Trong cơ sở dữ liệu, hãy tạo một bảng mới có tên gamer
sẽ lưu trữ dữ liệu trong tất cả các cột được xác định trong bảng championship
(id
, gamer
, score
và championship_date
).
Giải pháp 1:
CREATE TABLE gamer AS SELECT * FROM championship;
Thảo luận:
Nếu bạn muốn tạo một bảng mới, bước đầu tiên là sử dụng CREATE TABLE
mệnh đề và tên của bảng mới (trong ví dụ của chúng tôi:gamer
). Sau đó, sử dụng AS
từ khóa và cung cấp một SELECT
câu lệnh chọn dữ liệu cho bảng mới. Trong ví dụ của chúng tôi, chúng tôi đã chọn tất cả các cột từ bảng championship
bằng cách sử dụng dấu hoa thị (*). Tập kết quả hiển thị tất cả các bản ghi trong bảng championship
.
Tuy nhiên, nếu bạn muốn tạo một bảng chỉ với một tập hợp con của các bản ghi, bạn có thể chỉ định truy vấn đã chọn như trong ví dụ bên dưới.
Giải pháp 2:
CREATE TABLE gamer AS SELECT gamer, score, championship_date FROM championship WHERE championship_date <= 2020-08-10;
Đây là tập hợp kết quả:
game thủ | điểm | Championship_date |
---|---|---|
alice | 14 | 2020-08-10 |
happyman | 0 | 2020-08-10 |
lukas | 6 | 2020-08-10 |
oli | 12 | 2020-08-10 |
SELECT
truy vấn chỉ truy xuất các bản ghi có championship_date
ngày bằng hoặc cũ hơn 2020-08-10 (WHERE championship_date <= 2020-08-10
). Bảng mới lưu trữ ít cột hơn trong ví dụ trước (SELECT gamer, score, championship_date
) không có cột id
.
Một giải pháp tương tự cho vấn đề này là sử dụng SELECT INTO
mệnh đề để tạo một bảng mới và sao chép dữ liệu từ một bảng khác. Hãy xem mã:
Giải pháp 3:
SELECT gamer, score, championship_date INTO gamer FROM championship WHERE championship_date <= 2020-08-10;
Bảng kết quả là giống nhau. Lưu ý rằng cấu trúc này không có trong tiêu chuẩn SQL. Trong lệnh SQL này, trước tiên chúng ta viết SELECT
, sau đó là danh sách các cột, tiếp theo là từ khóa INTO
, và cuối cùng là tên của bảng mới mà chúng ta muốn tạo. Tiếp theo, bạn có thể thêm WHERE
và các mệnh đề SQL khác như GROUP BY
hoặc HAVING
để lọc các bản ghi cho bảng mới.