Bài tập 1: Sử dụng truy vấn nâng cao 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…

7 phản hồi

  1. HHOA viết:

    KO CO LOI GIA .

  2. Bich viết:

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

    • Phan Tiến viết:

      Em tham khảo đáp án này:
      Câu 4:
      SELECT *
      INTO XuLyDH
      FROM DatHang
      WHERE NgayXL > ‘2002-10-05’;
      Câu 5:
      INSERT INTO XuLyDH
      FROM TOP 1 * FROM DatHang

  3. Liên viết:

    câu 9 làm sao ạ

    • 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);

  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). […]

Bình luận

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

2 Shares
Share via