SQL Server 2000 - Các câu lệnh truy vấn dữ liệu
Ý nghĩa hoạt động của câu lệnh SELECT FROM dùng để cho phép bạn có thể chọn lựa các dữ liệu cần thiết từ một hoặc nhiều bảng có quan hệ bên trong một cơ sở dữ liệu.
Câu lệnh này thường được dùng nhiều bên trong Transaction-SQL. Tuy nhiên cũng giống như cú pháp của lệnh CREATE TABLE, bạn vẫn có thể sử dụng cùng lúc đồng thời đầy đủ các mệnh đề của lệnh SELECT FROM.
: Các câu lệnh truy vấn dữ liệu – Lệnh UPDATE SET Các dữ liệu sau khi được lưu trữ vào bên trong bảng chưa đảm bảo rằng các giá trị đó sẽ đúng mãi mãi. Đôi khi các giá trị này cũng cần phải được thay đổi lại cho đúng theo một yêu cầu nào đó. Bằng tiện ích Enterprise Manager, bạn có thể thay đổi trực tiếp các giá trị tại các dòng dữ liệu hiện có bên trong bảng trên màn hình hiển thị các dòng dữ liệu. Bên cạnh đó trong các trường hợp cần sửa đổi đồng thời nhiều dòng dữ liệu bên trong một bảng, bạn sẽ sử dụng lệnh UPDATE SET. Tuy nhiên khi sử dụng lệnh này bạn không thể khôi phục lại các giá trị sau khi thay đổi. Cú pháp đầy đủ của lệnh UPDATE SET được mô tả như sau : Cúp pháp : Trong đó : • Tên bảng : tên bảng có chứa các dòng dữ liệu muốn sửa đổi. • Tên cột : tên cột muốn sửa đổi giá trị dữ liệu. Bạn có thể thay đổi giá trị của nhiều cột bên trong một bảng trong cùng một câu lệnh UPDATE SET. • Biểu thức : là một giá trị cụ thể hoặc một hàm tính toán mà giá trị trả về của nó sẽ được cập nhật vào tên cột trong bảng chỉ định trước đó. • Tên bảng1, tên bảng2 : tên các bảng có quan hệ dữ liệu, được dùng để kết nối quan hệ trong khi sửa đổi dữ liệu. • Điều kiện sửa đổi : là biểu thức luận lý chỉ định các dòng dữ liệu phải thỏa điều kiện đưa ra thì mới bị sửa đổi. Lưu ý : Trong lệnh UPDATE nếu không có sử dụng mệnh đề WHERE thì tất cả các mẫu tin trong bảng sẽ bị sửa đổi. Ví dụ : Để có được tổng trị giá của các phiếu nhập hàng. Bạn có thể thêm một cột mới có tên TGNHAP (trị giá nhập) trong bảng PNHAP. Sử dụng lệnh ALTER TABLE để thêm vào một cột như sau : Sau đó sử dụng lệnh UPDATE SET có kết hợp truy vấn con để tính ra tổng giá trị nhập dựa vào giá trị dữ liệu của các cột SLNHAP và TGNHAP trong bảng CTPNHAP theo từng số phiếu nhập hàng. Cuối cùng kiểm tra lại kết quả sau khi đã thực hiện cập nhập tính giá trị cho cột trị giá nhập (TGNHAP). Kết quả truy vấn trả về : Ví dụ : Đề giảm giá 10% cho tất cả các phiếu bán hàng trong ngày cuối cùng của tháng 01/2002. Bạn sử dụng lệnh UPDATE SET như sau : Tóm lại việc cập nhật các dữ liệu trong bảng bao gồm các hành động thêm, hủy và sửa đổi dữ liệu. Các hành động này chỉ tác động đến dữ liệu bên trong của một và chỉ một bảng mà thôi. Tuy nhiên bên trong các lệnh INSERT … SELECT, DELETE, UPDATE SET, bạn có thể tham chiếu đến một hoặc nhiều bảng khác đề tạo ra các kết nối quan hệ nhằm lấy ra thông tin của các bảng khác dùng trong các điều kiện so sánh bên trong mệnh đề WHERE. Bạn nên thận trọng khi sử dụng lệnh DELETE và UPDATE SET vì khi đó bạn sẽ không thể phục hồi lại dữ liệu cũ trước đó. Trước khi thực hiện các lệnh này, bạn nên tạo ra bảng dữ liệu dự phòng (backup) bằng lệnh SELECT INTO hoặc chèn thêm các cột tạm vào bên trong bảng để chứa giá trị trước khi thay đổi. Ngoài ra nếu hiểu rõ chế độ giao tác (transaction) là gì thì bạn nên thực hiện các hành động cập nhật dữ liệu bên trong các giao tác bởi vì trong chế độ này bạn có thể phục hồi lại các giá trị dữ liệu đã bị cập nhật bên trong bảng. SQL Server 2000 : Các câu lệnh truy vấn dữ liệu – Lệnh DELETE FROM Trái ngược với hành động thêm mới dữ liệu vào bảng, bạn có thể hủy bỏ các dòng dữ liệu hiện đang có trong bảng khi không còn sử dụng nữa. Với hành động này, bạn không thể khôi phục lại các dữ liệu sau khi đã ra lệnh hủy bỏ nó. Lệnh DELETE FROM bên dưới cho phép bạn hủy bỏ các dòng dữ liệu hiện đang có bên trong một bảng. Cú pháp : Trong đó : • Tên bảng : tên bảng có các dòng dữ liệu muốn hủy bỏ. • Tên bảng1, tên bảng2 : tên các bảng có quan hệ dữ liệu, được dùng để kết nối các quan hệ nhằm tra cứu các thông tin trong khi xóa dữ liệu. • Điều kiện xóa dữ liệu : là biểu thức luận lý chỉ định các dòng dữ liệu phải thỏa điều kiện đưa ra thì mới bị hủy bỏ. Lưu ý : Trong lệnh DELETE nếu quên không sử dụng mệnh đề WHERE thì tất cả các dòng dữ liệu hiện đang có bên trong bảng dữ liệu sẽ bị hủy tất cả. Ví dụ : Để hủy bỏ các nhà cung cấp mà công ty chưa bao giờ đặt hàng. Bạn sử dụng lệnh DELETE như sau : Nhận xét thấy rằng trong ví dụ này sử dụng mệnh đề LEFT JOIN để thay đổi ưu tiên quan hệ dữ liệu bên bảng NHACC, kế tiếp trong mệnh đề WHERE DH.SODH IS NULL dùng để chỉ định việc xóa đi những nhà cung cấp nào chưa có số đặt hàng (số đặt hàng đang là trống). Bạn cũng có thể sử dụng truy vấn con để thực hiện hành động hủy bỏ các nhà cung cấp trong bảng NHACC mà công ty chưa bao giờ đặt hàng bằng câu lệnh như sau : Nhận xét thấy rằng kết quả của truy vấn con sẽ trả về tập hợp các nhà cung cấp mà công ty đã đặt hàng, sau đó trong mệnh đề WHERE MANHACC NOT IN dùng để xác định các nhà cung cấp không nằm trong tập hợp các nhà cung cấp đã được đặt hàng. Ví dụ : Để hủy bỏ các đơn đặt hàng trong tháng 01/2002. Bạn sử dụng lệnh DELETE như sau : Hệ thống Microsoft SQL Server sẽ xuất hiện thông báo lỗi vì việc xóa dữ liệu trong bảng DONDH sẽ vi phạm ràng buộc khóa ngoại bên bảng CTDONDH. Thông thường khi hủy bỏ các dòng dữ liệu hiện có bên trong một bảng nào đó nếu bạn vô tình vi phạm các ràng buộc toàn vẹn dữ liệu về khóa ngoại đã được định nghĩa trước đó thì tuyệt đối dữ liệu sẽ không bị hủy ra khỏi bảng. Muốn tránh những sai sót này, trước tiên bạn cần phải hủy bỏ dữ liệu bên nhánh quan hệ nhiều (nhánh quan hệ con) trước. Do đó, theo ví dụ trên, bạn cần phải xóa đi chi tiết các đơn đặt hàng có liên quan trong tháng 01/2002 bên bảng CTDONDH. Thực hiện truy vấn như sau : Trong câu lệnh truy vấn này, bạn muốn xóa các dòng dữ liệu trong bảng CTDONDH, tuy nhiên cần phải liên kết thêm bảng DONDH vào để có thời gian chỉ lọc ra các đơn đặt hàng trong tháng 01/2002. Sau đó tiếp tục cho thực hiện lại truy vấn hủy bỏ các đơn đặt hàng trong tháng 01/2002 ở ví dụ trước đó. Kết quả truy vấn chỉ trả về thành công khi nòa các đơn đặt hàng trong tháng 01/2002 chưa được nhập hàng về (dữ liệu liên quan của các đơn đặt hàng chưa có trong bảng PNHAP), ngược lại khi các đơn đặt hàng này đã có nhập hàng về rồi thì hệ thống sẽ xuất hiện thông báo. Bởi vì bảng PNHAP đã định nghĩa có quan hệ khóa ngoại với bảng DONDH theo cột số đặt hàng trước đó. Tóm lại việc hủy bỏ dữ liệu bên trong một bảng bằng lệnh DELETE có thể cùng lúc sẽ hủy bỏ được nhiều dòng thỏa điều kiện đưa ra. Kết quả của lệnh truy vấn này đôi khi có thể gây ra lỗi nếu chúng có vi phạm các ràng buộc toàn vẹn khóa ngoại bên nhánh quan hệ dữ liệu nhiều. Ngoài ra bạn cũng có thể sử dụng tiện ích Enterprise Manager để hủy bỏ các dòng dữ liệu hiện có bên trong bảng. Chọn chức năng Open Table (Return all rows trong thực đơn tắt sau khi nhấn chuột phải trên tên bảng muốn hủy bỏ các dòng dữ liệu. Trong màn hình hiển thị các dòng dữ liệu trong bảng, đánh dấu chọn ra các dòng dữ liệu liên tiếp nhau muốn hủy bỏ, nhấn phím Del và chọn Yes đề đồng ý việc hủy bỏ các dòng đã chọn. Cách thức hủy bỏ dữ liệu trong tiện ích Enterprise Manager SQL Server 2000 : Các câu lệnh truy vấn dữ liệu – Lệnh INSERT INTO Lệnh truy vấn INSERT TO cho phép bạn thêm mới một hoặc nhiều dòng dữ liệu vào bên trong một bảng. Trước tiên bạn sẽ làm quen với lệnh INSERT TO là lệnh chỉ cho phép bạn thêm mới một dòng dữ liệu vào bên trong bảng. Cú pháp : Trong đó : • Tên bảng : tên bảng được thêm mới dòng dữ liệu. • Danh sách cột : danh sách tên các cột có trong bảng. Bạn có thể không cần chỉ định ra tên của các cột, tuy nhiên khi đó danh sách các giá trị mà bạn đưa vào phải theo đúng thứ tự vật lý của các cột bên trong bảng khi tạo cấu trúc bảng trước đó. Ví dụ : Để thêm một vật tư mới vào bảng VATTU, bạn sử dụng lệnh INSERT To như sau : Hoặc bạn cũng có thể thực hiện nhanh lệnh như sau : Tuy nhiên lúc bấy giờ câu lệnh thứ hai chỉ đúng khi thứ tự của các cột trong bảng VATTU phài là : mã vật tư, tên vật tư, đơn vị tính và tỷ lệ phần trăm. Trong trường hợp khi bạn có một danh sách các dữ liệu hiện đang có bên trong một hoặc nhiều bảng khác nhau, theo yêu cầu muốn các dữ liệu này sẽ được thêm mới vào bên trong một bảng. Nếu bảng này chưa có trong cơ sở dữ liệu thì bạn có thể sử dụng lệnh SELECT TO như đã trình bày trước đây để sao chép dữ liệu và tạo cấu trúc cho bảng mới. Tuy nhiên nếu theo yêu cầu muốn bạn phải chèn thêm (append) các dòng dữ liệu này vào bảng dữ liệu hiện có trong cơ sở dữ liệu thì bắt buộc bạn phải sử dụng lệnh INSERT … SELECT. Cú pháp : Trong đó : • Tên bảng : tên bảng được thêm các dòng dữ liệu mới. • Các mệnh đề của lệnh SELECT bên trên hoàn toàn giống như lệnh SELECT FROM. Ví dụ : Để tính ra tổng số lượng nhập, tổng số lượng xuất của các vật tư trong tháng 01/2002, sau đó lấy các dữ liệu này thêm mới vào bảng TONKHO để cập nhật lại tình hình nhập xuất hoàng hóa trong tháng 01/2002, bạn sử dụng các lệnh như sau : Trước tiên tạo ra bảng ảo dùng để tính tổng số lượng nhập của các vật tư trong tháng 01/2002. Kế tiếp tạo ra bảng dùng để tính tổng số lượng xuất của các vật tư trong tháng 01/2002. Sử dụng lệnh INSERT … SELECT để thêm dữ liệu vào bảng TONKHO. Trên đây chỉ là ví dụ về lệnh INSERT … SELECT, trong thực tế việc cập nhật dữ liệu trong bảng TONKHO sẽ hoàn toàn được tự động thực hiện thông qua các hành động nhập xuất vật tư. Để làm được việc này, bạn cần biết đến khái niệm trigger bên trong bảng. Thông thường khi thêm mới dữ liệu vào bảng nếu bạn vô tình có vi phạm các ràng buộc toàn vẹn dữ liệu đã định nghĩa trước đó thì tuyệt đối dữ liệu sẽ không được lưu vào bên trong bảng. Một vài ràng buộc toàn vẹn dữ liệu thường vi phạm là : khóa ngoại, miền giá trị không được phép bỏ trống dữ liệu khi thêm mới. Tóm lại việc thêm mới dữ liệu vào bên trong bảng băng lệnh INSERT có thể được thêm từng dòng một (INSERT INTO) hoặc cùng lúc nhiều dòng (INSERT … SELECT). Ngoài ra bạn cũng có thể sử dụng tiện ích Enterprise Manager để nhập mới dữ liệu trực tiếp vào bên trong bảng. Chọn chức năng Open Table (Return all rows) trong thực đơn tắt sau khi nhấn chuột phải trên tên bảng muốn nhập mới dữ liệu. Trong màn hình hiển thị các dòng dữ liệu trong bảng, nhập thông tin dữ liệu mới tại dòng dữ liệu trắng bên dưới cùng. Màn hình hiển thị các dòng dữ liệu trong bảng
File đính kèm:
- SQL Server 2000 - Các câu lệnh truy vấn dữ liệu.doc