Bài tập 1: Sử dụng truy vấn nâng cao SQL

Tham khảo thêm

Đề hoàn thành các bài tập phía dưới, các bạn tham nên đọc các bài viết vể sử dụng câu lệnh SQL:

  1. Cơ sở dữ liệu và Câu lệnh SQL
  2. Thực thi câu lệnh SQL

Yêu cầu

Sử dụng hệ quản trị CSDL SQL Server thực hiện các công việc sau:

  1. Tạo một CSDL mới có tên QLKhachHang (sử dụng SQL Management Studio (SMS) hoặc Query Editor (QE))
  2. Tạo 2 bảng dữ liệu và chèn dữ liệu vào các bảng như ở bên dưới (sử dụng SMS hoặc QE):

Bảng KhachHang

IdKhachHang
(Int)
TenKH
(nVarChar(50))
1 Nguyễn Tuấn Anh
2 Trần Văn Biên
3 Nguyễn Đức Dũng
4 Trần Hiếu
5 Lê Đức Chiến
6 Trần Hài Hả

Bảng DatHang

IdDatHang
(Int)
IdKhachHang
(Int)
TenSP
(nvarchar(50))
NgayXL

(datetime)

1 2 Iphone 7 ‘2002-12-01’
2 3 Samsung Note 5 ‘2000-03-02’
3 2 Ipad 2 mini ‘2003-08-03’
4 1 Lenovo ‘2001-05-12’
5 4 Asus ‘2002-10-04’
6 7 Mac Pro ‘2002-03-08’
7 8 Sony Vio ‘2002-05-02’
  1. Truy vấn dữ liệu sử dụng câu lệnh Select cùng với sử dụng JOIN (sử dụng QA)
    • Inner Join
    • Left Outter Join
    • Right Outer Join
    • Full Outer Join
    • Cross Join

Kế quả của câu truy vấn phải được hiển thị theo định dạng sau

IdDatHang TenKH TenSP NgayXL
Mách nhỏ: Dựa trên dữ liệu cung cấp và kiến thức của bạn về các kiểu JOIN, bạn hãy đoán kết quả rồi sau đó so sánh kết quả với mỗi câu lệnh Select. Bạn cũng có thể sử dụng từ khoá As để đặt một tên cột khác cho cột trong các câu truy vấn.
  1. Sử dụng câu lệnh “Select * Into…From” để tạo một bảng mới đặt tên là “XuLyDH” và chứa dữ liệu trong bảng này với dữ liệu lấy từ bảng DatHang thoả mãn điều kiện NgayXL trước ngày ‘2002-10-05’. (sử dụng QE)
  2. Sử dụng câu lệnh “Insert Into…Select” để lấy 1 bản ghi TOP từ “DatHang” và chèn vào bảng “XuLyDH” (sử dụng QE)
  3. Delete một bản ghi từ bảng XyLyDH thoả mãn điều kiện NgayXL là ‘2002-10-04’. (sử dụng QE)
  4. Sử dụng Union để hợp dữ liệu từ hai tập dữ liệu DatHangXuLyDH thành một tập dữ liệu. (sử dụng QA)
  5. Áp dụng Constraints (sử dụng SSM hoặc QE)
  6. Áp dụng Primary Constraint cho các cột “Id” trong các bảng trên.
  7. Áp dụng Foreign Key Constraint cho bảng DatHang.
  8. Áp dụng Check Constraint để cột NgayXL có dữ liệu ngày trong khoảng ‘1970-01-01’ – ‘2050-01-01’ và thử chèn một bản ghi không hợp lệ với điều kiện trên để xem SQL có chạy không.
  9. Áp dụng Unique Constraint cho cột TenKH của bảng KhachHang
  10. Back up cơ sở dữ liệu và Restore tới một chỗ khác (có thể trên một server khác hoặc trên cùng một server nhưng với tên CSDL khác) (sử dụng SSM hoặc QE)
  11. TruncateDrop bảng XuLyDH (sử dụng QE)

Có thể bạn sẽ thích…

11 phản hồi

  1. Bich viết:

    câu 5 giải như thế nào ạ

    • Phan Tiến viết:

      Liên quan đến tạo Primary Contrainsts, trước khi làm phần này bạn cần hiểu rõ thế nào gọi là Primary Key Contraints?
      1. Ràng buộc PRIMARY KEY xác định duy nhất mỗi bản ghi trong bảng.
      2. Các primary keys phải chứa các giá trị duy nhất và không chứa các giá trị NULL.
      3. Một bảng chỉ có thể có MỘT khoá chính (primary key), và trong một bảng, khoá chính này có thể là một cột hoặc nhiều cột (fields)
      Theo định nghĩa trên, bạn có thể sử dụng câu lệnh SQL để cập nhật cho các bảng ví dụ:

      --Với bảng Khách Hàng khoá chính chỉ có 1 cột
      ALTER TABLE KhachHang
      ADD PRIMARY KEY (IdKhachHang);

      --Với bảng Đặt Hàng khoá chính sẽ là 2 cột IDDatHang và IdKhachHang
      ALTER TABLE Persons
      ADD CONSTRAINT PK_DatHang PRIMARY KEY (IdDatHang, IdKhachHang);

  2. Nguyễn Xuân Lâm viết:

    cho e hỏi về việc truy vấn ạ! e muốn viết 1 câu truy vấn mà có thể xem hết tất cả các bảng của database ấy ạ

  1. 25/05/2017

    […] Ví dụ: Giả sử ta setup một Linked Server vào Access database “QLKhachHang.mdb” trong đó các table đều tương tự như CSDL QLKhachHang trong SQL Server (được tạo ra từ  bài tập số 1). […]

Để lại một bình luận