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;

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‘ — ключевое слово. Правила для создания идентификаторов указываются в спецификации поставщика. Рассмотрим следующую таблицу:

ПравилаПлатформаОписание
Идентификатор должен содержать доSQL2003128 символов.
DB2128 символов, в зависимости от платформы.
MySQL64 символа.
Oracle30 байт; имена базы данных до 8 байт.
PostgreSQL31 символ.
Идентификатор может содержать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:
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 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