Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: [SQL 10.1] Unique index trên email khách hàng

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 10: Index & Transaction + Review toàn bộ khóa — khóa SQL

    Mỗi khách hàng phải có email riêng, nhưng cột email cho phép NULL (hiện có 5 khách hàng chưa có email). Hãy tạo unique index tên ux_Customers_email trên Customers(email) sao cho:

    • không cho phép hai khách hàng trùng email;
    • nhiều khách hàng cùng email IS NULL vẫn hợp lệ.

    Chú ý khác biệt: MySQL cho phép nhiều NULL trong unique index. SQL Server chỉ cho phép một NULL trong unique index thường, nên phải dùng filtered index (... WHERE email IS NOT NULL) — nếu không câu CREATE UNIQUE INDEX sẽ báo lỗi vì dữ liệu hiện có đã có nhiều NULL.

    Hệ thống chấm sẽ thử chèn một khách hàng trùng email KH2 (phải bị từ chối), một khách hàng có email mới và một khách hàng có email NULL (đều phải vào được), rồi in thông tin index cùng số khách hàng mới thực sự có mặt.

    • Định dạng đầu vào:

      Bảng Customers(email).

    • Định dạng đầu ra:

      Một dòng: index_name, column_name, thứ tự cột, is_unique, số KH mới (id >= 901), tổng số KH.

    Ví dụ:

    Đầu vào:

    Đầu ra:

    ux_Customers_email	email	1	1	2	42

    Giải thích:

    Dòng trùng email bị từ chối nên chỉ có 2 khách hàng mới (902, 903) vào được.

    Chủ đề

    📊 SQLSQLSQL: Buổi 10 – Index, Transaction & CapstoneTất cả môn học

    Đang tải editor...