Які вагомі причини для використання великих ключових слів SQL?


28

Здається, існує багато розробників, які пишуть свій SQL, використовуючи великі літери:

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

Мені цікаво, чому люди дотримуються такого підходу? Зрозуміло, що це давно встановлена ​​конвенція - але я ніколи не стикався з RDBMS, що вимагає використання великих літер.

Особисто я знаходжу КЛЮЧОВІ СЛОВА, ЯКІ ПОВЕРНЕННЯ звертають увагу саме на неправильну частину запиту, саме тому я пишу ключові слова в малі літери.

Тим не менш, достатньо людей використовують цю умову, і я думаю, що я можу щось пропустити, звідси і це питання.


3
Приємно, що ключові слова виділяються більше, навіть якщо ваш IDE робить текст ключового слова іншого кольору.
The Muffin Man

3
Єдиний спосіб впоратися з наявністю мови в межах мови - SHOUTце команди в інтерпретаторі SQL ...
Бен ДеМотт

Моє запитання теж. +1
Саїд Неаматі

Великі ключові слова SQL, які я можу зрозуміти. Більшість декларацій та запитів таблиці, які я бачу, використовують великі літери ВСЕ, імена таблиць та стовпці, що входять.
MPelletier

Відповіді:


22

Капіталізація робить їх виділеннями на відміну від інших символів, які знаходяться у вікні запиту.

Причиною я цього не роблю, оскільки це величезна витрата часу. Ви можете зробити одну з двох речей:

1) Утримуйте клавішу зсуву, вводячи слово : занадто схильний до помилок і просто випадковий.

2) Надягайте шапки блокування на час слова : трохи занадто багато часу.

Я використовую SQL Server, а середовище (SSMS) має чудове підкреслення синтаксису, тому я особисто не вірю, що велика капіталізація ключових слів є такою ж поширеною в наші дні, як і раніше (якщо вона взагалі є).

Хоча це найкраща практика в книгах та онлайн-підручниках, тому очевидно, що таке зарезервовані ключові слова. Це просто одна з тих неписаних речей.


20
@dave, але на відміну від коду програми, SQL-сценарії, швидше за все, переглядаються в редакторі без виділення синтаксису.
Aaronaught

8
@dave: SQL-скрипти повністю автономні і майже незмінно надходять по електронній пошті, набираються в текстові області, роздруковуються для аудиторів або вводяться в утиліти командного рядка, такі як SQL * Plus. Це не про ваше оточення, а про термін служби SQL-скриптів поза цим середовищем - те, що насправді не стосується вихідного коду програми, оскільки він не має реального використання поза компілятором / IDE.
Aaronaught

6
Записи SQL часто з’являються у файлах журналу, повідомленні про помилки, вбудованому в XML-документи та всілякі місця, де виділення синтаксису не є можливим - тому будь-яке форматування, яке полегшує читання, завжди вітається.
Джеймс Андерсон

8
-1 якщо затримка зсуву або натискання блокування шапок занадто багато, то я думаю, що є й інші проблеми. А скільки точно впливає на те, що ви зберегли .25 секунди?
TheLQ

2
Моя відповідь на ваше запитання - це ще одне питання: ви щодня пишете SQL-код? І помножте .25 секунд на кількість коду, який пише розробник SQL / dba ...

8

Я вважаю, що така велика література забезпечує швидкий та простий спосіб візуально розбити різні частини запиту. Це в поєднанні з хорошим відступом може допомогти читати та розуміти логіку.

Чи це стосується чи ні, як цей стандарт виник, я не знаю. Але це мій особистий досвід.


7

Колись колись ви писали код, ключові слова жодним чином не виділялися, тому це було спробою допомогти людям розмежувати між частинами SQL та предметами бази даних частинами запитів, це могло піти іншим шляхом, окрім об'єктів мають тенденцію мати більш довгі імена, що спричиняє велику велику користь, а деякі угоди про іменування об'єктів залежать від конкретного випадку.

Особисто я вважаю це так само легко читати, якщо вони не мають великої літери, але багато людей настільки звикли читати їх таким чином, це відкидає їх, якщо ви не використовуєте великі літери.


4
Я недавно був виставлений на людей , які на насправді роблять протилежне угоду, спекулюючи імена об'єктів і залишаючи ключові слова в нижньому регістрі; як мінімум, це жалібно.
Aaronaught

6

SQL - мова, орієнтована на пропозиції, набагато більше, ніж усе, що я відчував. У вас є пункт SELECT, і ваш FROM, і ваш JOIN, і WHERE. ЗАМОВЛЕННЯ ПО, ГРУППУ ПО, тощо, тощо.

Використання цих ключових слів допоможе вам візуально відокремити окремі пропозиції. Це особливо зручно, коли в одній із таких складних ситуацій налагодження, коли ви виводите свій SQL в коментар HTML, а потім копіюєте вставку в консоль. Неприємно, але ми всі були там. Добре мати допомогу, щоб побачити, звідки починається кожен фрагмент заяви.


2

Особисто я знаходжу КЛЮЧОВІ СЛОВА, ЯКІ ПОВЕРНЕННЯ звертають увагу саме на неправильну частину запиту, саме тому я пишу ключові слова в малі літери.

Як було зазначено, у старих IDE у вас не було багато варіантів, крім корпусу для розмежування тексту. Як ви зазначаєте, виділення ключових слів відтягує вашу увагу від того, де воно має бути. Проблема полягає в тому, що ви знаєте, що ключові слова завжди можна використовувати з великої літери, тоді як інші матеріали можуть містити літерали та ідентифікатори, залежні від регістру. Це призводить до шляху найменшого опору до простого використання великих слів.


-1

У моєму випадку я вважаю за краще використовувати великі літери, незалежно від виділення синтаксису. Уявіть, що у вас немає належного редактора SQL, і вам потрібно писати / редагувати або відкривати свої сценарії в Блокноті або WordPad. У цих редакторах немає підсвічування синтаксису.

Я не приділяю великої уваги виділенню синтаксису SQL Server з тієї ж причини, що я описав вище, але це корисно (мені нудно бачити весь код чорним кольором). Я завжди використовував великі регістри, щоб відрізнити ключові слова від моїх змінних, констант, імен, тощо.


Це повинен був бути коментарем, але ви не маєте репутації розміщувати його ...
Адам Цукерман

Я висвітлював це в оригінальному запитанні - використання CAPITALS для ключових слів привертає увагу читачів до найменш важливої ​​частини запиту чи заяви.
Беван
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.