Mục lục:
Video: Bài 1. Hướng dẫn kết nối, tạo database, tạo table và tạo liên kết giữa các table trong Sql Server 2025
Đôi khi, bạn muốn lấy thông tin cụ thể từ bảng KHÁCH HÀNG trong SQL. Bạn không muốn nhìn vào mọi thứ - chỉ các cột và hàng cụ thể. Những gì bạn cần là một cái nhìn.
Một xem là một bảng ảo. Trong hầu hết các triển khai, quan điểm không có sự tồn tại vật lý độc lập. Định nghĩa của khung nhìn chỉ tồn tại trong siêu dữ liệu của cơ sở dữ liệu, nhưng dữ liệu đến từ bảng hoặc bảng mà bạn lấy được khung nhìn. Dữ liệu của khung nhìn không được nhân đôi.
Chế độ xem bảng đơn
Nếu thông tin bạn muốn tồn tại trong một bảng duy nhất, bạn có thể tạo một chế độ xem bảng dữ liệu đơn. Ví dụ: giả sử bạn muốn xem tên và số điện thoại của tất cả khách hàng đang sống ở tiểu bang New Hampshire. Bạn có thể tạo một khung nhìn từ bảng CUSTOMER chỉ chứa dữ liệu bạn muốn. Câu lệnh SQL sau tạo ra khung nhìn này:
TẠO NHANH NH_CUST AS CHỌN KHÁCH HÀNG. FirstName, KHÁCH HÀNG. LastName, KHÁCH HÀNG. Điện thoại T FROM KHÁCH HÀNG TẠI KHÁCH HÀNG. Nhà nước = 'NH';
Bạn có thể thực hiện cùng một nhiệm vụ với việc gõ ít hơn nếu triển khai SQL của bạn giả định rằng tất cả các tham chiếu bảng giống như những người trong mệnh đề FROM. Nếu hệ thống của bạn đưa ra giả định mặc định hợp lý, bạn có thể giảm câu lệnh thành các dòng sau:
TẠO NHIEWNG NH_C NHƯ AS SELECT Tên, Họ, Điện thoại T FROM KHÁCH HÀNG Ở ĐÂU STATE = 'NH';
Mặc dù phiên bản thứ hai dễ đọc và dễ đọc hơn nhưng nó dễ bị gián đoạn hơn từ lệnh ALTER TABLE. Sự gián đoạn như vậy không phải là vấn đề cho trường hợp đơn giản này, không có JOIN, nhưng chế độ xem với JOIN mạnh mẽ hơn khi họ sử dụng tên đầy đủ.
Chế độ xem đa năng
Thông thường, bạn cần kéo dữ liệu từ hai bảng trở lên để trả lời câu hỏi của bạn. Ví dụ: ví dụ: bạn làm việc cho cửa hàng bán đồ thể thao và bạn muốn gửi thư khuyến mại tới tất cả khách hàng đã mua thiết bị trượt tuyết kể từ khi cửa hàng mở cửa vào năm ngoái.
Bạn cần thông tin từ bảng KHÁCH HÀNG, bảng PRODUCT, bảng INVOICE và bảng INVOICE_LINE. Bạn có thể tạo một khung nhìn đa năng cho thấy dữ liệu bạn cần. Mỗi lần bạn sử dụng chế độ xem, nó phản ánh bất kỳ thay đổi nào xảy ra trong các bảng bên dưới kể từ lần cuối cùng bạn sử dụng chế độ xem.
Cơ sở dữ liệu cho cửa hàng bán đồ thể thao này có bốn bảng: KHÁCH HÀNG, SẢN PHẨM, HOẠT ĐỘNG, và INVOICE_LINE.
Cột | Kiểu dữ liệu | Hạn chế | KHÁCH HÀNG |
---|---|---|---|
CustomerID | INTEGER | KHÔNG NULL | FirstName |
CHAR (15) | LastName < CHAR (20) | ||
NOT NULL | Đường phố | CHAR (25) | |
Thành phố | CHAR (20) | ||
Bang | CHAR (2) | ||
Zipcode > CHAR (10) | Điện thoại | ||
CHAR (13) | PRODUCT | ||
ProductID | INTEGER | ||
KHÔNG NULL | Tên | CHAR (25) | Mô tả > CHAR (30) |
Danh mục | CHAR (15) | ||
VendorID | INTEGER | ||
VendorName | CHAR (30) | ||
HỢP ĐỒNG | InvoiceNumber | ||
INTEGER | KHÔNG NULL | ||
CustomerID | INTEGER | InvoiceDate | DATE |
TotalSale | NUMERIC (9, 2) | ||
TotalRemitted | NUMERIC (9, 2) | ||
FormOfPayment > CHAR (10) | INVOICE_LINE | ||
LineNumber | INTEGER | ||
KHÔNG NULL | InvoiceNumber | ||
INTEGER | KHÔNG NULL | ProductID | INTEGER |
KHÔNG NULL > Số lượng | INTEGER | Giá bánSố | |
NUMERIC (9, 2) | Lưu ý rằng một số cột có chứa ràng buộc NOT NULL.Các cột này là các khóa chính của các bảng hoặc cột tương ứng mà bạn quyết định | phải | |
có chứa một giá trị. Khóa chính của bảng phải xác định duy nhất mỗi hàng. Để làm điều đó, khóa chính phải chứa một giá trị không phải null trong mỗi hàng. | Các bảng liên quan đến nhau thông qua các cột mà chúng có điểm chung. Danh sách dưới đây mô tả các mối quan hệ này: | ||
Bảng CUSTOMER có một | một-nhiều mối quan hệ |
vào bảng INVOICE. Một khách hàng có thể mua nhiều lần, tạo ra nhiều hóa đơn. Tuy nhiên, mỗi hóa đơn liên quan đến một và chỉ một khách hàng. Bảng INVOICE mang một mối quan hệ một đến nhiều với bảng INVOICE_LINE. Hóa đơn có thể có nhiều dòng nhưng mỗi dòng xuất hiện trên một, và chỉ một, hóa đơn. Bảng PRODUCT cũng có quan hệ một đến nhiều với bảng INVOICE_LINE. Một sản phẩm có thể xuất hiện trên nhiều dòng trên một hoặc nhiều hóa đơn. Mỗi dòng, tuy nhiên, đề cập đến một, và chỉ có một, sản phẩm.
Bảng CUSTOMER liên kết đến bảng INVOICE bằng cột CustomerID phổ biến. Bảng INVOICE liên kết đến bảng INVOICE_LINE bằng cột InvoiceNumber chung. Bảng PRODUCT liên kết đến bảng INVOICE_LINE bằng cột ProductID phổ biến. Các liên kết này là những gì làm cho cơ sở dữ liệu này là
-
quan hệ cơ sở dữ liệu. Để truy cập thông tin về khách hàng đã mua thiết bị trượt tuyết, bạn cần Tên, Họ, Phố, Thành phố, Tiểu bang và Mã bưu điện từ bảng KHÁCH HÀNG; Danh mục từ bảng PRODUCT; InvoiceNumber từ bảng INVOICE; và LineNumber từ bảng INVOICE_LINE. Bạn có thể tạo chế độ xem mà bạn muốn theo các giai đoạn bằng cách sử dụng các câu lệnh sau:
-
TẠO XEM SKI_CUST1 AS SELECT FirstName, LastName, Street, City, State, Zipcode, InvoiceNumber FROM CUSTOMER JOIN INVOICE S US DỤNG (CustomerID); TẠO VIEW SKI_CUST2 AS SELECT Tên, Họ, Phố, Thành phố, Tiểu bang, Mã bưu điện, ProductID FROM SKI_CUST1 CHUYỂN NHẬP TRONG S US DỤNG (InvoiceNumber); TẠO VIEW SKI_CUST3 AS SELECT Tên, Họ, Phố, Thành phố, Tiểu bang, Mã Zip, Loại FROM SKI_CUST2 THAM GIA SẢN PHẨM S US DỤNG (ProductID); TẠO VIEW SKI_CUST AS SELECT DISTINCT Tên, Họ, Phố, Thành phố, Tiểu bang, Mã bưu cục FROM SKI_CUST3 WHERE CATEGORY = 'Ski';
-
Các câu lệnh CREATE VIEW kết hợp dữ liệu từ nhiều bảng bằng cách sử dụng toán tử JOIN.
Dưới đây là một tóm lược của bốn câu lệnh CREATE VIEW: Câu lệnh đầu tiên kết hợp các cột từ bảng CUSTOMER với một cột của bảng INVOICE để tạo ra khung nhìn SKI_CUST1. Câu lệnh thứ hai kết hợp SKI_CUST1 với một cột từ bảng INVOICE_LINE để tạo chế độ xem SKI_CUST2.
Câu lệnh thứ ba kết hợp SKI_CUST2 với một cột từ bảng PRODUCT để tạo chế độ xem SKI_CUST3.
Câu lệnh thứ tư lọc tất cả các hàng không có danh mục Ski. Kết quả là chế độ xem (SKI_CUST) có chứa tên và địa chỉ của tất cả khách hàng đã mua ít nhất một sản phẩm trong danh mục Trượt tuyết.
Từ khoá DISTINCT trong mệnh đề SELECT CREATE VIEW thứ tư đảm bảo rằng bạn chỉ có một mục cho mỗi khách hàng, ngay cả khi một số khách hàng mua nhiều mặt hàng trượt tuyết.