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.