Bảng Temp trong SQL Server – GraphGuide.org

Bảng tạm thời hoặc tạm thời trong SQL Server có thể được tạo tại thời điểm chạy và thực hiện tất cả các hoạt động mà một bảng thông thường có thể thực hiện. Có hai loại Bảng Tạm thời trong SQL Server, và chúng là Bảng cục bộ và Toàn cầu. Hãy để chúng tôi xem cách làm việc với cả bảng Local và Global Temp. Danh sách sau đây cho bạn biết nơi chúng tôi có thể sử dụng bảng tạm thời SQL:

  • Khi chúng ta đang làm việc với các phép nối phức tạp, hãy lưu trữ dữ liệu tạm thời.
  • Chúng rất hữu ích để thay thế các con trỏ đắt tiền. Chúng ta có thể sử dụng chúng để lưu trữ dữ liệu tập kết quả và thao tác với dữ liệu từ chúng.
  • Chúng ta có thể sử dụng các bảng tạm thời của máy chủ SQL này khi chúng ta đang thực hiện một số lượng lớn thao tác hàng trong các thủ tục được lưu trữ. Hãy nhớ rằng, Nếu chúng ta tạo cái này bên trong một thủ tục được lưu trữ cho các kết quả trung gian, thì nó chỉ áp dụng cho SP đó. Nó có nghĩa là bạn không thể gọi chúng bên ngoài thủ tục được lưu trữ.

Tạo bảng tạm thời cục bộ trong SQL Server

Tên của bảng tạm thời SQL Local bắt đầu bằng hàm băm (#) và được lưu trữ trong tempdb. Các bảng tạm thời Cục bộ chỉ có sẵn trong kết nối hiện tại. Nếu người dùng ngắt kết nối khỏi các phiên bản hiện tại hoặc đóng cửa sổ truy vấn, thì nó sẽ tự động xóa.

Cú pháp bảng tạm thời cục bộ của SQL Server

Cú pháp đằng sau các bảng tạm thời cục bộ trong Sql Server

CREATE TABLE #[LocalName]
(
    Column_Name1 Data_Type(Size) [NULL | NOT NULL],
    Column_Name2 Data_Type(Size) [NULL | NOT NULL],
     …
    Column_NameN Data_Type(Size) [NULL | NOT NULL]
);

Nó là một câu lệnh tạo bảng đơn giản. Ở đây, LocalName phải bắt đầu bằng #. Hãy nhớ, Vui lòng cung cấp một tên duy nhất. Nếu bạn đã đặt tên hiện có, nó sẽ xuất hiện một lỗi

Hãy để chúng tôi tạo một cái tên là Emp.

CREATE TABLE #Emp
(
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[FirstName] [nvarchar](255) NULL,
	[LastName] [nvarchar](255) NULL,
	[Occupation] [nvarchar](255) NULL,
	[YearlyIncome] [float] NULL,
	[Sales] [float] NULL
)

Chúng tôi đã tạo một tab tạm thời và khai báo 6 Cột. Ở đây, cột đầu tiên của chúng tôi là ID của kiểu dữ liệu Integer và nó sẽ không cho phép các giá trị NULL. Chúng tôi cũng đã xác định cột SQL Server này là Identity bắt đầu bằng 1 và tăng dần bằng 1. Vui lòng làm mới trình khám phá đối tượng để xem bảng Local Temporary mới được tạo trong SQL Server

Chèn dữ liệu vào bảng tạm thời cục bộ trong SQL Server

Hãy để tôi chèn một vài bản ghi mẫu hoặc ngẫu nhiên vào bảng tạm thời cục bộ mà chúng tôi đã tạo bên trong tempdb bằng cách sử dụng Câu lệnh INSERT.

INSERT INTO #Emp (
	    [FirstName], [LastName], [Occupation], [YearlyIncome], [Sales])
VALUES ('Tutorial', 'Gateway', 'Education', 10000, 200)
      ,('Imran', 'Khan', 'Skilled Professional', 15900, 100)
      ,('Doe', 'Lara', 'Management', 15000, 60)
      ,('Ramesh', 'Kumar', 'Professional', 65000, 630)

Chúng tôi đã chèn thành công 4 bản ghi ngẫu nhiên vào bảng Local Temp trong SQL Server.

Chèn dữ liệu vào bảng tạm thời cục bộ 2

Chọn dữ liệu từ Bảng tạm thời cục bộ

Hãy để tôi sử dụng Câu lệnh CHỌN để chọn các bản ghi có trong tạm thời cục bộ.

SELECT [FirstName], [LastName], [Occupation], [YearlyIncome], [Sales]
FROM #Emp

Chọn hàng từ Bảng tạm thời cục bộ 3

Cho đến bây giờ, bạn có thể tự hỏi tại sao tôi viết câu lệnh Tạo, Chèn và Chọn trong một cửa sổ truy vấn ?. Bởi vì các bảng tạm thời cục bộ của SQL sẽ kéo dài đến một phiên duy nhất và nếu bạn cố gắng gọi phiên này từ một cửa sổ truy vấn mới, thì nó sẽ xuất hiện một lỗi. Ví dụ: hãy để tôi gọi #Emp từ một cửa sổ truy vấn mới

Từ ảnh chụp màn hình bên dưới, bạn có thể thấy rằng nó không chứa #Emp của chúng tôi.

Lỗi khi truy cập Bảng nhiệt độ cục bộ 4

Như bạn có thể thấy, bảng Tạm thời Cục bộ trong Máy chủ Sql đang gặp lỗi cho biết rằng, Tên đối tượng không hợp lệ #LocalTemp. Bây giờ, hãy để tôi đóng tất cả các cửa sổ truy vấn hiện có và làm mới tempdb từ Object Explorer

Tạo bảng tạm thời chung trong SQL Server

Tên của nó bắt đầu bằng dấu thăng kép (##) và được lưu trữ trong tempdb. Đây giống như những cái vĩnh viễn và chúng có sẵn cho tất cả người dùng trong trường hợp đó. Nếu tất cả người dùng ngắt kết nối khỏi phiên của họ, bảng tạm thời toàn cục SQL sẽ tự động xóa.

Cú pháp bảng Temp toàn cục

Cú pháp đằng sau các bảng tạm thời toàn cầu trong studio quản lý máy chủ Sql

CREATE TABLE ##[Global Temp Name]
(
    Column_Name1 Data_Type(Size) [NULL | NOT NULL],
    Column_Name2 Data_Type(Size) [NULL | NOT NULL],
     …
    Column_NameN Data_Type(Size) [NULL | NOT NULL]
);

Tên bảng tạm thời toàn cục SQL phải bắt đầu bằng ##. Vui lòng cung cấp một duy nhất nếu không, nó sẽ tạo ra một lỗi. Hãy để chúng tôi tạo một bảng tạm thời toàn cầu có tên là Cust

CREATE TABLE ##Cust
(
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[FirstName] [nvarchar](255) NULL,
	[LastName] [nvarchar](255) NULL,
	[Education] [nvarchar](255) NULL,
	[Occupation] [nvarchar](255) NULL,
	[YearlyIncome] [float] NULL,
	[Sales] [float] NULL
)

Chúng tôi đã khai báo 7 Cột cho việc này. Xem bảng Global Temp mới được tạo trong Sql Server.

Tạo bảng tạm thời toàn cầu 5

Chèn dữ liệu vào toàn cục tạm thời

Hãy để tôi chèn một vài mẫu hoặc bản ghi ngẫu nhiên vào bảng tạm thời chung trong Sql Server mà chúng tôi đã tạo bên trong tempdb bằng cách sử dụng Câu lệnh INSERT.

INSERT INTO ##Cust (
	    [FirstName], [LastName], [Education], [Occupation], [YearlyIncome], [Sales])
VALUES ('Tutorial', 'Gateway', 'Masters Degree', 'Teaching', 12000, 200)
      ,('Imran', 'Khan', 'Bachelors', 'Skilled Professional', 13900, 100)
      ,('Doe', 'Lara', 'Degree', 'Management', 25000, 60)
      ,('Ramesh', 'Kumar', 'Bachelors', 'Professional', 35400, 630)

Chọn từ Bảng nhiệt độ chung trong SQL Server

Tại đây, chúng tôi đã chèn thành công 4 bản ghi ngẫu nhiên vào ## Cust. Hãy để tôi sử dụng Câu lệnh SELECT để chọn các bản ghi có trong bảng tạm thời chung đó trong Máy chủ Sql.

SELECT [FirstName], [LastName], [Education], [Occupation], [YearlyIncome], [Sales] 
FROM ##Cust

Chèn hàng vào bảng tạm thời toàn cục 6

Tiếp theo, hãy để tôi gọi ## Cust Global từ một cửa sổ truy vấn mới

Chọn bản ghi từ Bảng nhiệt độ chung

Nó đang hiển thị các bản ghi, thay vì tạo ra một lỗi. Bây giờ, hãy để tôi đóng tất cả các cửa sổ truy vấn hiện có và làm mới tempdb từ Object Explorer.

Xóa bảng nhiệt độ chung

Bây giờ bạn có thể thấy rằng không có gì trong cơ sở dữ liệu tempdb. Vui lòng tham khảo các bài viết về con trỏ và thủ tục được lưu trữ.