Những lý do tốt nào để tận dụng các từ khóa SQL?


28

Dường như có rất nhiều nhà phát triển viết SQL của họ bằng cách viết hoa các từ khóa:

SELECT column
FROM table
     INNER JOIN table
     ON condition
WHERE condition
GROUP BY clause
HAVING condition

Tôi đang tự hỏi tại sao mọi người dính vào phương pháp này? Rõ ràng, đó là một quy ước được thiết lập từ lâu - nhưng tôi chưa bao giờ gặp RDBMS yêu cầu viết hoa.

Cá nhân, tôi thấy TỪ KHÓA THÌ KHÔNG NÊN gọi sự chú ý đến chính xác phần sai của truy vấn, đó là lý do tại sao tôi viết các từ khóa bằng chữ thường.

Tuy nhiên, đủ người sử dụng quy ước này mà tôi cho rằng tôi có thể đang thiếu một cái gì đó, do đó câu hỏi này.


3
Rất vui khi các từ khóa nổi bật hơn, ngay cả khi IDE của bạn làm cho văn bản từ khóa có màu khác.
Người đàn ông Muffin

3
Cách duy nhất để đối phó với việc có một Ngôn ngữ trong một Ngôn ngữ, là SHOUTcác lệnh tại trình thông dịch SQL ...
Ben DeMott

Câu hỏi của tôi cũng vậy. +1
Saeed Neamati

Viết hoa từ khóa SQL tôi có thể hiểu. Hầu hết các khai báo và truy vấn bảng tôi thấy viết hoa MỌI THỨ, bao gồm tên bảng và cột.
MPelletier

Câu trả lời:


22

Viết hoa làm cho chúng nổi bật, trái ngược với các ký tự khác trong cửa sổ truy vấn.

Lý do tôi không làm điều này vì nó là một thời gian rất lớn. Bạn có thể làm một trong hai việc:

1) Giữ phím shift của bạn trong khi gõ từ : cách quá dễ bị lỗi và chỉ là sự ngớ ngẩn.

2) Đặt mũ khóa trong suốt thời gian của từ : tiêu thụ quá nhiều thời gian.

Tôi sử dụng SQL Server và môi trường (SSMS) có cú pháp tô sáng tuyệt vời vì vậy cá nhân tôi không tin rằng viết hoa từ khóa là phổ biến ngày nay như trước đây (nếu có).

Đó là thực hành tốt trong sách và hướng dẫn trực tuyến, do đó, rõ ràng các từ khóa dành riêng là gì. Đó chỉ là một trong những điều bất thành văn.


20
@dave nhưng không giống như mã ứng dụng, các tập lệnh SQL rất có thể được xem trong trình chỉnh sửa mà không cần tô sáng cú pháp.
Aaronaught

8
@dave: Các tập lệnh SQL hoàn toàn khép kín và hầu như luôn được gửi email, nhập vào văn bản, in ra cho kiểm toán viên hoặc nhập vào các tiện ích dòng lệnh như SQL * Plus. Đây không phải là về môi trường của bạn, nó là về thời gian tồn tại của các tập lệnh SQL bên ngoài môi trường đó - điều không thực sự đáng quan tâm với mã nguồn ứng dụng vì nó không được sử dụng thực sự bên ngoài trình biên dịch / IDE.
Aaronaught

6
Các câu lệnh SQL thường xuất hiện trong các tệp nhật ký, thông báo lỗi, được nhúng trong các tài liệu XML và tất cả các vị trí mà việc tô sáng cú pháp không phải là một tùy chọn - vì vậy mọi định dạng giúp dễ đọc hơn luôn được chào đón.
James Anderson

8
-1 nếu giữ phím shift hoặc nhấn khóa mũ quá nhiều thì tôi nghĩ có vấn đề khác. Và chính xác thì 0,25 giây mà bạn đã lưu thực sự ảnh hưởng đến bất cứ điều gì?
TheLQ

2
Câu trả lời của tôi cho câu hỏi của bạn là một câu hỏi khác: bạn có viết mã SQL hàng ngày không? Và nhân 0,25 giây với số lượng mã mà nhà phát triển SQL / dba viết ...

8

Tôi thấy loại viết hoa này cung cấp một cách nhanh chóng và dễ dàng để chia nhỏ trực quan các phần khác nhau của truy vấn. Điều này kết hợp với thụt đầu dòng tốt có thể giúp dễ đọc và hiểu logic.

Cho dù điều đó có liên quan gì đến tiêu chuẩn hay không, tôi không biết. Nhưng đó là kinh nghiệm cá nhân của tôi.


7

Quay trở lại thời xưa, các từ khóa không được làm nổi bật theo bất kỳ cách nào khi bạn viết mã để cố gắng giúp mọi người phân biệt giữa các phần SQL và các đối tượng cơ sở dữ liệu của các truy vấn, nó có thể đi theo cách khác nhưng các đối tượng có xu hướng có tên dài hơn làm cho chúng trở nên đau đớn hơn để viết hoa và một số quy ước đặt tên đối tượng là trường hợp cụ thể.

Cá nhân tôi thấy nó rất dễ đọc nếu chúng không được viết hoa nhưng nhiều người đã quen đọc chúng theo cách đó, nó sẽ ném chúng đi nếu bạn không viết hoa.


4
Tôi vừa mới được tiếp xúc với những người thực sự làm đảo ngược những quy ước, tận tên đối tượng và để lại các từ khóa trong chữ thường; đó là chói tai, để nói rằng ít nhất.
Aaronaught

6

SQL là một ngôn ngữ hướng mệnh đề, nhiều hơn bất kỳ thứ gì tôi đã trải nghiệm. Bạn đã có mệnh đề SELECT và mệnh đề TỪ của bạn và mệnh đề THAM GIA và mệnh đề WHERE của bạn. ĐẶT HÀNG B, NG, NHÓM THEO, v.v.

Viết hoa những từ khóa này giúp bạn tách biệt các mệnh đề riêng biệt một cách trực quan. Điều này đặc biệt hữu ích khi trong một trong những tình huống gỡ lỗi khó khăn khi bạn xuất SQL của mình trong một nhận xét HTML, sau đó sao chép vào một bảng điều khiển. Khó chịu, nhưng tất cả chúng ta đã ở đó. Thật tốt khi có một số trợ giúp để xem mỗi phần của tuyên bố bắt đầu.


2

Cá nhân, tôi thấy TỪ KHÓA THÌ KHÔNG NÊN gọi sự chú ý đến chính xác phần sai của truy vấn, đó là lý do tại sao tôi viết các từ khóa bằng chữ thường.

Như đã được chỉ ra, với IDE cũ, bạn không có nhiều lựa chọn ngoài việc phân biệt văn bản. Khi bạn chỉ ra, làm cho các từ khóa nổi bật thu hút sự chú ý của bạn khỏi nơi cần phải có. Vấn đề là bạn biết các từ khóa luôn có thể được viết hoa, trong khi các công cụ khác có thể chứa các chữ và số nhận dạng phân biệt chữ hoa chữ thường. Điều này dẫn đến con đường ít kháng cự nhất là chỉ viết hoa các từ khóa.


-1

Trong trường hợp của tôi, tôi thích viết hoa các từ khóa, độc lập với đánh dấu cú pháp. Hãy tưởng tượng rằng bạn không có trình soạn thảo SQL phù hợp và bạn cần viết / chỉnh sửa hoặc mở tập lệnh của mình trong Notepad hoặc Wordman. Các trình soạn thảo này không có một cú pháp tô sáng.

Tôi không chú ý nhiều đến việc làm nổi bật cú pháp của SQL Server vì lý do tương tự như tôi đã mô tả ở trên, nhưng thật hữu ích (tôi thấy chán khi thấy tất cả các mã màu đen). Tôi đã luôn sử dụng chữ hoa để phân biệt các từ khóa với các biến, hằng, tên, vân vân.


Điều này đáng lẽ phải là một bình luận, nhưng bạn không có tiếng tăm để đăng một ...
Adam Zuckerman

Tôi đã đề cập đến vấn đề này trong câu hỏi ban đầu - sử dụng VỐN cho các từ khóa thu hút sự chú ý của độc giả đến phần ít quan trọng nhất của truy vấn hoặc câu lệnh.
Bevan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.