Về lý thuyết thì mọi thứ đều ổn, nhưng luôn có những trường hợp khi mã của bạn có thể bị lỗi.
Ví dụ:
a) blind insert
:
INSERT INTO tab_name
VALUES (1, 'b', 'c');
Chèn mù là khi truy vấn CHÈN không chỉ định cột nào nhận dữ liệu được chèn.
Tại sao điều này là một điều tồi tệ?
Vì lược đồ cơ sở dữ liệu có thể thay đổi. Các cột có thể được di chuyển, đổi tên, thêm hoặc xóa. Và khi đúng như vậy, một trong ít nhất ba điều có thể xảy ra:
Truy vấn không thành công. Đây là tình huống tốt nhất. Ai đó đã xóa một cột khỏi bảng đích và bây giờ không có đủ cột để chèn vào hoặc ai đó đã thay đổi loại dữ liệu và loại được chèn không tương thích, v.v. Nhưng ít nhất dữ liệu của bạn không bị hỏng và thậm chí bạn có thể biết sự cố tồn tại do thông báo lỗi.
Truy vấn tiếp tục hoạt động và không có gì sai. Đây là trường hợp trung bình-xấu nhất. Dữ liệu của bạn không bị hỏng nhưng những con quái vật vẫn ẩn náu dưới gầm giường.
- Truy vấn tiếp tục hoạt động, nhưng bây giờ một số dữ liệu đang được chèn vào một nơi nào đó mà nó không thuộc về. Dữ liệu của bạn đang bị hỏng.
b) ORDER BY oridinal
SELECT *
FROM tab
ORDER BY 1;