Ms sql установить значение счетчика

Экспертный кейс. Расследование фатального замедления времени расчета себестоимости в 1С:ERP 2

При выполнении нагрузочного тестирования информационной системы на базе 1С:ERP для одного из клиентов с целью оценки возможности миграции системы на PostgreSQL и Astra Linux мы столкнулись с неприемлемым увеличением времени выполнения расчета себестоимости.

Строго говоря, сценарий тестирования закрытия месяца не был выполнен вообще – он не укладывался в таймаут выполнения теста, 24 часа. По прошествии 18 часов всё ещё шло выполнение операции «Распределение затрат и расчет себестоимости». Более 16 часов выполнялся подэтап “Расчет партий и себестоимости. Этап. Расчет себестоимости: РассчитатьСтоимость”. Всё это время выполнялся запрос, который в текущей инфраструктуре клиента (СУБД MS SQL Server) выполняется чуть более 3 минут на аналогичных данных.

Краткий обзор строковых функций

Название функций Действие, выполняемое функцией
ASCII Возвращает код ASCII левого символа строки
CHAR По коду ASCII возвращает символ
CHARINDEX Определяет порядковый номер символа, с которого начинается вхождение подстроки в строку
DIFFERENCE Возвращает показатель совпадения строк
LEFT Возвращает указанное число символов с начала строки
LEN Возвращает длину строки
LOWER Переводит все символы строки в нижний регистр
LTRIM Удаляет пробелы в начале строки
NCHAR Возвращает по коду символ Unicode
PATINDEX Выполняет поиск подстроки в строке по указанному шаблону
REPLACE Заменяет вхождения подстроки на указанное значение
QUOTENAME Конвертирует строку в формат Unicode
REPLICATE Выполняет тиражирование строки определенное число раз
REVERSE Возвращает строку, символы которой записаны в обратном порядке
RIGHT Возвращает указанное число символов с конца строки
RTRIM Удаляет пробелы в конце строки
SOUNDEX Возвращает код звучания строки
SPACE Возвращает указанное число пробелов
STR Выполняет конвертирование значения числового типа в символьный формат
STUFF Удаляет указанное число символов, заменяя новой подстрокой
SUBSTRING Возвращает для строки подстроку указанной длины с заданного символа
UNICODE Возвращает Unicode-код левого символа строки
UPPER Переводит все символы строки в верхний регистр

Переменные в T-SQL

И начнем мы с переменных, они нужны для того, чтобы хранить какие-то временные данные, которые нам необходимо на время сохранить, а затем использовать.

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

Локальные переменные объявляются с помощью ключевого слова DECLARE и начинаются со знака @. Как и во многих языках программирования, переменные в T-SQL должны иметь свой тип данных. Типов данных в SQL сервере достаточно много мы их подробно рассмотрели в справочнике, который я упоминал чуть выше.

Для присвоения значения переменной можно использовать команды SET или Select.

Как я уже сказал, глобальные переменные нужны для того, чтобы получать какую-либо информацию о сервере или о базе данных, например, к глобальным переменным в SQL Server относятся:

  • @@ROWCOUNT – хранит количество записей, обработанных предыдущей командой;
  • @@ERROR – возвращает код ошибки для последней команды;
  • @@SERVERNAME — имя локального SQL сервера;
  • @@VERSION — номер версии SQL Server;
  • @@IDENTITY — последнее значение счетчика, используемое в операции вставки (insert).

Теперь для примера давайте создадим две переменной с типом данных INT, присвоим им значения, первой с помощью команды SET, а второй с помощью команды Select, затем просто выведем на экран эти значения, а также выведем и значение переменной @@VERSION, т.е. узнаем версию SQL сервера.

   
   DECLARE @TestVar1 INT
   DECLARE @TestVar2 INT
   SET @TestVar1 = 1
   SELECT @TestVar2 = 2
   SELECT @TestVar1 AS , 
           @TestVar2 AS , 
           @@VERSION AS 

Условные конструкции

Эти конструкции подразумевают ветвление, т.е. в зависимости от выполнения или невыполнения определенных условий инструкции T-SQL будут менять свое направление.

IF…ELSE

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

   
   DECLARE @TestVar1 INT
   DECLARE @TestVar2 VARCHAR(20)
   SET @TestVar1 = 5
   IF @TestVar1 > 0
        SET @TestVar2 = 'Больше 0'
   ELSE
        SET @TestVar2 = 'Меньше 0'
   SELECT @TestVar2 AS 

IF EXISTS

Данная конструкция позволяет определить наличие записей определенных условием. Например, мы хотим знать есть ли в таблице те или иные записи и при обнаружении первого совпадения обработка команды прекращается. По сути это то же самое, что и COUNT(*) > 0.

К примеру, мы хотим проверить есть ли записи со значение id >=0 в таблице test_table, и на основе этого мы будем принимать решение, как действовать дальше

   
   DECLARE @TestVar VARCHAR(20)
   IF EXISTS(SELECT * FROM test_table WHERE id > = 0)
        SET @TestVar = 'Записи есть'
   ELSE
        SET @TestVar = 'Записей нет'
   SELECT @TestVar AS 

CASE

Данная конструкция используется совместно с оператором select и предназначена она для замены многократного использования конструкции IF. Она полезна в тех случаях, когда необходимо проверять переменную (или поле) на наличие определенных значений.

   
   DECLARE @TestVar1 INT
   DECLARE @TestVar2 VARCHAR(20)
   SET @TestVar1 = 1
   SELECT @TestVar2 = CASE @TestVar1
                                                WHEN 1 THEN 'Один'
                                                WHEN 2 THEN 'Два'
                                                ELSE 'Неизвестное'
                                        END
   SELECT @TestVar2 AS 

Краткий обзор основных функций для работы с датой и временем

DATEADD Добавляет к дате указанное значение дней, месяцев, часов и т.д.
DATEDIFF Возвращает разницу между указанными частями двух дат
DATENAME Выделяет из даты указанную часть и возвращает ее в символьном формате
DATEPART Выделяет из даты указанную часть и возвращает ее в числовом формате
DAY Возвращает число из указанной даты
GETDATEВозвращает текущее системное время
ISDATE Проверяет правильность выражения на соответствие одному из возможных форматов ввода даты
MONTH Возвращает значение месяца из указанной даты
YEARВозвращает значение года из указанной даты
MINUTE Возвращает значение минут из указанной даты/времени
HOUR Возвращает значение часов из указанной даты/времени
SECOND Возвращает значение секунд из указанной даты/времени

Идентификация узких мест

В таблице приведен перечень основных объектов и счетчиков, используемых при анализе проблем с производительностью.

ОбъектОсновные счетчикиОписаниеОсновные признаки наличия проблемыВарианты решения проблемы
ПамятьMemory\Pages/secХарактеризует интенсивность обмена между дисковой подсистемой и оперативной памятью. Обращение к дисковой системе происходит из-за того, что запрашиваемые страницы отсутствуют в оперативной памяти.Нормальное значение этого счетчика должно быть близко к нулю. Увеличение показания этого счетчика свыше 20 страниц в секунду говорит о необходимости увеличения объема оперативной памяти.

Увеличение объема оперативной памяти, установленной на компьютере.

Перенос приложений, интенсивно использующих оперативную память, на отдельный компьютер.Например, установка сервера 1С:Предприятия 8.0 и Microsoft SQL Server на разных компьютерах.

ПроцессорProcessor \ %Processor TimeВремя, которое процессор тратит на выполнение полезной работы, в процентах от общего системного времени.Если среднее значение величины утилизации процессора превышает 85%, значит, процессор – узкое место в системе.

Замена процессоров на более быстродействующие.

Увеличение количества процессоров.

Перенос приложений, интенсивно использующих процессор на отдельный компьютер. Например, установка сервера 1С:Предприятия 8.0 и Microsoft SQL Server на разных компьютерах.

System \ Processor Queue LengthДлина очереди к процессору.Если в течение длительного времени средняя длина очереди превышает значение 2, то это говорит о том, что процессор является узким местом.
Дисковая системаPhysical Disk \ %Disk TimeПроцент времени, которое диск был занят, обслуживая запросы чтения или записи.Снижение утилизации процессоров сервера

Установка более быстрых дисков.

Использование дисков с интерфейсом SCSI.

Использование аппаратного RAID – контроллера.

Увеличение количества дисков в RAID – массиве.

Physical Disk\Avg. Disk Queue LengthПоказывает эффективность работы дисковой подсистемы. Представляет собой среднюю длину очереди запросов к диску.Увеличение очереди запросов к дисковой подсистеме
Сетевой интерфейсNetwork Interface\ Bytes Total/secСкорость, с которой происходит получение или посылка байт через сетевой интерфейсЗначение этого счётчика не должно превышать 65% величины пропускной способности сетевого адаптера.

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

Установка дополнительного сетевого адаптера.

БлокировкиSQL Server: Locks \ Lock Wait Time (ms)Показывает общее время ожидания (в миллисекундах) выполнения запросов на блокировку за последнюю секундуСреднее значение общего времени ожидания не должно превышать заданного времени отклика системы умноженного на количество активных пользователей

Сокращение времени выполнения транзакции.

Обеспечение единого порядка доступа ко всем ресурсам.

Оптимизация запросов в прикладном решении.

Правильная установка признаков индексирования у реквизитов объектов конфигурации позволяет существенно сократить диапазон блокировок.

Поддержание актуальности индексов и статистики Microsoft SQL Server.

Использование в запросах оператора “ДЛЯ ИЗМЕНЕНИЯ”.

SQL Server: Locks\ Average Wait Time (ms)Показывает среднее время ожидания (в миллисекундах) выполнения каждого запроса на блокировкуНе должно превышать заданного времени отклика системы
Взаимные блокировкиSQL Server: Locks \ Number of Deadlocks/secПоказывает количество запросов на блокировку в секунду, которые закончились взаимной блокировкойНенулевое значение счетчика

Потенциальные узкие места

Память

  • Недостаток объема оперативной памяти, установленной на компьютере, оказывает негативное влияние на производительность всех компонент 1С:Предприятия 8 и Microsoft SQL Server.
  • При увеличении количества пользователей и объема информационной базы требования к этому ресурсу со стороны сервера 1С:Предприятия 8 и Microsoft SQL Server  возрастают.
  • Нехватка памяти приводит к увеличению интенсивности страничного обмена между файлом подкачки и физической памятью, что существенно снижает производительность системы.

Процессоры

  • Недостаточная производительность или количество процессоров может стать узким местом при увеличении нагрузки на систему, связанной с увеличением количества пользователей.
  • Эффект от увеличения количества процессоров в многопользовательской системе, как правило, существенно выше, чем от увеличения их быстродействия.

Дисковые операции

  • Производительность дисковой подсистемы является одним из решающих факторов, определяющих производительность Microsoft SQL Server.
  • На производительность сервера 1С:Предприятия 8 влияния, как правило, не оказывает.

Конфликты блокировок Microsoft SQL Server

  • Один из основных факторов снижения производительности в многопользовательском режиме
  • Вероятность возникновения конфликтов блокировок можно снизить за счет доработки прикладного решения

Синтаксис для MySQL

Следующая инструкция SQL определяет столбец “ID”, который будет автоматически увеличивать поле первичного ключа в таблице “лица”:

CREATE TABLE Persons
(
   
ID int NOT NULL AUTO_INCREMENT,
   
LastName varchar(255) NOT NULL,
   
FirstName varchar(255),
    Age int,
   
PRIMARY KEY (ID)
);

MySQL использует ключевое слово ауто_инкремент для выполнения функции автоматического приращения.

По умолчанию начальное значение для ауто_инкремент равно 1, и оно будет увеличиваться на 1 для каждой новой записи.

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

ALTER TABLE Persons AUTO_INCREMENT=100;

Чтобы вставить новую запись в таблицу “персоны”, нам не нужно будет указывать значение для “ID”
столбец (уникальное значение будет добавлено автоматически):

INSERT INTO Persons (FirstName,LastName)
VALUES (‘Lars’,’Monsen’);

Вышеприведенная инструкция SQL вставит новую запись в таблицу “персоны”. Столбцу “ID” присваивается уникальное значение. В столбце “имя” будет установлено значение “Ларс”, а в столбце “Фамилия” будет установлено значение “Монсен Сотрудник IIP”.

SQLServer: Buffer Manager\Buffer cache hit ratio

Идея: Процент чтений данных из памяти (вместо диска)

Проблема: Этот счётчик не учитывает «упреждающее чтение». Упреждающее чтение — важный тип физического чтение, который используется для поднятия данных с диска в память. У вас может быть множество чтений с диска и этот счётчик не покажет вам их.

Решение: Собирайте LogicalDisk: Avg Disk Bytes/Read and Write и Avg Disk sec/Read and Write. Они помогут вам понять задержки доступа к диску. Avg Disk bytes поможет определить ситуации очень больших и очень малых операций. Так же для понимания задержек чтений/записи по файлам БД, вы можете иногда собирать информацию из DMV sys.dm_io_virtual_file_stats.

Команды T-SQL

GOTO

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

   
   DECLARE @Cnt INT = 0
   Metka: --Устанавливаем метку
   SET @Cnt += 1 --Прибавляем к переменной 1
        if @Cnt < 10
                GOTO Metka --Если значение меньше 10, то переходим к метке
   SELECT @Cnt AS 

WAITFOR

Команда может приостановить выполнение кода на время или до наступления заданного времени. Параметр DELAY делает паузу заданной длины, а TIME приостанавливает процесс до указанного времени. Значение параметров задается в формате hh:mi:ss

   
   DECLARE @TimeStart time, @TimeEnd time
   SET @TimeStart = CONVERT (time, GETDATE())--Узнаем время
   WAITFOR DELAY '00:00:05'--Пауза на 5 секунд
   SET @TimeEnd = CONVERT (time, GETDATE())--Снова узнаем время
   --Узнаем, сколько прошло времени в секундах
   SELECT DATEDIFF(ss, @TimeStart, @TimeEnd) AS 

RETURN

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

   
   DECLARE @Cnt INT = 1, @result varchar(15)
   /*Если значение Cnt меньше 0, то следующие команды не выполнятся,
   и Вы не увидите колонку */
   IF @Cnt < 0
        RETURN
   SET @result = 'Cnt больше 0'
   SELECT @result AS 

PRINT

Для передачи служебного сообщения можно использовать команду PRINT. В Management Studio это сообщение отобразится на вкладке «Сообщения» (Messages).

   
   DECLARE @Cnt INT = 10, @TestVar varchar(100)
   IF @Cnt > 0
        SET @TestVar = 'Значение переменной Cnt больше 0 и равняется ' 
                                        + CAST(@Cnt AS VARCHAR(10))
   ElSE
        SET @TestVar = 'Значение переменной Cnt меньше 0 и равняется ' 
                                        + CAST(@Cnt AS VARCHAR(10))
   PRINT @TestVar

Как работать с Activity Monitor

Activity Monitor можно открыть в SQL Server Management Studio toolbar используя иконку Activity Monitor на панели, сочетанием клавиш Ctrl+Alt+A или через контекстное меню в Object Explorer.

Как уже было сказано выше, Activity Monitor отслеживает только заранее определенный набор наиболее важных показателей производительности SQL Server. Дополнительных параметров указать нельзя, нельзя и удалить что-то из показателей. Мониторинг возможен только в режиме реального времени. Нет возможности сохранить результаты мониторинга для последующего анализа. Таким образом Activity Monitor – это полезный инструмент для беглого анализа и поиска неисправностей, но он не подходит для детального сбора информации, т.к. в нём отсутствует возможность гибкой настройки счётчиков производительности, указания пороговых значений и нет возможности сбора исторических данных.

Синтаксис для Oracle

В Oracle код немного сложнее.

Вам придется создать поле с автоматическим приращением с помощью объекта Sequence (этот объект генерирует номерную серию).

Используйте следующий синтаксис создания последовательности:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;

Приведенный выше код создает объект Sequence с именем сек_персон, начинающийся с 1 и увеличивающийся на 1.
Он также будет кэшировать до 10 значений для производительности. Параметр cache указывает, сколько значений последовательности будет сохранено в памяти для более быстрого доступа.

Чтобы вставить новую запись в таблицу “персоны”, мы должны будем использовать функцию NEXTVAL (Эта функция извлекает следующее значение из последовательности сек_персон):

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,’Lars’,’Monsen’);

Вышеприведенная инструкция SQL вставит новую запись в таблицу “персоны”. Столбцу “ID” присваивается следующий номер из последовательности сек_персон. В столбце “имя” будет установлено значение “Ларс”, а в столбце “Фамилия” будет установлено значение “Монсен Сотрудник IIP”.

❮ Назад
Дальше ❯

Activity Monitor

Activity Monitor отслеживает наиболее важные показатели эффективности SQL Server. Чтобы получить их, он выполняет запросы к экземпляру SQL Server каждые 10 секунд. Мониторинг осуществляется только когда инструмент открыт, поэтому побочный эффект от его использования минимальный.

Все метрики показаны на 5 разных панелях: Overview (Обзор), Processes (Процессы), Resource Waits (Ожидания ресурсов), Data File I/O (Ввод/вывод файлов данных), и Recent Expensive Queries (последние затратные запросы).

Overview (Общие сведения). Содержит графики Processor Time (Процессорное время), Number of Waiting Tasks (Количество ожидающих задач), Database I/O (Ввод-вывод в базе данных) и Number of Batch Requests/second (Количество пакетных запросов в секунду).

Processes (Процессы). Показывает все работающие в данный момент процессы во всех БД экземпляра SQL Server. Выводится информация по следующим полям: Логин, название приложения и хост, состояние задач и команд, время ожидания и т.д. Информацию можно отфильтровать по любому из полей таблицы.

Кроме того, есть удобная возможность для администраторов в контекстном меню вызвать SQL Server Profiler и выполнить более детальный анализ любого процесса.

Resource Waits (Ожидание ресурсов). Показывает ожидания для различных ресурсов: памяти, компиляции, сети и т.д.

Можно увидеть время ожидания (сколько времени задача SQL Server ожидала ресурсов от системы), последнее, общее и среднее.

Data File I/O (Ввод-вывод в файлах данных). Выводит информацию о всех файлах БД: MDF, NDF и LDF. Их название, полный путь, активность по чтению и записи и время отклика.

Recent Expensive Queries (Последние ресурсоемкие запросы). Показывает запросы, выполненные в последние 30 секунд, которые используются наибольшее количество аппаратных ресурсов: процессора, памяти, диска и сети. Контекстное меню позволяет открыть запрос в закладке запроса SQL Server Management Studio и просомтреть его план выполнения.

Операторы работы с наборами

Кроме операторов, рассмотренных ранее, язык Transact-SQL поддерживает еще три оператора работы с наборами: UNION, INTERSECT и EXCEPT.

Оператор UNION

Оператор UNION объединяет результаты двух или более запросов в один результирующий набор, в который входят все строки, принадлежащие всем запросам в объединении. Соответственно, результатом объединения двух таблиц является новая таблица, содержащая все строки, входящие в одну из исходных таблиц или в обе эти таблицы.

Общая форма оператора UNION выглядит таким образом:

Параметры select_1, select_2, … представляют собой инструкции SELECT, которые создают объединение. Если используется параметр ALL, отображаются все строки, включая дубликаты. В операторе UNION параметр ALL имеет то же самое значение, что и в списке выбора SELECT, но с одним отличием: для списка выбора SELECT этот параметр применяется по умолчанию, а для оператора UNION его нужно указывать явно.

В своей исходной форме база данных SampleDb не подходит для демонстрации применения оператора UNION. Поэтому в этом разделе создается новая таблица EmployeeEnh, которая идентична существующей таблице Employee, но имеет дополнительный столбец City. В этом столбце указывается место жительства сотрудников.

Создание таблицы EmployeeEnh предоставляет нам удобный случай продемонстрировать использование предложения INTO в инструкции SELECT. Инструкция SELECT INTO выполняет две операции. Сначала создается новая таблица со столбцами, перечисленными в списке выбора SELECT. Потом строки исходной таблицы вставляются в новую таблицу. Имя новой таблицы указывается в предложении INTO, а имя таблицы-источника указывается в предложении FROM.

В примере ниже показано создание таблицы EmployeeEnh из таблицы Employee:

В этом примере инструкция SELECT INTO создает таблицу EmployeeEnh, вставляет в нее все строки из таблицы-источника Employee, после чего инструкция ALTER TABLE добавляет в новую таблицу столбец City. Но добавленный столбец City не содержит никаких значений. Значения в этот столбец можно вставить посредством среды Management Studio или же с помощью следующего кода:

Теперь мы готовы продемонстрировать использование инструкции UNION. В примере ниже показан запрос для создания соединения таблиц EmployeeEnh и Department, используя эту инструкцию:

Результат выполнения этого запроса:

Объединять с помощью инструкции UNION можно только совместимые таблицы. Под совместимыми таблицами имеется в виду, что оба списка столбцов выборки должны содержать одинаковое число столбцов, а соответствующие столбцы должны иметь совместимые типы данных. (В отношении совместимости типы данных INT и SMALLINT не являются совместимыми.)

Результат объединения можно упорядочить, только используя предложение ORDER BY в последней инструкции SELECT, как это показано в примере ниже. Предложения GROUP BY и HAVING можно применять с отдельными инструкциями SELECT, но не в самом объединении.

Запрос в этом примере осуществляет выборку сотрудников, которые или работают в отделе d1, или начали работать над проектом до 1 января 2008 г.

Оператор UNION поддерживает параметр ALL. При использовании этого параметра дубликаты не удаляются из результирующего набора.
Вместо оператора UNION можно применить оператор OR, если все инструкции SELECT, соединенные одним или несколькими операторами UNION, ссылаются на одну и ту же таблицу. В таком случае набор инструкций SELECT заменяется одной инструкцией SELECT с набором операторов OR.

Операторы INTERSECT и EXCEPT

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

Язык Transact-SQL не поддерживает использование параметра ALL ни с оператором INTERSECT, ни с оператором EXCEPT. Использование оператора EXCEPT показано в примере ниже:

Следует помнить, что эти три оператора над множествами имеют разный приоритет выполнения: оператор INTERSECT имеет наивысший приоритет, за ним следует оператор EXCEPT, а оператор UNION имеет самый низкий приоритет. Невнимательность к приоритету выполнения при использовании нескольких разных операторов для работы с наборами может повлечь неожиданные результаты.

Pages/Sec

Счетчик Pages/Sec, расположенный среди объектов Memory, показывает число страниц, которые SQL Server считал с диска или записал на диск для того, чтобы разрешить обращения к страницам памяти, которые не были загружены в оперативную память в момент обращения. Эта величина является суммой величин Pages Input/sec и Pages Output/sec, а также учитывает страничный обмен (подкачку/свопинг) системной кэш-памяти для доступа к файлам данных приложений. Кроме того, сюда включается подкачка не кэшированных файлов, непосредственно отображаемых в память. Это основной счетчик, за которым следует следить в том случае, если наблюдается большая нагрузка на использование памяти и связанный с этим избыточный страничный обмен. Этот счётчик характеризует величину свопинга и его нормальное (не пиковое) значение должно быть близко к нолю. Увеличение свопинга говорит о необходимости наращивания ОЗУ или уменьшения числа исполняемых на сервере прикладных программ.

SQL Справочник

SQL Ключевые слова
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE

MySQL Функции
Функции строк
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE
Функции дат
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK
Функции расширений
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION

SQL Server функции
Функции строк
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN
Функции дат
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR
Функции расширений
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME

MS Access функции
Функции строк
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase
Функции чисел
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val
Функции дат
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year
Другие функции
CurrentUser
Environ
IsDate
IsNull
IsNumeric

SQL Краткий справочник

Поделитесь в социальных сетях:FacebookTwitterВКонтакте
Напишите комментарий