SELECT INTO trong SQL Server là gì? Cách dùng câu lệnh Seclect into trong SQL Server như thế nào? Hãy cùng Quantrimang.com tìm hiểu nhé!
Lệnh SELECT INTO trong SQL Server thường được dùng cho mục đích sao chép hàng loạt. Về cơ bản, lập trình viên sao chép toàn bộ dữ liệu từ một bảng vào bảng khác bằng một lệnh đơn giản. Về mặt lý thuyết cơ bản, bạn có thể nói rằng select into sao chép đơn giản dữ liệu từ một bảng sang bảng khác theo cách cực kỳ dễ hiểu.
Lưu ý:
Các truy vấn được triển khai trong SQL SERVER và chúng có thể không hoạt động nhiều trong công cụ chỉnh sửa SQL online, vì thế, tốt hơn hết, hãy dùng một trình chỉnh sửa ngoại tuyến.
Cần nhớ là khi tạo bảng bằng cách này thì bảng mới cũng sẽ được điền các bản ghi từ bảng cũ (dựa trên lệnh SELECT).
Cú pháp lệnh SELECT INTO
SELECT bieu_thuc
INTO bang_moi
FROM bang
[WHERE dieu_k
ien];
Tên biến hoặc giá trị biến
bieu_thuc
Cột hoặc giá trị muốn lấy.
bang_moi
Bảng mới tạo bằng biểu thức đã chọn và các định nghĩa liên quan. (bang_moi hiện không có).
bang
Bảng muốn lấy bản ghi từ đó. Phải có ít nhất 1 bảng trong mệnh đề FROM.
WHERE dieu_kien
Tùy chọn. Điều kiện phải đáp ứng để bản ghi được chọn.
Lưu ý
Khi dungfl ệnh SELECT INTO trong SQL Server, bang_moi phải chưa từng tồn tại trước đó. Nếu có thì lệnh SELECT INTO sẽ bị lỗi.
Ví dụ lệnh SELECT INTO
SELECT nhanvien_id,ho, ten
INTO danhba
FROM nhanvien
WHERE nhanvie
n_id < 1000;
Ở ví dụ này, lệnh SELECT INTO sẽ chọn ID, họ và tên của nhân viên trong bảng nhanvien và chép các trường này cũng với định nghĩa sang 1 bảng danhba mới.
Nếu có bản ghi trong bảng nhanvien thì bảng danhba mới cũng sẽ có các bản ghi được trả về từ lệnh SELECT.
Nếu muốn đổi tên cột trong bảng mới thay vì dùng tên cũ, bạn có thể đặt bí danh ALIAS cho cột trong lệnh SELECT INTO.
SELECT nhanvien_id AS danhba_id, ho, ten
INTO danhba
FROM nhanvien
WHERE nhanvien_id < 1000
;
Ở ví dụ trên, ta không muốn cột đầu tiên trong bảng danhba mới là nhanvien_id nên tốt hơn là đổi tên cột đầu tiên thành danhba_id trong bảng danhba. Việc này thực hiện bằng cách đặt bí danh cho cột nhanvien_id như dưới đây.
nhanvien_id AS danhba_id
So sánh INSERT INTO SELECT và SELECT INTO
Cả hai lệnh đều có thể được dùng để sao chép dữ liệu giữa các bảng. Nhưng INSERT INTO SELECT chỉ có thể được dùng khi bảng mục tiêu tồn tại, còn lệnh SELECT INTO có thể được dùng ngay cả khi bảng mục tiêu không tồn tại vì nó tạo bảng này nếu nó chưa tồn tại.
INSERT INTO backUpCustomer select * from Customer;
Đây là bảng tempTable sẽ hiện hoặc được tạo trước khi phát sinh lỗi.
SELECT * INTO backUpCustomer from Customer;
Ở đây không cần tạo bảng trước vì SELECT INTO tạo một bảng nếu bảng đó chưa tồn tại, rồi sao chép dữ liệu.
Bài trước: Lệnh SELECT TOP trong SQL Server
Bài sau: Lệnh DELETE TOP trong SQL Server