Согласно процедурному расширению языка SQL (Transact-SQL), для работы с MS SQL Server предусмотрены различные типы данных. Конкретный тип данных указывается для любого столбца во время создания таблицы и определяет, какие именно значения можно будет хранить, а также сколько места в памяти компьютера они будут занимать. Эта статья представляет собой обзор существующих типов данных для MS SQL Server, которые, в зависимости от поддерживаемых значений, делятся на группы.
Transact-SQL является процедурным расширением SQL (structured query language), которое создано корпорацией Microsoft специально для баз данных Microsoft SQL Server и Sybase ASE. Известный язык программирования SQL был расширен рядом дополнительных возможностей:
- управляющими операторами,
- локальными и глобальными переменными,
- вспомогательными функциями для обработки строк, дат и пр.,
- поддержкой аутентификации Microsoft Windows.
Сегодня язык Transact-SQL — это, по сути, ключ к применению MS SQL Server. Таким образом, все программные приложения, взаимодействующие с экземпляром MS SQL Server, вне зависимости от реализации и UI, выполняют отправку серверу инструкций Transact-SQL.
Директивами сценария являются специфические команды, используемые лишь в MS SQL. Такие команды позволяют серверу определять правила работы с транзакциями и скриптом.
Типы данных (data types)
Как это принято и в других языках программирования, язык T-SQL поддерживает множество разных типов данных, используемых для хранения переменных в MS SQL. Эти типы данных можно разделить на группы:
-
числовые. Служат для хранения числовых переменных;
-
типы данных для дат. Обеспечивают хранение значений времени и даты;
-
символьный. Нужен для символьных типов данных;
-
двоичные. Обеспечивают хранение бинарных типов данных;
-
большого объема. Этот тип данных (data type) нужен для хранения больших бинарных значений;
-
специальные. Сюда входит широкий спектр типов данных: указатели, таблицы и пр.
Давайте рассмотрим некоторые из вышеописанных типов данных подробнее.
Числовые типы данных
К числовым типам данных относят:
-
BIT: может храниться 0 либо 1. По сути, это аналог булевого типа в программировании. Занимает всего один байт;
-
TINYINT: хранит целые числа в пределах 0-255. Тоже занимает 1 байт и часто используется в целях хранения небольших чисел;
-
SMALLINT: сохраняет числа в пределах от –32 768 до 32 767. Занимает уже 2 байта;
-
INT: диапазон хранения — от –2 147 483 648 до 2 147 483 647. 4 байта. Тип данных int чаще всего применяется для сохранения числовых значений;
-
BIGINT: предназначен для очень больших значений (от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807) и занимает в памяти 8 байт;
-
DECIMAL: для хранения переменных c фиксированной точностью. В зависимости от количества чисел после запятой переменная типа Decimal может занимать от 5 до 17 байт.
Также этот тип данных способен принимать 2 параметра — scale и precision: DECIMAL(precision, scale).
Параметр precision служит для представления наибольшего количества цифр, способных хранить числовое значение. По дефолту оно равняется 18-ти, а вообще должно располагаться в диапазоне 1-38.
Параметр scale служит для представления максимального количества цифр, которые способно содержать число после запятой. Такое значение должно быть в диапазоне от 0 до значения, которое указывается параметром precision. По умолчанию равно нулю;
-
NUMERIC: этот тип данных аналогичен предыдущему;
-
SMALLMONEY: сохраняет дробные значения в пределах от -214 748.3648 до 214 748.3647. Служит для хранения денежных величин. Эквивалентен DECIMAL(10,4), занимает 4 байта;
-
MONEY: сохраняет дробные значения в диапазоне от -922 337 203 685 477.5808 до 922 337 203 685 477.5807. Служит для представления денежных величин, занимает 8 байт. Соответствует DECIMAL(19,4).
-
FLOAT: для хранения значений от –1.79E+308 до 1.79E+308. В зависимости от дробной части может занимать от 4 до 8 байт.
Этот тип данных способен иметь форму определения в формате FLOAT(n), где n — это количество бит, используемых в целях хранения десятичной части числа (речь идет о мантиссе). По дефолту n равняется 53;
-
REAL: сохраняет числа в диапазоне от –340E+38 to 3.40E+38. Соответствует FLOAT(24), занимает 4 байта.
Рассмотрим пример числового столбца с таким типом данных:
Тип данных для времени
Существуют типы данных, предназначенных для отображения даты и времени:
-
DATE: сохраняет даты, начиная с 1 января 0001 года (0001-01-01), заканчивая 31 декабрём 9999 г. (9999-12-31). Занимает 3 байта;
-
TIME: сохраняет время в диапазоне 00:00:00.0000000 — 23:59:59.9999999. Способен иметь форму TIME(n), причем n здесь представляет число цифр от 0 до 7 в дробной части секунд. Занимает 3-5 байт;
-
DATETIME: обеспечивает сохранение объектов даты и времени в диапазоне 01/01/1753 — 31/12/9999. 8 байт;
-
DATETIME2: сохраняет дату и время в диапазоне 01/01/0001 00:00:00.0000000 — 31/12/9999 23:59:59.9999999. Может занимать 6-8 байт, что зависит от временной точности. Способен иметь форму DATETIME2(n), причем n здесь — это число цифр в пределах 0-7 в дробной части секунд;
-
SMALLDATETIME: сохраняет даты и время в пределах 01/01/1900-06/06/2079, то есть речь идет о ближайших датах. 4 байта;
-
DATETIMEOFFSET: для дат и времени в диапазоне от 0001-01-01 до 9999-12-31. Обеспечивается сохранение детальной информации о времени, точность составляет 100 наносекунд. 10 байт;
Наиболее распространены следующие форматы дат:
В этом формате 2-значные числа в пределах 00-49 воспринимаются в качестве дат диапазона 2000-2049. А числовые значения 50-99 воспринимаются в качестве диапазона 1950-1999.
Распространены следующие временные форматы:
Строковый тип данных
Какие строковые типы данных бывают:
-
CHAR: для строк длиной 1-8000 символов. На каждый символ выделяется 1 байт. Этот тип данных не подходит для многих языков, а все потому, что он сохраняет символы не в кодировке Unicode.
Число символов, которое способен хранить столбец, передается с помощью скобок. К примеру, для столбца CHAR(10) выделится 10 байт. Когда мы сохраняем в столбце строку размером меньше десяти символов, она дополнится пробелами;
-
VARCHAR: может хранить строки, причем здесь тоже на каждый символ происходит выделение 1 байта. Для столбца можно указать определенную длину в диапазоне 1-8 000 символов, к примеру, VARCHAR(10). Когда строка должна иметь более 8000 символов, задается размер MAX, причем на хранение строки может выделять до 2 Гб: VARCHAR(MAX).
Этот тип данных также не подходит для многих языков и все по той же причине: хранит символы не в Unicode;
-
NCHAR: для строки с кодировкой Unicode и длиной 1-4 000 символов. На каждый символ — 2 байта;
-
NVARCHAR: сохраняет строку в Unicode. На каждый символ — 2 байта. Есть возможность задать конкретный размер в пределах 1-4 000 символов. Когда строка должна включать более 4000 символов, задается размер MAX, а на хранение строки выделяется до 2 Гб.
Также существуют такие типы данных, как TEXT и NTEXT. Они считаются устаревшими, поэтому их лучше не и��пользовать. Вместо только что упомянутых типов данных применяют VARCHAR и NVARCHAR.
Рассмотрим примеры определения строковых столбцов:
О бинарных типах данных
Пришла очередь и двоичным данным:
-
BINARY: для сохранения бинарных типов данных в качестве последовательности в пределах 1-8 000 байт;
-
VARBINARY: для хранения бинарных типов данных в качестве последовательности в диапазоне 1-8 000 байт, либо до 2^31–1 байт в случае применения значения MAX (VARBINARY(MAX)).
Такой бинарный тип, как IMAGE, тоже устарел, поэтому вместо него желательно использовать тип данных VARBINARY.
Специальные типы данных
В этой группе перечислим оставшиеся типы данных:
-
UNIQUEIDENTIFIER: уникальный идентификатор GUID (строка с уникальным значением), занимающий 16 байт;
-
TIMESTAMP: некоторое число, хранящее номер версии строки в таблице. Может занимать 8 байт;
-
CURSOR: для набора строк;
-
HIERARCHYID: для представления позиции в иерархии;
-
SQL_VARIANT: для хранения значений практически любого другого типа данных T-SQL;
-
XML: для хранения документов XML либо фрагментов XML-документов. Занимает до двух гигабайт;
-
TABLE: представляет определение таблицы;
-
GEOGRAPHY: обеспечивает хранение географических данных (широты, долготы);
-
GEOMETRY: для координат местонахождения на плоскости.
Примечание: для работы с русскими символами тип данных применяют, используя приставку «n» (nchar, nvarchar, ntext). Такие приставки кодируют символы 2-мя байтами. Если говорить иными словами, то для работы с кодировкой Unicode используют тип данных с «n» (вспоминаем слово national). Так же записываются и строковые константы.
Когда речь идет о типе данных для значения переменной длины, задействуют тип данных, имеющий приставку «var» (character varying). Тип данных без приставки «var» характеризуется фиксированной длиной области памяти, причем неиспользованная часть заполняется пробелами либо нулями.
По материалам:
— https://metanit.com/sql/sqlserver/3.3.php;
— https://ru.wikipedia.org/wiki/Transact-SQL.
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Типы данных в MS SQL. Transact-SQL OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Согласно процедурному расширению языка SQL (Transact-SQL), для работы с MS SQL Server предусмотрены различные типы данных. Конкретный тип данных указывается для любого столбца во время создания таблицы и определяет, какие именно значения можно будет хранить, а также сколько места в памяти компьютера они будут занимать. Эта статья представляет собой обзор существующих типов данных для MS" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/tipy-dannyh-v-ms-sql-transact-sql/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/#article","name":"\u0422\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 MS SQL. Transact-SQL OTUS","headline":"\u0422\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 MS SQL. Transact-SQL","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2021\/03\/oj-1080x720-1-2.png","width":1080,"height":720},"datePublished":"2021-03-12T09:45:25+00:00","dateModified":"2021-03-12T09:45:30+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, SQL, T-SQL"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/#listItem","position":2,"name":"\u0422\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 MS SQL. Transact-SQL","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/#webpage","url":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/","name":"\u0422\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 MS SQL. Transact-SQL OTUS","description":"\u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u043c\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e \u044f\u0437\u044b\u043a\u0430 SQL (Transact-SQL), \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 MS SQL Server \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u0442\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u0437\u043e\u0440 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f MS","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2021\/03\/oj-1080x720-1-2.png","@id":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/#mainImage","width":1080,"height":720},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/#mainImage"},"datePublished":"2021-03-12T09:45:25+00:00","dateModified":"2021-03-12T09:45:30+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/984" /><link rel='shortlink' href='https://otus.ru/journal/?p=984' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Ftipy-dannyh-v-ms-sql-transact-sql%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Ftipy-dannyh-v-ms-sql-transact-sql%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-984 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-984" class="the-post post-984 post type-post status-publish format-standard has-post-thumbnail category-polza tag-sql tag-t-sql">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Типы данных в MS SQL. Transact-SQL
</h1>
<a href="https://otus.ru/journal/tipy-dannyh-v-ms-sql-transact-sql/" class="date-link" data-wpel-link="internal"><time class="post-date">12 марта, 2021</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-1-2.png" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Типы данных в MS SQL. Transact-SQL" title="Типы данных в MS SQL. Transact-SQL" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-1-2-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-1-2-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-1-2-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-1-2-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-1-2-270x180.png 270w" data-src="https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-1-2-770x515.png" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%9D%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE_%D1%81%D0%BB%D0%BE%D0%B2_%D0%BE_T-SQL" title="Несколько слов о T-SQL">Несколько слов о T-SQL</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#%D0%A2%D0%B8%D0%BF%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_data_types" title="Типы данных (data types)">Типы данных (data types)</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%A7%D0%B8%D1%81%D0%BB%D0%BE%D0%B2%D1%8B%D0%B5_%D1%82%D0%B8%D0%BF%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Числовые типы данных">Числовые типы данных</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%A2%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%BB%D1%8F_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8" title="Тип данных для времени">Тип данных для времени</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%BE%D0%B2%D1%8B%D0%B9_%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Строковый тип данных">Строковый тип данных</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%9E_%D0%B1%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D1%85_%D1%82%D0%B8%D0%BF%D0%B0%D1%85_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="О бинарных типах данных">О бинарных типах данных</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%A1%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%82%D0%B8%D0%BF%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Специальные типы данных">Специальные типы данных</a></li></ul></li></ul></nav></div>
<p>Согласно процедурному расширению языка <strong>SQL </strong>(Transact-SQL), для работы с MS SQL Server предусмотрены различные типы данных. Конкретный тип данных указывается для любого столбца во время создания таблицы и определяет, какие именно значения можно будет хранить, а также сколько места в памяти компьютера они будут занимать. Эта статья представляет собой <strong>обзор существующих типов данных</strong> для MS SQL Server, которые, в зависимости от поддерживаемых значений, делятся на группы.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE_%D1%81%D0%BB%D0%BE%D0%B2_%D0%BE_T-SQL"></span>Несколько слов о T-SQL<span class="ez-toc-section-end"></span></h2>
<p><strong>Transact-SQL</strong> является процедурным расширением SQL (structured query language), которое создано корпорацией Microsoft специально для баз данных Microsoft SQL Server и Sybase ASE. Известный язык программирования SQL был расширен рядом <strong>дополнительных возможностей</strong>:</p>
<ul><li>управляющими операторами,</li><li>локальными и глобальными переменными,</li><li>вспомогательными функциями для обработки строк, дат и пр.,</li><li>поддержкой аутентификации Microsoft Windows.</li></ul>
<p>Сегодня язык Transact-SQL — это, по сути, <strong>ключ </strong>к применению MS SQL Server. Таким образом, все программные приложения, взаимодействующие с экземпляром MS SQL Server, вне зависимости от реализации и UI, выполняют отправку серверу инструкций Transact-SQL.</p>
<p>Директивами сценария являются специфические команды, используемые лишь в MS SQL. Такие команды позволяют серверу определять правила работы с транзакциями и <a href="https://otus.ru/journal/osnovy-raboty-so-skriptami/" data-wpel-link="internal">скриптом</a>.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B8%D0%BF%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_data_types"></span><strong>Типы данных (</strong><strong>data</strong><strong> </strong><strong>types</strong><strong>)</strong><span class="ez-toc-section-end"></span></h2>
<p>Как это принято и в других языках программирования, язык T-SQL поддерживает множество разных типов данных, используемых для хранения переменных в MS SQL. Эти типы данных можно разделить на группы:</p>
<ul><li><strong>числовые</strong>. Служат для хранения числовых переменных;</li><li><strong>типы данных для дат</strong>. Обеспечивают хранение значений времени и даты;</li><li><strong>символьный</strong>. Нужен для символьных типов данных;</li><li><strong>двоичные</strong>. Обеспечивают хранение бинарных типов данных;</li><li><strong>большого объема</strong>. Этот тип данных (data type) нужен для хранения больших бинарных значений;</li><li><strong>специальные</strong>. Сюда входит широкий спектр типов данных: указатели, таблицы и пр.</li></ul>
<p>Давайте рассмотрим некоторые из вышеописанных типов данных подробнее.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A7%D0%B8%D1%81%D0%BB%D0%BE%D0%B2%D1%8B%D0%B5_%D1%82%D0%B8%D0%BF%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85"></span><strong>Числовые типы данных</strong><span class="ez-toc-section-end"></span></h3>
<p>К числовым типам данных относят:</p>
<ul><li><strong>BIT</strong>: может храниться 0 либо 1. По сути, это аналог булевого типа в программировании. Занимает всего один байт;</li><li><strong>TINYINT</strong>: хранит целые числа в пределах 0-255. Тоже занимает 1 байт и часто используется в целях хранения небольших чисел;</li><li><strong>SMALLINT</strong>: сохраняет числа в пределах от –32 768 до 32 767. Занимает уже 2 байта;</li><li><strong><a href="https://otus.ru/journal/tipy-dannyh-i-int-v-programmirovanii/" data-wpel-link="internal">INT</a></strong>: диапазон хранения — от –2 147 483 648 до 2 147 483 647. 4 байта. Тип данных int чаще всего применяется для сохранения числовых значений;</li><li><strong>BIGINT</strong>: предназначен для очень больших значений (от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807) и занимает в памяти 8 байт;</li><li><strong>DECIMAL</strong>: для хранения переменных c фиксированной точностью. В зависимости от количества чисел после запятой переменная типа Decimal может занимать от 5 до 17 байт.</li></ul>
<p>Также этот тип данных способен принимать 2 параметра — scale и precision: <em>DECIMAL(precision, scale)</em>.</p>
<p>Параметр precision служит для представления наибольшего количества цифр, способных хранить числовое значение. По дефолту оно равняется 18-ти, а вообще должно располагаться в диапазоне 1-38.</p>
<p>Параметр scale служит для представления максимального количества цифр, которые способно содержать число после запятой. Такое значение должно быть в диапазоне от 0 до значения, которое указывается параметром precision. По умолчанию равно нулю;</p>
<ul><li><strong>NUMERIC</strong>: этот тип данных аналогичен предыдущему;</li><li><strong>SMALLMONEY</strong>: сохраняет дробные значения в пределах от -214 748.3648 до 214 748.3647. Служит для хранения денежных величин. Эквивалентен DECIMAL(10,4), занимает 4 байта;</li><li><strong>MONEY</strong>: сохраняет дробные значения в диапазоне от -922 337 203 685 477.5808 до 922 337 203 685 477.5807. Служит для представления денежных величин, занимает 8 байт. Соответствует DECIMAL(19,4).</li><li><strong>FLOAT</strong>: для хранения значений от –1.79E+308 до 1.79E+308. В зависимости от дробной части может занимать от 4 до 8 байт.</li></ul>
<p>Этот тип данных способен иметь форму определения в формате FLOAT(n), где n — это количество бит, используемых в целях хранения десятичной части числа (речь идет о мантиссе). По дефолту n равняется 53;</p>
<ul><li><strong>REAL</strong>: сохраняет числа в диапазоне от –340E+38 to 3.40E+38. Соответствует FLOAT(24), занимает 4 байта.</li></ul>
<p>Рассмотрим пример числового столбца с таким типом данных:</p>
<figure class="wp-block-image size-large"><img decoding="async" width="245" height="75" src="https://otus.ru/journal/wp-content/uploads/2021/03/1.png" alt="Типы данных в MS SQL. Transact-SQL" class="wp-image-987" srcset="https://otus.ru/journal/wp-content/uploads/2021/03/1.png 245w, https://otus.ru/journal/wp-content/uploads/2021/03/1-150x46.png 150w" sizes="(max-width: 245px) 100vw, 245px" /></figure>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%BB%D1%8F_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8"></span><strong>Тип данных для времени</strong><span class="ez-toc-section-end"></span></h3>
<p>Существуют типы данных, предназначенных для отображения даты и времени:</p>
<ul><li><strong>DATE</strong>: сохраняет даты, начиная с 1 января 0001 года (0001-01-01), заканчивая 31 декабрём 9999 г. (9999-12-31). Занимает 3 байта;</li><li><strong>TIME</strong>: сохраняет время в диапазоне 00:00:00.0000000 — 23:59:59.9999999. Способен иметь форму TIME(n), причем n здесь представляет число цифр от 0 до 7 в дробной части секунд. Занимает 3-5 байт;</li></ul>
<ul><li><strong>DATETIME</strong>: обеспечивает сохранение объектов даты и времени в диапазоне 01/01/1753 — 31/12/9999. 8 байт;</li><li><strong>DATETIME2</strong>: сохраняет дату и время в диапазоне 01/01/0001 00:00:00.0000000 — 31/12/9999 23:59:59.9999999. Может занимать 6-8 байт, что зависит от временной точности. Способен иметь форму DATETIME2(n), причем n здесь — это число цифр в пределах 0-7 в дробной части секунд;</li></ul>
<ul><li><strong>SMALLDATETIME</strong>: сохраняет даты и время в пределах 01/01/1900-06/06/2079, то есть речь идет о ближайших датах. 4 байта;</li><li><strong>DATETIMEOFFSET</strong>: для дат и времени в диапазоне от 0001-01-01 до 9999-12-31. Обеспечивается сохранение детальной информации о времени, точность составляет 100 наносекунд. 10 байт;</li></ul>
<p>Наиболее распространены следующие форматы дат:</p>
<figure class="wp-block-image size-large"><img decoding="async" width="219" height="101" src="https://otus.ru/journal/wp-content/uploads/2021/03/2.png" alt="Типы данных в MS SQL. Transact-SQL" class="wp-image-988" srcset="https://otus.ru/journal/wp-content/uploads/2021/03/2.png 219w, https://otus.ru/journal/wp-content/uploads/2021/03/2-150x69.png 150w" sizes="(max-width: 219px) 100vw, 219px" /></figure>
<p>В этом формате 2-значные числа в пределах 00-49 воспринимаются в качестве дат диапазона 2000-2049. А числовые значения 50-99 воспринимаются в качестве диапазона 1950-1999.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="254" height="22" src="https://otus.ru/journal/wp-content/uploads/2021/03/3.png" alt="Типы данных в MS SQL. Transact-SQL" class="wp-image-989" srcset="https://otus.ru/journal/wp-content/uploads/2021/03/3.png 254w, https://otus.ru/journal/wp-content/uploads/2021/03/3-150x13.png 150w" sizes="(max-width: 254px) 100vw, 254px" /></figure>
<p>Распространены следующие временные форматы:</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="294" height="165" src="https://otus.ru/journal/wp-content/uploads/2021/03/4.1.png" alt="Типы данных в MS SQL. Transact-SQL" class="wp-image-990" srcset="https://otus.ru/journal/wp-content/uploads/2021/03/4.1.png 294w, https://otus.ru/journal/wp-content/uploads/2021/03/4.1-150x84.png 150w" sizes="(max-width: 294px) 100vw, 294px" /></figure>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%BE%D0%B2%D1%8B%D0%B9_%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85"></span><strong>Строковый тип данных</strong><span class="ez-toc-section-end"></span></h3>
<p>Какие строковые типы данных бывают:</p>
<ul><li><strong>CHAR</strong>: для строк длиной 1-8000 символов. На каждый символ выделяется 1 байт. Этот тип данных не подходит для многих языков, а все потому, что он сохраняет символы не в кодировке Unicode.</li></ul>
<p>Число символов, которое способен хранить столбец, передается с помощью скобок. К примеру, для столбца CHAR(10) выделится 10 байт. Когда мы сохраняем в столбце строку размером меньше десяти символов, она дополнится пробелами;</p>
<ul><li><strong>VARCHAR</strong>: может хранить строки, причем здесь тоже на каждый символ происходит выделение 1 байта. Для столбца можно указать определенную длину в диапазоне 1-8 000 символов, к примеру, VARCHAR(10). Когда строка должна иметь более 8000 символов, задается размер MAX, причем на хранение строки может выделять до 2 Гб: VARCHAR(MAX).</li></ul>
<p>Этот тип данных также не подходит для многих языков и все по той же причине: хранит символы не в Unicode;</p>
<ul><li><strong>NCHAR</strong>: для строки с кодировкой Unicode и длиной 1-4 000 символов. На каждый символ — 2 байта;</li><li><strong>NVARCHAR</strong>: сохраняет строку в Unicode. На каждый символ — 2 байта. Есть возможность задать конкретный размер в пределах 1-4 000 символов. Когда строка должна включать более 4000 символов, задается размер MAX, а на хранение строки выделяется до 2 Гб.</li></ul>
<p>Также существуют такие типы данных, как <strong>TEXT</strong> и <strong>NTEXT</strong>. Они считаются устаревшими, поэтому их лучше не использовать. Вместо только что упомянутых типов данных применяют VARCHAR и NVARCHAR.</p>
<p>Рассмотрим примеры определения строковых столбцов:</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="201" height="35" src="https://otus.ru/journal/wp-content/uploads/2021/03/4.png" alt="Типы данных в MS SQL. Transact-SQL" class="wp-image-991" srcset="https://otus.ru/journal/wp-content/uploads/2021/03/4.png 201w, https://otus.ru/journal/wp-content/uploads/2021/03/4-150x26.png 150w" sizes="(max-width: 201px) 100vw, 201px" /></figure>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E_%D0%B1%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D1%85_%D1%82%D0%B8%D0%BF%D0%B0%D1%85_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85"></span><strong>О бинарных типах данных</strong><span class="ez-toc-section-end"></span></h3>
<p>Пришла очередь и двоичным данным:</p>
<ul><li><strong>BINARY</strong>: для сохранения бинарных типов данных в качестве последовательности в пределах 1-8 000 байт;</li><li><strong>VARBINARY</strong>: для хранения бинарных типов данных в качестве последовательности в диапазоне 1-8 000 байт, либо до 2^31–1 байт в случае применения значения MAX (VARBINARY(MAX)).</li></ul>
<p>Такой бинарный тип, как IMAGE, тоже устарел, поэтому вместо него желательно использовать тип данных VARBINARY.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%82%D0%B8%D0%BF%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85"></span><strong>Специальные типы данных</strong><span class="ez-toc-section-end"></span></h3>
<p>В этой группе перечислим оставшиеся типы данных:</p>
<ul><li><strong>UNIQUEIDENTIFIER</strong>: уникальный идентификатор GUID (строка с уникальным значением), занимающий 16 байт;</li><li><strong>TIMESTAMP</strong>: некоторое число, хранящее номер версии строки в таблице. Может занимать 8 байт;</li><li><strong>CURSOR</strong>: для набора строк;</li><li><strong>HIERARCHYID</strong>: для представления позиции в иерархии;</li><li><strong>SQL_VARIANT</strong>: для хранения значений практически любого другого типа данных T-SQL;</li><li><strong>XML</strong>: для хранения документов XML либо фрагментов XML-документов. Занимает до двух гигабайт;</li><li><strong>TABLE</strong>: представляет определение таблицы;</li><li><strong>GEOGRAPHY</strong>: обеспечивает хранение географических данных (широты, долготы);</li><li><strong>GEOMETRY</strong>: для координат местонахождения на плоскости.</li></ul>
<p><em>Примечание</em>: для работы с русскими символами тип данных применяют, используя приставку «n» (nchar, nvarchar, ntext). Такие приставки кодируют символы 2-мя байтами. Если говорить иными словами, то для работы с кодировкой Unicode используют тип данных с «n» (вспоминаем слово national). Так же записываются и строковые константы.</p>
<p>Когда речь идет о типе данных для значения переменной длины, задействуют тип данных, имеющий приставку «var» (character varying). Тип данных без приставки «var» характеризуется фиксированной длиной области памяти, причем неиспользованная часть заполняется пробелами либо нулями.</p>
<p><em>По материалам:</em></p>
<p><em>— https://metanit.com/sql/sqlserver/3.3.php;</em></p>
<p><em>— https://ru.wikipedia.org/wiki/Transact-SQL.</em></p>
<figure class="wp-block-image size-large"><a href="https://otus.ru/lessons/subd/?utm_source=oj&utm_medium=affilate&utm_campaign=subd" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><img loading="lazy" decoding="async" width="970" height="90" src="https://otus.ru/journal/wp-content/uploads/2021/02/SUBD_970x90-20219-543a9a.png" alt="Типы данных в MS SQL. Transact-SQL" class="wp-image-875" srcset="https://otus.ru/journal/wp-content/uploads/2021/02/SUBD_970x90-20219-543a9a.png 970w, https://otus.ru/journal/wp-content/uploads/2021/02/SUBD_970x90-20219-543a9a-300x28.png 300w, https://otus.ru/journal/wp-content/uploads/2021/02/SUBD_970x90-20219-543a9a-150x14.png 150w, https://otus.ru/journal/wp-content/uploads/2021/02/SUBD_970x90-20219-543a9a-768x71.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></a></figure>
<p></p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/sql/" rel="tag" data-wpel-link="internal">SQL</a><a href="https://otus.ru/journal/tag/t-sql/" rel="tag" data-wpel-link="internal">T-SQL</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Ftipy-dannyh-v-ms-sql-transact-sql%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Ftipy-dannyh-v-ms-sql-transact-sql%2F&text=%D0%A2%D0%B8%D0%BF%D1%8B%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%20%D0%B2%20MS%20SQL.%20Transact-SQL" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Ftipy-dannyh-v-ms-sql-transact-sql%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Ftipy-dannyh-v-ms-sql-transact-sql%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2021%2F03%2Foj-1080x720-1-2.png&description=%D0%A2%D0%B8%D0%BF%D1%8B%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%20%D0%B2%20MS%20SQL.%20Transact-SQL" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/php-server-web-php-i-apache/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/php-server-web-php-i-apache/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="PHP server: Web, PHP и Apache" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-4-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-4-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-4-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-4-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-4-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-4-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-4-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-4.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-4-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="PHP server: Web, PHP и Apache" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/php-server-web-php-i-apache/" data-wpel-link="internal">PHP server: Web, PHP и Apache</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/php-server-web-php-i-apache/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2021-03-10T14:40:43+00:00">10 марта, 2021</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">4 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/bazovye-struktury-dannyh/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/bazovye-struktury-dannyh/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Базовые структуры данных" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-2-1-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-2-1-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-2-1-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-2-1-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-2-1-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-2-1-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-2-1-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-2-1.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2021/03/oj-1080x720-2-1-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Базовые структуры данных" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/bazovye-struktury-dannyh/" data-wpel-link="internal">Базовые структуры данных</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/bazovye-struktury-dannyh/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2021-03-12T19:11:08+00:00">12 марта, 2021</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">5 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"0"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"0","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/tipy-dannyh-v-ms-sql-transact-sql\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Mon, 09 Mar 2026 15:04:40 GMT -->