Set sql что это
Set sql что это
Например, столбец, определенный как SET(«один», «два») NOT NULL может принимать такие значения:
Множество SET может иметь максимум 64 различных элемента.
Начиная с 3.23.51, оконечные пробелы удаляются из значений множества SET в момент создания таблицы.
MySQL сохраняет значения SET в численном виде, где младший бит сохраненной величины соответствует первому элементу множества. Если вы делаете выборку столбца SET в числовом контексте, полученное значение содержит соответствующим образом установленные биты, создающие значение столбца. Например, вы можете сделать выборку численного значения SET-столбца таким образом:
SET элемент | числовое значение | двоичное значение |
a | 1 | 0001 |
b | 2 | 0010 |
c | 4 | 0100 |
d | 8 | 1000 |
Если вы вставляете в столбец SET некорректую величины, это значение будет проигнорировано.
SET-значения сортируются в соответствии с числовым представлением. NULL-значения идут в первую очередь.
Обычно, следует выполнять SELECT для SET-столбца, используя оператор LIKE или функцию FIND_IN_SET() :
Но и такая форма также работает:
Первый оператор в каждом примере делает выборку точного значения. Второй оператор делает выборку значений, содержащих первого элемента множества.
Если вам нужно получить все возможные значения для столбца SET, вам следует вызвать SHOW COLUMNS FROM table_name LIKE set_column_name и проанализировать SET-определение во втором столбце.
Синтаксис команды SET
Команда SET устанавливает различные опции, влияющие на работу сервера или клиента.
Следующие примеры иллюстрируют различный синтаксис, который можно использовать для установки переменных.
В MySQL 4.0.3 мы также добавили режимы GLOBAL и SESSION и реализовали доступ к наиболее важным переменным запуска.
Если вы устанавливаете несколько переменных в одной команде, то последний указанный режим GLOBAL | SESSION будет использован.
Синтаксис @@variable_name поддерживается с тем, чтобы сделать MySQL более совместимым с другими СУБД.
Различные системные переменные, которые вы можете установить, описаниы в этом руководстве. Системные переменные.
Чтобы избежать неправильного использования, MySQL будет сообщать об ошибке, если вы будете выполнять SET GLOBAL на переменной, которую только можно изменять в SET SESSION или если вы не выбираете режим GLOBAL для глобальной переменной.
CHARACTER SET character_set_name | DEFAULT
Следует учитывать, что синтаксис установки опции CHARACTER SET отличается от синтаксиса установки других опций.
PASSWORD = PASSWORD(‘некий пароль’)
Устанавливает пароль для текущего пользователя. Любой не анонимный пользователь может изменить свой собственный пароль!
PASSWORD FOR user = PASSWORD(‘некий пароль’)
SQL_AUTO_IS_NULL = 0 | 1
SQL_BIG_SELECTS = 0 | 1
SQL_BUFFER_RESULT = 0 | 1
SQL_BUFFER_RESULT будет заносить результат выполнения команд SELECT во временную таблицу. Это поможет MySQL раньше освободить блокировки таблиц и окажется полезным в случаях, когда требуется значительное время для пересылки результирующего набора данных клиенту.
LOW_PRIORITY_UPDATES = 0 | 1
MAX_JOIN_SIZE = значение | DEFAULT
Следует учитывать, что если результат запроса всегда находится в кэше запросов, то упомянутая выше проверка выполняться не будет. Вместо этого MySQL будет отсылать результат клиенту, поскольку результат запроса уже вычислен и отсылка его клиенту не создаст нагрузки для сервера.
Определяет установку кэша запросов для данного потока.
SQL_SAFE_UPDATES = 0 | 1
SQL_SELECT_LIMIT = value | DEFAULT
SQL_LOG_UPDATE = 0 | 1
SQL_QUOTE_SHOW_CREATE = 0 | 1
При установке этой опции в 1 SHOW CREATE TABLE будет заключать в кавычки имена таблиц и столбцов. Имеет значение Включено по умолчанию, чтобы работала репликация таблиц с изощренными именами столбцов (SHOW CREATE TABLE).
TIMESTAMP = timestamp_value | DEFAULT
Устанавливает время для данного клиента. Применяется для получения первоначальной временной метки при использовании журнала обновлений для восстановления строк. Переменная timestamp_value должна представлять системное время Unix, а не временную метку MySQL.
Set sql что это
SET — изменить параметр времени выполнения
Синтаксис
Описание
Команда SET изменяет конфигурационные параметры времени выполнения. С помощью SET можно «на лету» изменить многие из параметров, перечисленных в Главе 19. (Но для изменения некоторых могут потребоваться права суперпользователя, а другие нельзя изменять после запуска сервера или сеанса.) SET влияет на значение параметра только в рамках текущего сеанса.
Действия SET или SET LOCAL также отменяются при откате к точке сохранения, установленной до выполнения этих команд.
Если SET LOCAL применяется в функции, параметр SET для которой устанавливает значение той же переменной (см. CREATE FUNCTION ), действие команды SET LOCAL прекращается при выходе из функции; то есть, в любом случае восстанавливается значение, существовавшее при вызове функции. Это позволяет использовать SET LOCAL для динамических и неоднократных изменений параметра в рамках функции, и при этом иметь удобную возможность использовать параметр SET для сохранения и восстановления значения, полученного извне. Однако обычная команда SET переопределяет любой параметр SET окружающей функции; её действие сохраняется, если не происходит откат транзакции.
Примечание
Параметры
Указывает, что команда действует только в рамках текущей транзакции. После COMMIT или ROLLBACK в силу вновь вступает значение, определённое на уровне сеанса. При выполнении такой команды вне блока транзакции выдаётся предупреждение и больше ничего не происходит. параметр_конфигурации
Имя устанавливаемого параметра времени выполнения. Доступные параметры описаны в Главе 19 и ниже. значение
Новое значение параметра. Параметры могут задаваться в виде строковых констант, идентификаторов, чисел или списков перечисленных типов через запятую, в зависимости от конкретного параметра. Указание DEFAULT в данном контексте позволяет сбросить параметр к значению по умолчанию (то есть, к тому значению, которое он имел бы, если в текущем сеансе не выполнялись бы команды SET ).
Помимо конфигурационных параметров, описанных в Главе 19, есть ещё несколько параметров, которые можно изменить только командой SET или которые имеют особый синтаксис:
Это начальное значение также можно установить, вызвав функцию setseed : TIME ZONE
Часовой пояс Беркли, штат Калифорния. ‘Europe/Rome’
Часовой пояс, сдвинутый от UTC на 7 часов к западу (равнозначен PDT). Положительные значения означают сдвиг от UTC к востоку. INTERVAL ‘-08:00’ HOUR TO MINUTE
Часовой пояс, сдвинутый от UTC на 8 часов к западу (равнозначен PST). LOCAL
DEFAULT
Устанавливает в качестве часового пояса местный часовой пояс (то есть, значение серверного параметра timezone по умолчанию).
Узнать о часовых поясах подробнее можно в Подразделе 8.5.3.
Замечания
Примеры
Установка пути поиска схем:
Установка традиционного стиля даты POSTGRES с форматом ввода « день, месяц, год » :
Установка часового пояса для Беркли, штат Калифорния:
Установка часового пояса Италии:
Совместимость
Инструкции SET (Transact-SQL)
Язык Transact-SQL предоставляет несколько инструкций SET, которые изменяют текущий сеанс, управляя специфическими данными. Инструкции SET группируются в категории, показанные в следующей таблице.
Сведения об установке локальных переменных с помощью инструкции SET см. в разделе SET @local_variable (Transact-SQL).
Категория | Операторы |
---|---|
Инструкции даты и времени | SET DATEFIRST SET DATEFORMAT |
Инструкции блокировки | SET DEADLOCK_PRIORITY SET QUOTED_IDENTIFIER |
Инструкции выполнения запросов | SET ARITHABORT SET FMTONLY SET RESULT SET CACHING (предварительная версия) SET TEXTSIZE |
Инструкции настроек ISO | SET ANSI_DEFAULTS SET ANSI_WARNINGS |
Статистические инструкции | SET FORCEPLAN SET STATISTICS TIME |
Инструкции управления транзакциями | SET IMPLICIT_TRANSACTIONSРекомендации по использованию инструкций SETВсе инструкции SET выполняются во время выполнения или запуска, кроме следующих инструкций, которые выполняются во время анализа: Если инструкция SET выполняется в хранимой процедуре или триггере, значение параметра SET восстанавливается после того, как хранимая процедура или триггер вернет управление. Также, если инструкция SET указана в динамической строке SQL, которая выполняется с помощью процедуры sp_executesql или инструкции EXECUTE, значение параметра SET восстанавливается после того, как управление вернется из пакета, указанного в динамической строке SQL. Хранимые процедуры выполняются с настройками SET, указанными во время выполнения, кроме инструкций SET ANSI_NULLS и SET QUOTED_IDENTIFIER. Хранимые процедуры, использующие инструкцию SET ANSI_NULLS или SET QUOTED_IDENTIFIER, используют настройку, указанную в хранимой процедуре во время создания. При использовании внутри хранимой процедуры любые установки SET игнорируются. Параметр user options процедуры sp_configure допускает настройку в пределах сервера и работает с множеством баз данных. Эта настройка ведет себя так же, как и явная инструкция SET, за исключением того, что возникает во время входа в систему. Настройки базы данных, устанавливаемые с помощью инструкции ALTER DATABASE, действительны только на уровне базы данных и применяются только при явном задании. Параметры базы данных переопределяют параметры экземпляра, которые устанавливаются с помощью процедуры sp_configure. Если в инструкции SET используется значение ON и OFF, можно указать любое из них для нескольких параметров SET. Это не относится к статистическим параметрам SET. Например, инструкция SET QUOTED_IDENTIFIER, ANSI_NULLS ON устанавливает параметры QUOTED_IDENTIFIER и ANSI_NULLS в значение ON. Настройки инструкции SET переопределяют идентичные настройки параметров базы данных, которые были установлены с помощью инструкции ALTER DATABASE. Например, значение, указанное в инструкции SET ANSI_NULLS, перекроет настройку базы данных для параметра ANSI_NULL. Кроме того, для некоторых настроек подключений автоматически устанавливается значение ON, если пользователь подключается к базе данных, основываясь на значениях, заданных предыдущим использованием настроек процедуры sp_configure user options, или на значениях, которые применимы ко всем подключениям ODBC и OLE/DB. Настройка SET LOCK_TIMEOUT не влияет на выполнение инструкций ALTER, CREATE и DROP DATABASE. Если инструкция SET глобальной или быстрой настройки устанавливает несколько настроек, то следующая инструкция SET быстрой настройки переопределяет предыдущие настройки для всех параметров, которых она касается. Если параметр SET, которого касается инструкция SET быстрой настройки, устанавливается после запуска такой инструкции, то индивидуальная инструкция SET переопределяет соответствующие быстрые настройки. Пример инструкции SET быстрой настройки: SET ANSI_DEFAULTS. При использовании пакетов контекст базы данных определяется пакетом, установленным с помощью инструкции USE. Незапланированные запросы и все другие инструкции, которые выполняются за пределами хранимых процедур и которые содержатся в пакетах, наследуют настройки параметров базы данных и подключения, установленные с помощью инструкции USE. Запросы режима MARS совместно используют глобальное состояние, которое содержит большую часть настроек параметров SET последней сессии. Параметры SET могут измениться при выполнении любого запроса. Эти изменения специфичны для контекста запроса, в котором они устанавливаются, и не влияют на другие параллельные запросы режима MARS. Однако после завершения выполнения запроса новые параметры SET копируются в глобальное состояние сеанса. Новые запросы, которые выполняются в том же самом сеансе, после этого изменения будут использовать новые значения параметров SET. При выполнении хранимой процедуры из пакета либо из другой хранимой процедуры она выполняется под значениями параметров, которые установлены в базе данных, содержащей хранимую процедуру. Например, если хранимая процедура db1.dbo.sp1 вызывает хранимую процедуру db2.dbo.sp2, то хранимая процедура sp1 выполняется под текущим значением уровня совместимости базы данных db1, а хранимая процедура sp2 — под текущим значением уровня совместимости базы данных db2. Когда инструкция Transact-SQL ссылается на объекты, которые размещены в многих базах данных, к ней применяется текущий контекст базы данных и текущий контекст подключения. В этом случае, если инструкция языка Transact-SQL находится в пакете, текущим контекстом соединения является база данных, определенная инструкцией USE. Если инструкция языка Transact-SQL находится в хранимой процедуре, то контекстом соединения является база данных, которая содержит хранимую процедуру. Если вы создаете индексы в вычисляемых столбцах и индексированных представлениях и управляете ими, необходимо установить для следующих параметров SET значение ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING и ANSI_WARNINGS. Установите для параметра NUMERIC_ROUNDABORT значение OFF. Если обязательное значение любого из этих параметров не задано, инструкции INSERT, UPDATE, DELETE, DBCC CHECKDB и DBCC CHECKTABLE для индексированных представлений или таблиц с индексами на основе вычисляемых столбцов не смогут быть выполнены. SQL Server сформирует ошибку с указанием всех неправильно заданных параметров. Также SQL Server будет выполнять инструкции SELECT в этих таблицах или индексных представлениях, как будто индексы в вычисляемых столбцах или представлениях не существуют. Если для SET RESULT_SET_CACHING указать значение ON, будет включена функция кэширования результатов для текущего сеанса клиента. Для RESULT_SET_CACHING нельзя указать значение ON для сеанса, если на уровне базы данных указано значение OFF. Если для SET RESULT_SET_CACHING указать значение OFF, будет отключена функция кэширования результатов для текущего сеанса клиента. Для изменения этого параметра требуется членство в роли public. Область применения: Azure Synapse Analytics 2-го поколения SET @local_variable (Transact-SQL)Устанавливает указанную локальную переменную, предварительно созданную с помощью инструкции DECLARE @local_variable, в указанное значение. Синтаксические обозначения в Transact-SQL СинтаксисСинтаксис для SQL Server и Базы данных SQL Azure: Синтаксис для Azure Synapse Analytics и Parallel Data Warehouse: Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям. Аргументы@ local_variable property_name field_name udt_name @ SQLCLR_local_variable mutator_method += Сложение и присваивание -= Вычитание и присваивание *= Умножение и присваивание /= Деление и присваивание %= Остаток от деления и присваивание &= Выполнение побитовой операции AND и присваивание ^= Выполнение побитовой операции XOR и присваивание |= Выполнение побитовой операции OR и присваивание cursor_variable cursor_name CURSOR SCROLL FORWARD_ONLY STATIC KEYSET Если какая-то строка удаляется, при попытке выбрать эту строку функция @@FETCH_STATUS возвращает значение –2. Обновление значений ключа из-за границ курсора аналогично удалению старой строки с последующей вставкой новой строки. Строка с новыми значениями невидима, а при попы получить строку со старыми значениями для @@FETCH_STATUS возвращается значение –2. Новые значения видимы сразу, если обновление выполнено через курсор с помощью предложения WHERE CURRENT OF. DYNAMIC FAST_FORWARD READ_ONLY SCROLL LOCKS OPTIMISTIC TYPE_WARNING FOR select_statement Если вы используете ключевые слова DISTINCT, UNION, GROUP BY или HAVING либо в аргумент select_list включено статистическое выражение, будет создан курсор STATIC. Если каждая из базовых таблиц не имеет уникального индекса и курсора ISO SCROLL или запрашивается курсор KEYSET Transact-SQL, он автоматически будет курсором STATIC. Если аргумент select_statement содержит предложение ORDER BY, в котором столбцы не являются уникальными идентификаторами строк, курсор DYNAMIC будет преобразован в курсор KEYSET или в курсор STATIC, если курсор KEYSET нельзя открыть. То же самое происходит с курсором, определенным при помощи синтаксиса ISO, но без ключевого слова STATIC. READ ONLY КомментарииПосле объявления переменной она получает значение NULL. Используйте инструкцию SET, чтобы установить значение, отличное от NULL, для объявленной переменной. Инструкция SET, которая назначает значение переменной, возвращает одно значение. Если инициализируется несколько переменных, следует использовать отдельные инструкции SET для каждой локальной переменной. Вы можете использовать переменные только в выражениях, но не вместо имен объектов или ключевых слов. Для создания динамических инструкций Transact-SQL используйте инструкцию EXECUTE. Синтаксические правила для SET @ cursor_variable не включают ключевые слова LOCAL и GLOBAL. Если вы используете синтаксис SET @ cursor_variable = CURSOR. курсор создается как GLOBAL или LOCAL в зависимости от заданного по умолчанию параметра локального курсора базы данных. Переменные курсора всегда локальные, даже если ссылаются на глобальный курсор. Если переменная курсора ссылается на глобальный курсор, курсор имеет ссылки как на глобальный, так и на локальный курсоры. Дополнительные сведения см. в примере В. Дополнительные сведения см. в статье DECLARE CURSOR (Transact-SQL). Вы можете использовать составной оператор присваивания во всех случаях, когда выполняется присваивание с выражением справа от оператора, включающим переменные, а также инструкцию SET в инструкциях UPDATE, SELECT и RECEIVE. Не используйте переменную в инструкции SELECT для сцепления значений (то есть для вычисления статистических значений). Запрос может вернуть непредвиденные результаты. Это связано с тем, что все выражения в списке SELECT (включая назначения) могут быть выполнены несколько раз для каждой строки вывода. Дополнительные сведения см. в этой статье базы знаний. РазрешенияТребуется членство в роли public. Все пользователи могут использовать SET @ local_variable. ПримерыA. Отображение значения переменной, инициализированной при помощи инструкции SETБ. Использование локальной переменной, значение которой назначено при помощи инструкции SET в инструкции SELECTВ. Использование составного оператора присваивания для локальной переменнойГ. Использование инструкции SET с глобальным курсоромСледующий пример создает локальную переменную и устанавливает переменную курсора в значение имени глобального курсора. Д. Определение курсора при помощи инструкции SETСледующий пример использует инструкцию SET для определения курсора. Е. Присваивание значения из запросаСледующий пример использует запрос для присваивания значения переменной. Ж. Присваивание значения переменной определяемого пользователем типа путем изменения свойства типаЗ. Присваивание значения переменной определяемого пользователем типа путем вызова метода типаСледующий пример устанавливает значение определяемого пользователем типа point путем вызова метода SetXY типа. И. Создание переменной для типа CLR и вызов метода мутатораПримеры: Azure Synapse Analytics и Система платформы аналитики (PDW)К. Отображение значения переменной, инициализированной при помощи инструкции SETЛ. Использование локальной переменной, значение которой назначено при помощи инструкции SET в инструкции SELECTМ. Использование составного оператора присваивания для локальной переменнойН. Присваивание значения из запросаСледующий пример использует запрос для присваивания значения переменной.
|