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', @[email protected], @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected], @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected]

	-- Увы, однотипный копипаст
		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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
	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', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
			else
				EXEC sys.sp_addextendedproperty @name=N'MS_Description', @[email protected] , @level0type=N'SCHEMA',@[email protected]
					, @level1type=N'TABLE',@[email protected], @level2type=N'COLUMN',@[email protected]
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