Tôi đang cố gắng làm quen với Postgres (9.2) sau một chút công bằng của việc sử dụng MySQL (5.1), vì tôi đã bị một số ít MySQL's gotchas cắn. Tuy nhiên, trong vòng năm phút đầu tiên của tôi với Postgres tôi chạy vào một trong its gotchas, mà tôi chắc chắn rằng tất cả mọi người hits:Tại sao PostgreSQL mặc định mọi thứ trong trường hợp thấp hơn?
- Theo mặc định, PostgreSQL chuyển đổi tất cả mọi thứ mà không được trích dẫn sang chữ thường.
Đây không phải là quá lớn của một thỏa thuận với tôi, vì có một vài cách giải quyết rõ ràng:
- đóng gói tất cả mọi thứ trong dấu ngoặc kép.
- Cho phép mọi thứ được đặt tên theo kiểu chữ thường.
Nhưng tôi tự hỏi tại sao. Xem xét bao nhiêu tranh chấp tôi tưởng tượng ra quyết định thiết kế này gây ra, tôi ngạc nhiên rằng tôi không thể tìm thấy bất kỳ lý do trên internet. Có ai có một lời giải thích kỹ lưỡng, hoặc tốt hơn là một liên kết đến một số tuyên ngôn nhà phát triển, là tại sao Postgres được thiết kế theo cách này? Tôi quan tâm.
Bạn có hỏi về điều này không? http://stackoverflow.com/questions/153944/is-sql-syntax-case-sensitive?rq=1 –
AFAIK, tiêu chuẩn cho biết rằng số nhận dạng không được bỏ phiếu nên được xếp thành trường hợp trên, [PostgreSQL gấp thành chữ thường] (http : //stackoverflow.com/a/8736088/479863) thay thế. Gấp để trên hoặc dưới trường hợp không nên quan trọng trừ khi bạn chỉ trích dẫn định danh của bạn đôi khi, nhưng nếu bạn đang làm điều đó thì bạn xứng đáng những gì bạn nhận được. Bạn được chào đón để 'tạo bảng Pancakes (...)' và 'select * từ Pancakes', chỉ cần không' tạo bảng "Pancakes" (...) 'và cố gắng' chọn * từ Pancakes'. MySQL mọi người dường như có thói quen kỳ quặc của backtick-trích dẫn tất cả mọi thứ, mất thói quen đó. –
@muistooshort Tôi thường nhìn thấy các tuyên bố rằng thông số SQL không xác định xem trường hợp gấp phải là trường hợp trên hay thấp hơn, chỉ rằng nó phải xảy ra. Bạn có biết nơi nó được chỉ định để gấp vào trường hợp đặc biệt? (Tôi đang tìm kiếm tài liệu tham khảo nhưng không tìm thấy nhiều đó là hữu ích vào lúc này). –