SQL — Однострочные и многострочные комментарии
Уважаемый пользователь! Реклама помогает поддерживать и развивать наш проект, делая его простым и удобным специально для Вас. Если проект интересный и важный для Вас, то отключите на нем блокировщик рекламы. Спасибо, что читаете сайт!
Комментарии используются для пояснения разделов операторов SQL или для предотвращения выполнения операторов во время отладки запросов.
Однострочные комментарии
Однострочные комментарии начинаются со знака — . Любой текст между — и концом строки будет проигнорирован (не будет выполнен).
В следующем примере в качестве объяснения используется однострочный комментарий:
Пример:
--Select all:
SELECT * FROM users;
В следующем примере используется однострочный комментарий для игнорирования конца строки:
Пример:
SELECT * FROM users -- WHERE balance = 1000;
В следующем примере используется однострочный комментарий для игнорирования оператора:
Пример:
--SELECT * FROM users
SELECT * FROM users;
Многострочные комментарии
Многострочные комментарии начинаются с / * и заканчиваются на * /. Любой текст между / * и * / будет проигнорирован. В следующем примере в качестве объяснения используется многострочный комментарий:
Пример:
/* Этот запрос
выведет данные
всех пользователей */
SELECT * FROM users;
В следующем примере используется многострочный комментарий для игнорирования многих операторов:
Пример:
/*SELECT * FROM users;
SELECT * FROM product;
SELECT * FROM invoice;*/
SELECT * FROM category;
Уважаемый пользователь! Реклама помогает поддерживать и развивать наш проект, делая его простым и удобным специально для Вас. Если проект интересный и важный для Вас, то отключите на нем блокировщик рекламы. Спасибо, что читаете сайт!
unetway.com
Комментарии в Oracle/PLSQL — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Это учебное пособие Oracle объясняет, как использовать комментарии в SQL предложениях в Oracle/PLSQL с синтаксисом и примерами.
Описание
Знаете ли вы, что вы можете поместить комментарии в операторы SQL в Oracle? Комментарии могут появляться в одной строке или распределяться по нескольким строкам. Давайте посмотрим, как это сделать.
Синтаксис
Есть два синтаксиса, которые можно использовать, чтобы создать комментарий в пределах ваших SQL предложений в Oracle/PLSQL.
Синтаксис использования символов --
Синтаксис для создания SQL комментариев в Oracle, используя символы --
:
--
здесь пишется комментарий
В Oracle комментарий, начинающийся с символов --
должен находиться в конце строки в вашем операторе SQL с разрывом строки после него. Этот метод комментирования может занимать только одну строку в вашем SQL и должен находиться в конце строки.
Синтаксис использование символов /*
и */
Синтаксис для создания комментария SQL в Oracle с использованием символов
и */
:
/*
здесь пишется комментарий */
В Oracle, комментарий, который начинается с символов /* и заканчивается */ может быть где угодно в вашем SQL предложении. Этот метод комментирования может занимать несколько строк в пределах вашего SQL.
Пример комментария на одной строке
Вы можете создать SQL комментарий на одной строке в SQL предложении в Oracle/PLSQL.
Рассмотрим пример SQL комментария, который показывает SQL комментарий на одной строке:
SELECT count(suppliers.supplier_id) /* количество поставщиков */ FROM suppliers;
SELECT count(suppliers.supplier_id) /* количество поставщиков */ FROM suppliers; |
Этот SQL комментарий, появляется в середине строки:
SELECT /* количество поставщиков */ count(suppliers.supplier_id) FROM suppliers;
SELECT /* количество поставщиков */ count(suppliers.supplier_id) FROM suppliers; |
Этот SQL комментарий, появляется в конце строки:
SELECT count(suppliers.supplier_id) /* количество поставщиков */ FROM suppliers;
SELECT count(suppliers.supplier_id) /* количество поставщиков */ FROM suppliers; |
или
SELECT count(suppliers.supplier_id) — количество поставщиков FROM suppliers;
SELECT count(suppliers.supplier_id) — количество поставщиков FROM suppliers; |
Пример комментария на нескольких строках
В Oracle, вы можете создать SQL комментарий, который охватывает несколько строк в вашем SQL предложении.
Например:
SELECT count(suppliers.supplier_id) /* * количество поставщиков * комментарий охватывает несколько строк в вашем SQL предложении. */ FROM suppliers;
SELECT count(suppliers.supplier_id) /* * количество поставщиков * комментарий охватывает несколько строк в вашем SQL предложении. */ FROM suppliers; |
Этот SQL комментарий распространяется на несколько строк в Oracle — в этом примере, он растянут на 4 строки.
В Oracle, вы также можете создать SQL комментарий, который охватывает несколько строк, используя следующий синтаксис:
SELECT count(suppliers.supplier_id) /* количество поставщиков комментарий, который охватывает несколько строк в вашем SQL предложении */ FROM suppliers; |
Oracle/PLSQL будет считать, что все, что после символов /* является комментарием, пока он не достигнет символов */, даже если он охватывает несколько строк внутри SQL предложения. Таким образом, в этом примере, SQL комментарий будет охватывать 2 строки.
oracleplsql.ru
Комментарии MySQL — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
В этом учебном пособии вы узнаете, как использовать комментарии в ваших SQL-операторах в MySQL с синтаксисом и примерами.
Описание
Знаете ли вы, что вы можете размещать комментарии в своих SQL- операторах в MySQL? Эти комментарии могут отображаться в одной строке или на нескольких строках. Давайте посмотрим, как это сделать.
Синтаксис
Существует три синтаксиса, которые можно использовать для создания комментария в SQL-операторах в MySQL.
Синтаксис с использованием символа #
Синтаксис для создания комментария SQL в MySQL с использованием символа #:
# здесь комментарий
В MySQL комментарий, начинающийся с символа #, должен быть в конце строки SQL-выражения с разрывом строки после него. Этот метод комментирования может охватывать только одну строку внутри вашего SQL и должен находиться в конце строки.
Использование синтаксиса символов --
(два минуса)
Синтаксис для создания комментария SQL в MySQL с использованием символов --
:
--
здесь комментарий
В MySQL комментарий, начинающийся с символа --
, похож на комментарий, начинающийся с символа #. При использовании символа --
комментарий должен быть в конце строки в вашем SQL-операторе с разрывом строки после него. Этот метод комментирования может охватывать только одну строку внутри вашего SQL и должен находиться в конце строки.
Синтаксис использования символов /* и */
Синтаксис для создания комментария SQL в MySQL с использованием символов /* и */:
/* здесь комментарий */
В MySQL комментарий, который начинается с символа /* и заканчивается */ может быть где угодно в вашем SQL-операторе. Этот метод комментирования может охватывать несколько строк в вашем SQL.
Пример — комментарий к отдельной строке
Вы можете создать комментарий в одной строке в SQL-запросе в MySQL.
Рассмотрим пример, который показывает комментарий SQL, который находится в одной строке.
SELECT sum(customers) /*количество всех покупателей*/ FROM table;
SELECT sum(customers) /*количество всех покупателей*/ FROM table; |
Вот комментарий SQL, который появляется в середине строки:
SELECT /*количество всех покупателей*/ sum(customers) FROM table;
SELECT /*количество всех покупателей*/ sum(customers) FROM table; |
Вот комментарий SQL, который появляется в конце строки:
SELECT sum(customers) /*количество всех покупателей*/ FROM table;
SELECT sum(customers) /*количество всех покупателей*/ FROM table; |
или
SELECT sum(customers) — количество всех покупателей FROM table;
SELECT sum(customers) — количество всех покупателей FROM table; |
или
SELECT sum(customers) # количество всех покупателей FROM table;
SELECT sum(customers) # количество всех покупателей FROM table; |
Пример — комментарий с нескольким строкам
В MySQL вы можете создать комментарий SQL, который охватывает несколько строк в вашем SQL-операторе. Например:
SELECT sum(customers) /* * Показывает комментарий, который охватывает несколько строк * в вашем SQL-операторе в MySQL. */ FROM table;
SELECT sum(customers) /* * Показывает комментарий, который охватывает несколько строк * в вашем SQL-операторе в MySQL. */ FROM table; |
Этот комментарий SQL распространяется на несколько строк в MySQL. В этом примере он охватывает 4 строки.
В MySQL вы также можете создать комментарий SQL, который охватывает несколько строк, используя этот синтаксис:
SELECT sum(customers) /* Показывает комментарий, который охватывает несколько строк в вашем SQL-операторе в MySQL. */ FROM table;
SELECT sum(customers) /* Показывает комментарий, который охватывает несколько строк в вашем SQL-операторе в MySQL. */ FROM table; |
MySQL будет считать, что все после символа /* является комментарием до тех пор, пока он не достигнет символа */, даже если он охватывает несколько строк в выражении SQL. Таким образом, в этом примере комментарий SQL будет охватывать две строки в SQL-операторе.
oracleplsql.ru
Немного комментариев для таблиц в MSSQL / Sandbox / Habr
create procedure [sysAdd].[AddColumnDescription]
@schema sysname,
@tabName sysname,
@tabDecr nvarchar(2000),
@col1Name sysname = null,
@col1Decr nvarchar(2000) = null,
@col2Name sysname = null,
@col2Decr nvarchar(2000) = null,
@col3Name sysname = null,
@col3Decr nvarchar(2000) = null,
@col4Name sysname = null,
@col4Decr nvarchar(2000) = null,
@col5Name sysname = null,
@col5Decr nvarchar(2000) = null,
@col6Name sysname = null,
@col6Decr nvarchar(2000) = null,
@col7Name sysname = null,
@col7Decr nvarchar(2000) = null,
@col8Name sysname = null,
@col8Decr nvarchar(2000) = null,
@col9Name sysname = null,
@col9Decr nvarchar(2000) = null,
@col10Name sysname = null,
@col10Decr nvarchar(2000) = null,
@col11Name sysname = null,
@col11Decr nvarchar(2000) = null,
@col12Name sysname = null,
@col12Decr nvarchar(2000) = null,
@col13Name sysname = null,
@col13Decr nvarchar(2000) = null,
@col14Name sysname = null,
@col14Decr nvarchar(2000) = null,
@col15Name sysname = null,
@col15Decr nvarchar(2000) = null,
@col16Name sysname = null,
@col16Decr nvarchar(2000) = null,
@col17Name sysname = null,
@col17Decr nvarchar(2000) = null,
@col18Name sysname = null,
@col18Decr nvarchar(2000) = null,
@col19Name sysname = null,
@col19Decr nvarchar(2000) = null,
@col20Name sysname = null,
@col20Decr nvarchar(2000) = null
as
begin
if(@tabDecr is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = 0
where tab.name = @tabName and sch.name = @schema))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@tabDecr, @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@tabDecr, @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName
-- Увы, однотипный копипаст
if(@col1Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col1Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col1Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col1Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col1Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col1Name
if(@col2Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col2Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col2Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col2Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col2Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col2Name
if(@col3Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col3Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col3Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col3Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col3Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col3Name
if(@col4Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col4Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col4Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col4Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col4Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col4Name
if(@col5Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col5Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col5Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col5Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col5Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col5Name
if(@col6Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col6Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col6Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col6Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col6Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col6Name
if(@col7Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col7Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col7Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col7Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col7Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col7Name
if(@col8Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col8Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col8Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col8Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col8Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col8Name
if(@col9Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col9Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col9Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col9Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col9Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col9Name
if(@col10Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col10Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col10Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col10Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col10Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col10Name
if(@col11Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col11Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col11Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col11Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col11Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col11Name
if(@col12Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col12Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col12Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col12Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col12Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col12Name
if(@col13Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col13Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col13Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col13Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col13Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col13Name
if(@col14Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col14Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col14Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col14Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col14Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col14Name
if(@col15Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col15Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col15Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col15Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col15Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col15Name
if(@col16Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col16Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col16Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col16Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col16Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col16Name
if(@col17Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col17Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col17Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col17Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col17Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col17Name
if(@col18Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col18Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col18Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col18Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col18Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col18Name
if(@col19Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col19Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col19Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col19Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col19Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col19Name
if(@col20Name is not null)
if(exists(select 1
from sys.schemas sch inner join sys.tables tab on tab.schema_id = sch.schema_id
inner join sys.columns col on col.object_id = tab.object_id inner join sys.extended_properties ep on ep.major_id = tab.object_id and ep.minor_id = col.column_id
where tab.name = @tabName and sch.name = @schema and col.name = @col20Name))
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@col20Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col20Name
else
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@col20Decr , @level0type=N'SCHEMA',@level0name=@schema
, @level1type=N'TABLE',@level1name=@tabName, @level2type=N'COLUMN',@level2name=@col20Name
end
GO
habr.com
Синтаксис SQL | SQL
5.5KВ этой статье описывается синтаксис SQL запросов. В следующем операторе задана минимальная структура и синтаксис, необходимый для SELECT.
SELECT [DISTINCT | ALL] {* | список_выбора} FROM {table_name [alias] | имя_представления}
Ключевые слова (SELECT, GRANT, DELETE или CREATE) прописаны в синтаксисе SQL и имеют в этом языке предопределенное значение. Можно использовать ключевые слова в верхнем или нижнем регистре. Следующие три запроса равнозначны:
SELECT * FROM EMPLOYEES;
Select * FROM EMPLOYEES;
select * FROM EMPLOYEES;
В некоторых случаях ключевые слова могут быть сокращены. Например, ключевое слово DESCRIBE может быть использовано либо в форме DESC, либо DESCRIBE. Если мы выполним следующие запросы, то в обоих случаях получим структуру таблицы сотрудников.
DESCRIBE EMPLOYEES;
DESC EMPLOYEES;
Идентификаторы – это имена заданные разработчиками для структурных элементов базы данных: таблицы, столбцы, псевдонимы, индексы, представления. В синтаксисе последнего SQL запроса ‘EMPLOYEES’ — это идентификатор, а ‘SELECT‘ — ключевое слово. Правила для создания идентификаторов указываются в спецификации поставщика. Рассмотрим следующую таблицу:
Правила | Платформа | Описание |
Идентификатор должен содержать до | SQL2003 | 128 символов. |
DB2 | 128 символов, в зависимости от платформы. | |
MySQL | 64 символа. | |
Oracle | 30 байт; имена базы данных до 8 байт. | |
PostgreSQL | 31 символ. | |
Идентификатор может содержать | SQL2003 | Любые цифры, символы и нижнее подчеркивание. |
DB2 | Любые цифры, символы в верхнем регистре или символ нижнего подчеркивания. | |
MySQL | Любые цифры или символы. | |
Oracle | Любые цифры, символы и нижнее подчеркивание (_), знак фунта стерлингов (#) или доллара ($). | |
PostgreSQL | Любые цифры, символы и нижнее подчеркивание (_). | |
Первый символ должен быть | SQL2003 | Буквой. |
DB2 | Буквой. | |
MySQL | Буквой или цифрой (но не должен содержать только цифры). | |
Oracle | Буквой. | |
PostgreSQL | Буквой или нижним подчеркиванием (_). | |
Идентификатор не может содержать | SQL2003 | Специальные символы или пробелы. |
DB2 | Специальные символы или пробелы. | |
MySQL | Точку (.), слэш (/) или ASCII(0) и ASCII(255). Кавычки (‘) и двойные кавычки («) допускаются только в ссылающихся идентификаторах. | |
Oracle | Пробелы, двойные кавычки («) или специальные символы. | |
PostgreSQL | Двойные кавычки («). | |
В синтаксисе SQL запросов символ идентификатора | SQL2003 | Двойные кавычки («). |
DB2 | Двойные кавычки («). | |
MySQL | Кавычки ( ‘ ) или двойные кавычки (» ) в режиме совместимости с ANSI. | |
Oracle | Двойные кавычки («). | |
PostgreSQL | Двойные кавычки («). | |
Идентификатор может быть зарезервирован | SQL2003 | Нет, кроме ссылающихся идентификаторов. |
DB2 | Да. | |
MySQL | Нет, кроме ссылающихся идентификаторов. | |
Oracle | Нет, кроме ссылающихся идентификаторов. | |
PostgreSQL | Нет, кроме ссылающихся идентификаторов. | |
Адресация к схеме | SQL2003 | Каталог.схема.объект. |
DB2 | Схема.объект. | |
MySQL | База_данных.объект. | |
Oracle | Схема.объект. | |
PostgreSQL | База_данных.схема.объект. | |
Идентификатор должен быть уникальным | SQL2003 | Да. |
DB2 | Да. | |
MySQL | Да. | |
Oracle | Да. | |
PostgreSQL | Да. |
Стандарт SQL не содержит никаких точных указаний по наименованиям, поэтому нужно следовать следующим основным принципам (в том числе и в синтаксисе SQL запросов UPDATE):
- Выбирайте имя, которое содержит смысл и имеет описательный характер. Например, таблица сотрудников не должна называться emp, а столбец имени сотрудника должен называться first_name, а не fname, хотя и «emp», и «fname» это допустимые идентификаторы;
- Используйте для всех объектов в базе данных SQL либо заглавные буквы, либо строчные, поскольку некоторые серверы баз данных чувствительны к регистру.
Термин литералы относится к фиксированным значениям данных. SQL распознает четыре типа литералов: числовые значения, строки символов, дата или время, логическое значение. Например, 100, -120, 544, 03, -458, 25, 3e2, 5E-2 являются действительными числовыми литералами. ‘США‘, ‘2000‘, ‘SQL Синтаксис‘, ‘1 января 1981‘ являются действительными строками символов (должны быть заключены в одинарные кавычки (‘ ‘)). Логические литералы и литералы даты/времени выглядят следующим образом: TRUE и ‘JAN-28-1976 21:12:40:00‘.
Операторы работают с отдельными элементами данных и возвращают результат. Операторы используются в различных операциях SQL, таких как SELECT, INSERT, UPDATE или DELETE. А также при создании различных объектов базы данных, таких как функции, представления, триггеры и хранимые процедуры. MS SQL синтаксис запросов поддерживает различные типы операторов, хотя не все СУБД поддерживают все операторы.
Смотрите таблицу ниже:
Операторы | Работают во |
Арифметические операторы | Всех базах данных. |
Операторы присвоения | Всех базах данных. |
Побитовые операторы | Microsoft SQL Server. |
Операторы сравнения | Всех базах данных. |
Логические операторы | DB2, Oracle, SQL Server и PostgreSQL. |
Унарные операторы | DB2, Oracle и SQL Server. |
Приоритетность — это порядок, в котором база данных оценивает различные операторы в одном выражении. В синтаксисе SQL запросов при выполнении выражения, содержащего несколько операторов (например, +, -, /), сначала выполняются операторы с высшей приоритетностью, а затем с более низкой. При оценке операторов с одинаковой приоритетностью операторы выполняются в порядке их расстановки в выражении слева направо.
Если в выражении есть круглые скобки, то операторы в них вычисляется в первую очередь, а остальные части выражения, которые находятся вне скобок, вычисляются после этого. В следующей таблице перечислены уровни приоритетности операторов SQL от высокого к низкому.
Приоритетность операторов |
( ) (выполняются в первую очередь). |
+, -, ~ (унарные операторы). |
*, /, % (математические операторы). |
+, — (арифметические операторы). |
=, >, <, >=, <=, <>, !=, !>, !< (операторы сравнения). |
I^ (Побитовый OR), & (Побитовый AND), | (Побитовый OR). |
NOT. |
AND. |
ALL, ANY, BETWEEN, IN, LIKE, OR, SOME. |
= (присвоение переменных). |
Следующие выражения в запросе MySQL возвращают разные результаты:
SELECT 12 * 2 + 24;
12 * 2 + 24
48
SELECT 12 * (2 + 24)
12 * (2 + 24)
312
Комментарии в синтаксисе SQL запросов — это необязательный текст, который описывает, что делает программа и почему код был изменен. Компилятор всегда игнорирует комментарии. Комментарий вводится через двойное тире и пробел:
— Это комментарий SQL
В качестве альтернативы, можно использовать блок комментариев C-стиля:
/ * Это первая строка комментария Это вторая строка комментария * /.
Пробелы, как правило, игнорируются в операторах SQL, что позволяет проще форматировать код для удобства чтения.
На следующей диаграмме приведены элементы синтаксиса SQL запросов, которые составляют одиночный оператор:
Список ключевых слов SQL:
ABSOLUTE | ACTION | ADD | ADMIN |
AFTER | AGGREGATE | ALIAS | ALL |
ALLOCATE | ALTER | AND | ANY |
ARE | ARRAY | AS | ASC |
ASSERTION | ASSERTION | AT | ATOMIC |
AUTHORIZATION | BEFORE | BEGIN | BIGINT |
BINARY | BIT | BLOB | BOOLEAN |
BOTH | BREADTH | BY | CALL |
CASCADE | CASCADED | CASE | CAST |
CATALOG | CHAR | CHARACTER | CHECK |
CLASS | CLOB | CLOSE | COLLATE |
COLLATION | COLLECT | COLUMN | COMMIT |
COMPLETION | CONDITION | CONNECT | CONNECTION |
CONSTRAINT | CONSTRAINTS | CONSTRUCTOR | CONTAINS |
CONTINUE | CORRESPONDING | CREATE | CROSS |
CUBE | CURRENT | CURRENT_DATE | CURRENT_PATH |
CURRENT_ROLE | CURRENT_TIME | CURRENT_TIMESTAMP | CURRENT_USER |
CURSOR | CYCLE | DATA | DATALINK |
DATE | DAY | DEALLOCATE | DEC |
DECIMAL | DECLARE | DEFAULT | DEFERRABLE |
DELETE | DEPTH | DEREF | DESC |
DESCRIPTOR | DESTRUCTOR | DIAGNOSTICS | DICTIONARY |
DISCONNECT | DO | DOMAIN | DOUBLE |
DROP | ELEMENT | END-EXEC | EQUALS |
ESCAPE | EXCEPT | EXCEPTION | EXECUTE |
EXIT | EXPAND | EXPANDING | FALSE |
FIRST | FLOAT | FOR | FOREIGN |
FREE | FROM | FUNCTION | FUSION |
GENERAL | GET | GLOBAL | GOTO |
GROUP | GROUPING | HANDLER | HASH |
HOUR | IDENTITY | IF | IGNORE |
IMMEDIATE | IN | INDICATOR | INITIALIZE |
INITIALLY | INNER | INOUT | INPUT |
INSERT | INT | INTEGER | INTERSECT |
INTERSECTION | INTERVAL | INTO | IS |
ISOLATION | ITERATE | JOIN | KEY |
LANGUAGE | LARGE | LAST | LATERAL |
LEADING | LEAVE | LEFT | LESS |
LEVEL | LIKE | LIMIT | LOCAL |
LOCALTIME | LOCALTIMESTAMP | LOCATOR | LOOP |
MATCH | MEMBER | MEETS | MERGE |
MINUTE | MODIFIES | MODIFY | MODULE |
MONTH | MULTISET | NAMES | NATIONAL |
NATURAL | NCHAR | NCLOB | NEW |
NEXT | NO | NONE | NORMALIZE |
NOT | NULL | NUMERIC | OBJECT |
OF | OFF | OLD | ON |
ONLY | OPEN | OPERATION | OPTION |
OR | ORDER | ORDINALITY | OUT |
OUTER | OUTPUT | PAD | PARAMETER |
PARAMETERS | PARTIAL | PATH | PERIOD |
POSTFIX | PRECEDES | PRECISION | PREFIX |
PREORDER | PREPARE | PRESERVE | PRIMARY |
PRIOR | PRIVILEGES | PROCEDURE | PUBLIC |
READ | READS | REAL | RECURSIVE |
REDO | REF | REFERENCES | REFERENCING |
RELATIVE | REPEAT | RESIGNAL | RESTRICT |
RESULT | RETURN | RETURNS | REVOKE |
RIGHT | ROLE | ROLLBACK | ROLLUP |
ROUTINE | ROW | ROWS | SAVEPOINT |
SCHEMA | SCROLL | SEARCH | SECOND |
SECTION | SELECT | SEQUENCE | SESSION |
SESSION_USER | SET | SETS | SIGNAL |
SIZE | SMALLINT | SPECIFIC | SPECIFICTYPE |
SQL | SQLEXCEPTION | SQLSTATE | SQLWARNING |
START | STATE | STATIC | STRUCTURE |
SUBMULTISET | SUCCEEDS | SUM | SYSTEM_USER |
TABLE | TABLESAMPLE | TEMPORARY | TERMINATE |
THAN | THEN | TIME | TIMESTAMP |
TIMEZONE_HOUR | TIMEZONE_MINUTE | TO | TRAILING |
TRANSACTION | TRANSLATION | TREAT | TRIGGER |
TRUE | UESCAPE | UNDER | UNDO |
UNION | UNIQUE | UNKNOWN | UNTIL |
UPDATE | USAGE | USER | USING |
VALUE | VALUES | VARCHAR | VARIABLE |
VARYING | VIEW | WHEN | WHENEVER |
WHERE | WHILE | WITH | WRITE |
YEAR | ZONE |
Данная публикация представляет собой перевод статьи «SQL Syntax» , подготовленной дружной командой проекта Интернет-технологии.ру
www.internet-technologies.ru
SQL комментарии в базах данных SQLite. Как реализованы комментарии в SQLite3
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем рубрику реляционные базы данных и ее раздел библиотека SQLite. Не стоит недооценивать наличие комментариев при проектировании баз данных и уж тем более не стоит ими пренебрегать. Комментарии могут быть прекрасной документацией вашего SQL кода. Комментарии помогают другим разработчикам понять ваш код. Поэтому не стесняйтесь использовать комментарии в своих базах данных. Лучше потратить 2 минуты на написание комментария, чем потом, через какое-то время, потратить два часа на осмысление SQL запросов.
Комментарии в SQLite бывают двух видов: строчные и блочные.
Пример строчного SQL комментария:
— Это строчный комментарий — и это строчный комментарий — комментарий
— Это строчный комментарий
— и это строчный комментарий
— комментарий |
Особенность строчного комментария в SQLite заключается в том, что начинаются они с двух символов дефиса, за которыми следует пробел. При помощи такой конструкции комментируется только одна строка, текст, который будет ниже символа комментария, будет обрабатываться SQLite.
Пример блочного комментария:
/* А это пример Блочного комментария Всё, что находится между специальными символами – комментарий */
/*
А это пример
Блочного комментария
Всё, что находится между специальными символами – комментарий
*/ |
Особенность блочных SQL комментариев в том, что есть символ, обозначающий начало комментария (/*), и есть символ, который обозначает окончание комментария (*/). Всё, что находится между этими символами – комментарий. Блочные символы очень удобно использовать для того, чтобы отключать часть кода без его удаления. Например, таким образом можно отключить триггер.
zametkinapolyah.ru
Комментарии в SQL
Ser Artur,sledushim obrasom:1. delau obi4nuiu tablizu v Acc s neskolkimi stolbzami:1 SQL_String_Nr as Long2 SQL_String as Memo (kak Text, no dopuskaet do okolo 65000 znakov + formatirovanie 4/z enter i tabulator)3 SQL_String_Kommentar (toje Memo -sdes i pischu komentar)teper esli voznikaet neobhodimosti sdelati slojnii sql sapros, delau ego naprimer pri pomoshi konstruktora, potom perekliu4eaus v sql vid, tam viju primerno sledushee:SELECT FAN_GI.FAN, FAN_GI.Produktionsort AS Werk, FAN_GI.Start, FAN_GI.KW, FAN_GI.Jahr, Artikel_GI.Artikelnummer AS ArtNr_VOKA, Artikel_GI.Bezeichnung, Artikel_GI.Abmessung, FAN_GI.Menge, ME_GI.************ AS ME, AG_Archive.Arbeitsgang AS AG, A_Gang_GI.Bezeichnung AS Arbeitsgang, Anlagen_GI.Maschinenbezeichnung AS Anlage, AG_Archive.bedarf, AG_Archive.fertig, [bedarf]-[fertig] AS offen, Format([fertig]/[bedarf]*100,’0.0′) AS EG, IIf([AG_Archive]![erledigt]=-1,»Ja»,»Nein») AS AG_erledigtFROM [Stamm Mengeeinheiten] AS ME_GI INNER JOIN (Maschinenstamm AS Anlagen_GI INNER JOIN (((Artikelstamm AS Artikel_GI INNER JOIN Fertigungsauftrage AS FAN_GI ON Artikel_GI.Artikelnummer = FAN_GI.Artickelnummer) INNER JOIN [Archive Arbeitsschritte] AS AG_Archive ON FAN_GI.FAN = AG_Archive.FAN) INNER JOIN [Stamm Arbeitsgange] AS A_Gang_GI ON AG_Archive.Arbeitsgang = A_Gang_GI.Arbeitsgang) ON Anlagen_GI.Maschinennummer = AG_Archive.Anlage) ON ME_GI.Mengeeinheit = Artikel_GI.MEWHERE FAN_GI.FAN IN (SELECT FAN FROM Auftragsinformation WHERE AE >= 8010187 AND FAN 0 GROUP BY FAN )ANDFAN_GI.Produktionsort = Forms![Fertigungsauftraege auf Maschinen verteilte Maschinenauswahl]![Werk]ANDFAN_GI.Start >= #1/3/2008#ANDAG_Archive.Arbeitsgang > 100ORDER BY FAN_GI.FAN, AG_Archive.Arbeitsgang;:-)kopiruiu vse eto hoteabi v obiknovennii bloknot i «pri4esivau» do sostoiania:SELECTFAN_GI.FAN,FAN_GI.Produktionsort AS Werk,FAN_GI.Start,FAN_GI.KW,FAN_GI.Jahr,Artikel_GI.Artikelnummer AS ArtNr_VOKA,Artikel_GI.Bezeichnung,Artikel_GI.Abmessung,FAN_GI.Menge,ME_GI.************ AS ME,AG_Archive.Arbeitsgang AS AG,A_Gang_GI.Bezeichnung AS Arbeitsgang,Anlagen_GI.Maschinenbezeichnung AS Anlage,AG_Archive.bedarf,AG_Archive.fertig,[bedarf]-[fertig] AS offen,Format([fertig]/[bedarf]*100,’0.0′) AS EG,IIf([AG_Archive]![erledigt]=-1,»Ja»,»Nein») AS AG_erledigtFROM[Stamm Mengeeinheiten] AS ME_GIINNER JOIN(Maschinenstamm AS Anlagen_GIINNER JOIN(((Artikelstamm AS Artikel_GIINNER JOINFertigungsauftrage AS FAN_GIONArtikel_GI.Artikelnummer = FAN_GI.Artickelnummer)INNER JOIN[Archive Arbeitsschritte] AS AG_ArchiveONFAN_GI.FAN = AG_Archive.FAN)INNER JOIN[Stamm Arbeitsgange] AS A_Gang_GIONAG_Archive.Arbeitsgang = A_Gang_GI.Arbeitsgang)ONAnlagen_GI.Maschinennummer = AG_Archive.Anlage)ONME_GI.Mengeeinheit = Artikel_GI.MEWHEREFAN_GI.FAN IN (SELECT FAN FROM Auftragsinformation WHERE AE >= 8010187 AND FAN 0 GROUP BY FAN )ANDFAN_GI.Produktionsort = Forms![Fertigungsauftraege auf Maschinen verteilte Maschinenauswahl]![Werk]ANDFAN_GI.Start >= #1/3/2008#ANDAG_Archive.Arbeitsgang > 100ORDER BYFAN_GI.FAN,AG_Archive.Arbeitsgangpolu4ennii sql sohraneau v visheopisannuiu tablizu pod kakimnibudi nomerom (0001, 0002 i t.d.) v kolonku sql_string, a v kolonku sql_string_komentar — pishu komentarii k saprosu.sam sapros sohraneau v base pod temje nomerom, kak i obrasez v tablize (posle sohranenia on teriaet formatirovanie, no vedi v tablize esti original 🙂 )nadeus dostupno obiasnil, esli esti ese voprosi, pishite.Fedor
qa-help.ru