Как сделать комментарий в sql

Обновлено: 05.07.2024

В этой статье описывается синтаксис SQL запросов . В следующем операторе задана минимальная структура и синтаксис, необходимый для SELECT .

Ключевые слова SQL

Ключевые слова ( SELECT , GRANT , DELETE или CREATE ) прописаны в синтаксисе SQL и имеют в этом языке предопределенное значение. Можно использовать ключевые слова в верхнем или нижнем регистре. Следующие три запроса равнозначны:

SELECT * FROM EMPLOYEES ;
Select * FROM EMPLOYEES ;
select * FROM EMPLOYEES ;

В некоторых случаях ключевые слова могут быть сокращены. Например, ключевое слово DESCRIBE может быть использовано либо в форме DESC , либо DESCRIBE . Если мы выполним следующие запросы, то в обоих случаях получим структуру таблицы сотрудников.

DESCRIBE EMPLOYEES;
DESC EMPLOYEES;

Идентификаторы

Идентификаторы – это имена заданные разработчиками для структурных элементов базы данных: таблицы, столбцы, псевдонимы, индексы, представления. В синтаксисе последнего SQL запроса ‘EMPLOYEES’ — это идентификатор, а ‘ SELECT ‘ — ключевое слово. Правила для создания идентификаторов указываются в спецификации поставщика. Рассмотрим следующую таблицу:

Конвенции имен

Стандарт SQL не содержит никаких точных указаний по наименованиям, поэтому нужно следовать следующим основным принципам ( в том числе и в синтаксисе SQL запросов UPDATE ):

Литералы SQL

Операторы

Операторы работают с отдельными элементами данных и возвращают результат. Операторы используются в различных операциях SQL , таких как SELECT , INSERT , UPDATE или DELETE . А также при создании различных объектов базы данных, таких как функции, представления, триггеры и хранимые процедуры. MS SQL синтаксис запросов поддерживает различные типы операторов, хотя не все СУБД поддерживают все операторы.

Смотрите таблицу ниже:

Операторы Работают во
Арифметические операторыВсех базах данных.
Операторы присвоенияВсех базах данных.
Побитовые операторыMicrosoft SQL Server.
Операторы сравненияВсех базах данных.
Логические операторыDB2, Oracle, SQL Server и PostgreSQL.
Унарные операторыDB2, Oracle и SQL Server.

Приоритетность операторов

Приоритетность — это порядок, в котором база данных оценивает различные операторы в одном выражении. В синтаксисе SQL запросов при выполнении выражения, содержащего несколько операторов ( например, +, -, / ), сначала выполняются операторы с высшей приоритетностью, а затем с более низкой. При оценке операторов с одинаковой приоритетностью операторы выполняются в порядке их расстановки в выражении слева направо.

Если в выражении есть круглые скобки, то операторы в них вычисляется в первую очередь, а остальные части выражения, которые находятся вне скобок, вычисляются после этого. В следующей таблице перечислены уровни приоритетности операторов SQL от высокого к низкому.

Приоритетность операторов
( ) (выполняются в первую очередь).
+, -, ~ (унарные операторы).
*, /, % (математические операторы).
+, — (арифметические операторы).
=, >, =, , !=, !>, ! MySQL возвращают разные результаты:

SELECT 12 * 2 + 24;

Результат

Приоритетность операторов

Приоритетность операторов

SELECT 12 * (2 + 24)

Результат

Приоритетность операторов

Приоритетность операторов

Комментарии SQL

Комментарии в синтаксисе SQL запросов — это необязательный текст, который описывает, что делает программа и почему код был изменен. Компилятор всегда игнорирует комментарии. Комментарий вводится через двойное тире и пробел:
— Это комментарий SQL

В качестве альтернативы, можно использовать блок комментариев C-стиля :

Пробелы

Пробелы, как правило, игнорируются в операторах SQL , что позволяет проще форматировать код для удобства чтения.
На следующей диаграмме приведены элементы синтаксиса SQL запросов , которые составляют одиночный оператор:

Список ключевых слов SQL:

ABSOLUTEACTIONADDADMIN
AFTERAGGREGATEALIASALL
ALLOCATEALTERANDANY
AREARRAYASASC
ASSERTIONASSERTIONATATOMIC
AUTHORIZATIONBEFOREBEGINBIGINT
BINARYBITBLOBBOOLEAN
BOTHBREADTHBYCALL
CASCADECASCADEDCASECAST
CATALOGCHARCHARACTERCHECK
CLASSCLOBCLOSECOLLATE
COLLATIONCOLLECTCOLUMNCOMMIT
COMPLETIONCONDITIONCONNECTCONNECTION
CONSTRAINTCONSTRAINTSCONSTRUCTORCONTAINS
CONTINUECORRESPONDINGCREATECROSS
CUBECURRENTCURRENT_DATECURRENT_PATH
CURRENT_ROLECURRENT_TIMECURRENT_TIMESTAMPCURRENT_USER
CURSORCYCLEDATADATALINK
DATEDAYDEALLOCATEDEC
DECIMALDECLAREDEFAULTDEFERRABLE
DELETEDEPTHDEREFDESC
DESCRIPTORDESTRUCTORDIAGNOSTICSDICTIONARY
DISCONNECTDODOMAINDOUBLE
DROPELEMENTEND-EXECEQUALS
ESCAPEEXCEPTEXCEPTIONEXECUTE
EXITEXPANDEXPANDINGFALSE
FIRSTFLOATFORFOREIGN
FREEFROMFUNCTIONFUSION
GENERALGETGLOBALGOTO
GROUPGROUPINGHANDLERHASH
HOURIDENTITYIFIGNORE
IMMEDIATEININDICATORINITIALIZE
INITIALLYINNERINOUTINPUT
INSERTINTINTEGERINTERSECT
INTERSECTIONINTERVALINTOIS
ISOLATIONITERATEJOINKEY
LANGUAGELARGELASTLATERAL
LEADINGLEAVELEFTLESS
LEVELLIKELIMITLOCAL
LOCALTIMELOCALTIMESTAMPLOCATORLOOP
MATCHMEMBERMEETSMERGE
MINUTEMODIFIESMODIFYMODULE
MONTHMULTISETNAMESNATIONAL
NATURALNCHARNCLOBNEW
NEXTNONONENORMALIZE
NOTNULLNUMERICOBJECT
OFOFFOLDON
ONLYOPENOPERATIONOPTION
ORORDERORDINALITYOUT
OUTEROUTPUTPADPARAMETER
PARAMETERSPARTIALPATHPERIOD
POSTFIXPRECEDESPRECISIONPREFIX
PREORDERPREPAREPRESERVEPRIMARY
PRIORPRIVILEGESPROCEDUREPUBLIC
READREADSREALRECURSIVE
REDOREFREFERENCESREFERENCING
RELATIVEREPEATRESIGNALRESTRICT
RESULTRETURNRETURNSREVOKE
RIGHTROLEROLLBACKROLLUP
ROUTINEROWROWSSAVEPOINT
SCHEMASCROLLSEARCHSECOND
SECTIONSELECTSEQUENCESESSION
SESSION_USERSETSETSSIGNAL
SIZESMALLINTSPECIFICSPECIFICTYPE
SQLSQLEXCEPTIONSQLSTATESQLWARNING
STARTSTATESTATICSTRUCTURE
SUBMULTISETSUCCEEDSSUMSYSTEM_USER
TABLETABLESAMPLETEMPORARYTERMINATE
THANTHENTIMETIMESTAMP
TIMEZONE_HOURTIMEZONE_MINUTETOTRAILING
TRANSACTIONTRANSLATIONTREATTRIGGER
TRUEUESCAPEUNDERUNDO
UNIONUNIQUEUNKNOWNUNTIL
UPDATEUSAGEUSERUSING
VALUEVALUESVARCHARVARIABLE
VARYINGVIEWWHENWHENEVER
WHEREWHILEWITHWRITE
YEARZONE

Пожалуйста, оставьте свои комментарии по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, отклики, дизлайки, лайки, подписки!

Комментарием называется фрагмент обычного текста, оформленный специальным образом и внедренный в код SQL. Комментарии не влияют на выполнение программы, поскольку PostgreSQL удаляет их из входного потока и интерпретирует как обычные пропуски. Существует две разновидности комментариев: однострочные и многострочные.

Однострочные комментарии начинаются с двух дефисов (--) и либо находятся в отдельной строке, либо следуют за лексемами SQL (модуль лексического разбора PostgreSQL не считает комментарии лексемами, а все символы, следующие за последовательностью --, интерпретирует как пропуски). Пример однострочного комментария приведен в листинге 3.11.

Листинг 3.11. Однострочные комментарии.

Многострочные комментарии начинаются с последовательности /* и завершаются последовательностью */. Такой способ оформления комментариев хорошо знаком программистам С, но между интерпретатором PostgreSQL и компилятором С существует одно принципиальное отличие: комментарии PostgreSQL могут быть вложенными. Иначе говоря, если внутри многострочного комментария имеется другой многострочный комментарий, то закрывающая последовательность */ внутреннего комментария не закрывает внешний комментарий. Пример многострочного комментария приведен в листинге 3.12.

Листинг 3.12. Многострочные комментарии.

Допустим, имеется файл с кодом SQL, в котором необходимо закомментировать большой фрагмент и передать остаток PostgreSQL для интерпретации и выполнения. Если в этом фрагменте встречаются многострочные комментарии, PostgreSQL правильно заключает, что закрывающая последовательность */ относится к последнему открытому комментарию, а не ко всему закомментированному блоку.

Выводы

Итак, команда SQL состоит из отдельных лексем, каждая из которых может быть ключевым словом, идентификатором, защищенным идентификатором, константой или специальным символом. В табл. 3.7 структура команд SQL поясняется на примере простой команды SELECT.

Таблица 3.7. Простой запрос SQL.

SELECT id, name FROM states
Тип лексемы Ключевое слово Идентификаторы Ключевое слово Идентификатор
Описание Команда Имена полей Имя секции Имя таблицы

Как видно из таблицы, команда SELECT содержит ключевые слова SELECT и FROM. Ключевое слово FROM с лексемой states образует секцию, уточняющую смысл команды SELECT.

Лексемы id, name и states в приведенном примере являются идентификаторами. Идентификаторы Id и name определяют выбираемые поля, а идентификатор states определяет имя таблицы, из которой производится выборка. Таким образом, приведенный выше запрос приказывает PostgreSQL выбрать поля Id и name каждой записи таблицы states. В листинге 3.13 показаны результаты выполнения этого запроса.

COMMENT — задать или изменить комментарий объекта

Синтаксис

Описание

COMMENT сохраняет комментарий об объекте базы данных.

Для каждого объекта сохраняется только одна строка, так что для изменения комментария нужно просто выполнить COMMENT ещё раз для того же объекта. Чтобы удалить комментарий, вместо текстовой строки укажите NULL . При удалении объектов комментарии удаляются автоматически.

Для большинства типов объектов комментарий может установить только владелец объекта. Но так как роли не имеют владельцев, COMMENT ON ROLE для ролей суперпользователей разрешено выполнять только суперпользователям, а для обычных ролей — тем, кто имеет право CREATEROLE . Так же не имеют владельцев и методы доступа; чтобы добавить комментарий для метода доступа, нужно быть суперпользователем. Разумеется, суперпользователи могут задавать комментарии для любых объектов.

Просмотреть комментарии можно в psql , используя семейство команд \d . Имеется возможность получать комментарии и в других пользовательских интерфейсах, используя те же встроенные функции, что использует psql , а именно obj_description , col_description и shobj_description (см. Таблицу 9.68).

Параметры

имя_объекта
имя_отношения . имя_столбца
имя_агрегатной_функции
имя_ограничения
имя_функции
имя_оператора
имя_политики
имя_процедуры
имя_подпрограммы
имя_правила
имя_триггера

Имя объекта, для которого задаётся комментарий. Имена таблиц, агрегатных функций, правил сортировки, перекодировок, доменов, сторонних таблиц, функций, индексов, операторов, классов и семейств операторов, процедур, последовательностей, подпрограмм, объектов текстового поиска и статистики, типов и представлений могут быть дополнены именем схемы. При определении комментария для столбца, имя_отношения должно ссылаться на таблицу, представление, составной тип или стороннюю таблицу. имя_таблицы
имя_домена

При создании комментария для ограничения, триггера, правила или политики эти параметры задают имя таблицы или домена, к которым относится этот объект. исходный_тип

Имя исходного типа данных для приведения. целевой_тип

Имя целевого типа данных для приведения. режим_аргумента

Режим аргумента функции, процедуры или агрегата: IN , OUT , INOUT или VARIADIC . По умолчанию подразумевается IN . Заметьте, что COMMENT не учитывает аргументы OUT , так как для идентификации функции нужны только типы входных аргументов. Поэтому достаточно перечислить только аргументы IN , INOUT и VARIADIC . имя_аргумента

Имя аргумента функции, процедуры или агрегата. Заметьте, что на самом деле COMMENT не обращает внимание на имена аргументов, так как для однозначной идентификации функции достаточно только типов аргументов. тип_аргумента

Тип данных аргумента функции, процедуры или агрегата. oid_большого_объекта

OID большого объекта. тип_слева
тип_справа

Тип данных аргументов оператора (возможно, дополненный именем схемы). В случае отсутствия аргумента префиксного или постфиксного оператора укажите вместо типа NONE . PROCEDURAL

Это слово не несёт смысловой нагрузки. имя_типа

Имя типа данных, для которого предназначена трансформация. имя_языка

Имя языка, для которого предназначена трансформация. текст

Новый комментарий, записанный в виде строковой константы (или NULL для удаления комментария).

Замечания

В настоящее время механизм безопасности в части просмотра комментариев отсутствует: любой пользователь, подключённый к базе данных, может видеть все комментарии всех объектов базы. Для общих объектов, таких как базы данных, роли и табличные пространства, комментарии хранятся глобально, так что их может видеть любой пользователь, подключённый к любой базе данных в кластере. Поэтому ничего секретного писать в комментариях не следует.

этого обычно бывает недостаточно для того, чтобы обеспечить полное понимание сложной программы.

PL/SQL поддерживает два вида комментариев: однострочные и многострочные.

Синтаксис однострочного комментария

Однострочный комментарий начинается двумя дефисами (--), между которыми не может стоять пробел или какой-либо другой символ. Весь текст после двойного дефиса и до физического конца строки воспринимается как комментарий и игнорируется компилятором. Если двойной дефис стоит в начале строки, то вся строка является комментарием.

В следующем операторе IF для пояснения его логики использован однострочный комментарий:

Синтаксис многострочного комментария

Однострочные комментарии удобны для создания кратких пояснений к фрагментам кода или для временного исключения строки программы из исполнения, тогда как многострочные комментарии позволяют включать в программу длинные поясняющие тексты.

Рассмотрим в качестве примера многострочного комментария блок текста в заголовке процедуры. Символы вертикальной черты в левой части строк использованы для того, чтобы заострить внимание читателя на комментарии:

Комментарии используются для объяснения разделов инструкций SQL или для предотвращения выполнения инструкций SQL.

Примечание: примеры в этой главе не будут работать в Firefox и Microsoft Edge!

Комментарии не поддерживаются в базах данных Microsoft Access. Firefox и Microsoft Edge используют базу данных Microsoft Access в наших примерах.

Комментарии в одной строке

Комментарии одной строки начинаются с--.

Любой текст между--и конец строки будут игнорироваться (не будет выполнена).

В следующем примере в качестве пояснения используется однострочный комментарий:

Пример

В следующем примере используется однострочный комментарий для игнорирования конца строки:

Пример

В следующем примере используется однострочный комментарий для игнорирования оператора:

Пример

Многострочные комментарии

Multi-line comments start with /* and end with */.

Any text between /* and */ will be ignored.

В следующем примере в качестве пояснения используется многострочный комментарий:

Пример

В следующем примере используется многострочный комментарий для игнорирования многих инструкций:

Пример

/*SELECT * FROM Customers;
SELECT * FROM Products;
SELECT * FROM Orders;
SELECT * FROM Categories;*/
SELECT * FROM Suppliers;

Чтобы игнорировать только часть инструкции, также используйте /* */ комментарий.

В следующем примере для игнорирования части строки используется комментарий:

Пример

В следующем примере для игнорирования части оператора используется комментарий:

Пример

SELECT * FROM Customers WHERE (CustomerName LIKE 'L%'
OR CustomerName LIKE 'R%' /*OR CustomerName LIKE 'S%'
OR CustomerName LIKE 'T%'*/ OR CustomerName LIKE 'W%')
AND Country='USA'
ORDER BY CustomerName;

Читайте также: