Vấn đề:
Bạn muốn tạo một bảng mới với dữ liệu được sao chép từ một bảng khác.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng có tên product
với dữ liệu trong các cột sau:id
(khóa chính), name
, category
và price
.
id | name | danh mục | price |
---|---|---|---|
105 | hoa hồng | hoa | 5,70 |
108 | bàn | đồ nội thất | 120,00 |
115 | hoa tulip | hoa | 6,50 |
123 | hoa hướng dương | hoa | 7,50 |
145 | guitar | âm nhạc | 300,00 |
155 | hoa lan | hoa | 9,50 |
158 | sáo | âm nhạc | 156,00 |
Trong cơ sở dữ liệu, hãy tạo một bảng mới có tên florist
sẽ lưu trữ các cột sau:id
, name
và price
. Các cột này đến từ bảng product
nhưng chỉ từ danh mục hoa .
Điều quan trọng cần lưu ý là chúng tôi đang tạo một bảng mới. Bảng florist
không tồn tại trong cơ sở dữ liệu này.
Cấu trúc TẠO BẢNG NHƯ CHỌN
Để tạo một bảng mới từ một bảng khác, bạn có thể sử dụng CREATE TABLE AS SELECT
. Cấu trúc này là SQL tiêu chuẩn. Xem mã SQL bên dưới:
Giải pháp 1:
CREATE TABLE florist AS SELECT * FROM product WHERE category = ’flower’;
Đây là kết quả của truy vấn:
id | name | danh mục | price |
---|---|---|---|
105 | hoa hồng | hoa | 5,70 |
115 | hoa tulip | hoa | 6,50 |
123 | hoa hướng dương | hoa | 7,50 |
155 | hoa lan | hoa | 9,50 |
Sử dụng CREATE TABLE
, bạn có thể tạo một bảng mới bằng cách sao chép dữ liệu từ một bảng khác. Trong trường hợp này, trước tiên chúng ta sử dụng CREATE TABLE
mệnh đề có tên cho bảng mới (trong ví dụ của chúng tôi:florist
), tiếp theo chúng ta viết AS
và SELECT
truy vấn với tên của các cột (trong ví dụ của chúng tôi:*
), và sau đó chúng tôi viết FROM
theo sau là tên của bảng mà từ đó dữ liệu được thu thập (trong ví dụ của chúng tôi:product
). Sau đó, bạn có thể sử dụng bất kỳ mệnh đề SQL nào:WHERE
, GROUP BY
, HAVING
, v.v.
Bảng mới florist
sẽ chứa định nghĩa của các cột từ product
bảng (id
, name
, category
và price
). Số lượng hàng được giới hạn bằng cách sử dụng mệnh đề WHERE, lọc các bản ghi để chỉ truy xuất dữ liệu từ danh mục hoa .
Cấu trúc CHỌN VÀO
Một giải pháp khác là sử dụng SELECT INTO
. Cú pháp này không phải là SQL chuẩn, nhưng nó được hỗ trợ bởi nhiều cơ sở dữ liệu phổ biến.
Giải pháp 2:
SELECT id, name, price INTO florist FROM product WHERE category=’flower’;
Đây là kết quả:
id | name | price |
---|---|---|
105 | hoa hồng | 5,70 |
115 | hoa tulip | 6,50 |
123 | hoa hướng dương | 7,50 |
155 | hoa lan | 9,50 |
Thảo luận:
Nếu bạn muốn tạo một bảng mới dựa trên cấu trúc và dữ liệu từ một bảng khác, bạn có thể sử dụng SELECT INTO
mệnh đề. Đầu tiên, hãy viết một SELECT
theo sau là một danh sách các cột (trong ví dụ của chúng tôi:id
, name
và price
) từ bảng hiện có (trong ví dụ của chúng tôi:product
).
Lưu ý rằng có nhiều cột hơn trong bảng product
. Chúng tôi chỉ chọn những cột mà chúng tôi quan tâm.
Tiếp theo, sử dụng từ khóa INTO
với tên của bảng mới mà bạn muốn tạo (trong ví dụ của chúng tôi:florist
). Sau đó, viết từ khóa FROM với tên của bảng hiện có (trong ví dụ của chúng tôi:product
).
Nếu bạn muốn chọn các hàng đã lọc từ bảng, hãy sử dụng WHERE
mệnh đề. Sau WHERE
, viết các điều kiện để lọc dữ liệu (trong ví dụ của chúng tôi:WHERE category=’flower’
).
Trong ví dụ này, chúng tôi đang tạo một bảng mới florist
có ít cột hơn bảng product
(sự khác biệt là danh mục cột). Bảng mới này cũng có ít hàng hơn - chỉ những hàng có danh mục hoa .
Tất nhiên, nếu bạn muốn tạo một bảng bằng cách sử dụng tất cả các cột trong bảng khác, bạn có thể sử dụng *
thay vì liệt kê các cột sau SELECT
. Xem ví dụ bên dưới:
Giải pháp 2:
SELECT * INTO florist FROM product WHERE category=’flower’;
Đây là kết quả:
id | name | danh mục | price |
---|---|---|---|
105 | hoa hồng | hoa | 5,70 |
115 | hoa tulip | hoa | 6,50 |
123 | hoa hướng dương | hoa | 7,50 |
155 | hoa lan | hoa | 9,50 |
Sử dụng SELECT INTO
là một cách dễ dàng để tạo một bảng mới dựa trên một bảng hiện có trong cơ sở dữ liệu.