В этом материале мы с Вами рассмотрим основы программирования на языке T-SQL, узнаем, что это за язык, какими основными возможностями он обладает, какие конструкции включает и, конечно же, в процессе всего этого я буду приводить примеры кода.
Transact-SQL (T-SQL) – расширение языка SQL от компании Microsoft и используется в SQL Server для программирования баз данных.
SQL Server включает много конструкций, компонентов, функций которые расширяют возможности языка SQL стандарта ANSI, в том числе и классическое программирование, которое отличается от обычного написания запросов.
И сегодня мы с Вами рассмотрим ту часть основ языка T-SQL, которая подразумевает написание кода для реализации некого функционала (например, в процедуре или функции), а не просто какого-то запроса к базе данных.
Примечание! Код я буду писать в окне запроса среды SQL Server Management Studio, о том, как установить SQL Server и Management Studio в редакции Express мы с Вами разговаривали вот здесь.
Переменные в T-SQL
И начнем мы с переменных, они нужны для того, чтобы хранить какие-то временные данные, которые нам необходимо на время сохранить, а затем использовать.
Существует две разновидности переменных в T-SQL — это локальные и глобальные. Локальные переменные существуют только в пределах сеанса, во время которого они были созданы, а глобальные используются для получения информации о SQL сервере или какой-то меняющейся информации в базе данных.
Для присвоения значения переменной можно использовать команды SET или Select.
Как я уже сказал, глобальные переменные нужны для того, чтобы получать какую-либо информацию о сервере или о базе данных, например, к глобальным переменным в SQL Server относятся:
Пакеты
Пакет в T-SQL — это команды или инструкции SQL, которые объединены в одну группу и при этом SQL сервер будет компилировать, и выполнять их как одно целое.
Для того чтобы дать понять SQL серверу, что Вы передаете пакет команд необходимо указывать ключевое слово GO после всех команд, которые Вы хотите объединить в пакет.
Локальные переменные будут видны только в пределах того пакета, в котором они были созданы, т.е. обратиться к переменной после завершения пакета Вы уже не сможете.
Допустим, если пример, который мы использовали выше, объединить в пакет, а потом попробовать получить значение переменных, то у нас получится следующее:
Условные конструкции
Эти конструкции подразумевают ветвление, т.е. в зависимости от выполнения или невыполнения определенных условий инструкции T-SQL будут менять свое направление.
Эта конструкция есть, наверное, во всех языках программирования она подразумевает проверку выполнения условий и если все проверки пройдены, то выполняется команда идущая следом, если нет, то не выполняется ничего, но можно указать ключевое слово ELSE и тогда в этом случае будут выполняться операторы указанные после этого слова.
IF EXISTS
CASE
Данная конструкция используется совместно с оператором select и предназначена она для замены многократного использования конструкции IF. Она полезна в тех случаях, когда необходимо проверять переменную (или поле) на наличие определенных значений.
Циклы T-SQL
Если говорить в общем о циклах, то они нужны для многократного повторения выполнения команд. В языке T-SQL есть один цикл WHILE с предусловием, это означает, что команды начнутся, и будут повторяться до тех пор, пока выполняется условие перед началом цикла, также выполнение цикла можно контролировать с помощью ключевых слов BREAK и CONTINUE.
Заметка! Как сформировать и вставить в таблицу заданное количество строк на T-SQL.
В данном примере мы сначала, конечно же, объявляем переменные (Cnt и result мы сразу инициализируем, таким способом можно задавать значения переменных, начиная с SQL Server 2008). Затем узнаем, сколько строк в таблице test_table и после этого проверяем, если количество строк в таблице больше или равно нашему счетчику, то входим в наш тестовый цикл. В цикле мы увеличиваем значение счетчика, записываем результат и снова проверяем, если наш счетчик достиг уже значения 20, то мы его принудительно завершим, если нет, то пусть работает дальше, до того как значение счетчика станет больше или равно количеству строк в таблице или до 20, если в таблице строк больше.
Команды T-SQL
С помощью этой команды можно перемещаться по коду к указанной метке. Например, ее можно использовать тогда когда Вы хотите сделать своего рода цикл, но без while.
WAITFOR
Команда может приостановить выполнение кода на время или до наступления заданного времени. Параметр DELAY делает паузу заданной длины, а TIME приостанавливает процесс до указанного времени. Значение параметров задается в формате hh:mi:ss
RETURN
Данная команда служит для безусловного выхода из запроса или процедуры. R ETURN может использоваться в любой точке для выхода из процедуры, пакета или блока инструкций. Все что идет после этой команды не выполняется.
Для передачи служебного сообщения можно использовать команду PRINT. В Management Studio это сообщение отобразится на вкладке «Сообщения» (Messages).
Транзакции
Транзакция – это команда или блок команд, которые успешно завершаются или отменяются как единое целое. Другими словами, если одна команда или инструкция внутри транзакции завершилась с ошибкой, то все что было отработано перед ней, также отменяется, даже если предыдущие команды завершились успешно.
Этот механизм необходим для того, чтобы обеспечить целостность данных, т.е. допустим, у Вас есть процедура, которая перечисляет деньги с одного счета на другой, но может возникнуть ситуация при которой деньги снялись со счета, но не поступили на другой счет. К примеру, SQL инструкция, которая осуществляет снятие денег, отработала, а при выполнении инструкции, которая зачисляет деньги, возникла ошибка, другими словами, деньги снялись и просто потерялись. Чтобы этого не допускать, все SQL инструкции пишут внутри транзакции и тогда если наступит такая ситуация все изменения будут отменены, т.е. деньги вернутся на счет обратно.
В этом примере, если бы у нас в момент добавления данных (INSERT) возникла ошибка, то UPDATE бы отменился.
Заметка! Подробнее про транзакции можете почитать в статье – Транзакции в T-SQL – основы для новичков с примерами.
В этом примере возникла ситуация что происходит деление на ноль (как Вы знаете делить на 0 нельзя) и так как наш блок кода был помещен в конструкцию TRY у нас возникло исключение, при котором мы просто получаем номер ошибки и ее описание.
Я думаю для основ этого достаточно, всем тем, кто только начинает свое знакомство с языком SQL, рекомендую прочитать книгу «SQL код» – это самоучитель по языку SQL, которую написал я, и в которой я подробно, и в то же время простым языком, рассказываю о языке SQL, у меня все, удачи!
Заметка! Для профессионального изучения языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL.
Примечание. Для тестовой базы данных рекомендуется использовать систему контейнеризации и контейнер с MySQL сервером. Большинство запросов, описанных в статье можно выполнять непосредственно в командной строке контейнера с небольшой поправкой: в MySQL нет директивы GO, а команды должны заканчиваться точкой с запятой, то есть символом «;». Или, как вариант, можно поставить контейнер с Microsoft SQL сервером. Подробности описаны в статье Использование Docker для MySQL сервера.
SQL (Structured Query Language) — это универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных (язык структурированных запросов).
SQL в его исходном виде является информационно-логическим языком, а не языком программирования, но вместе SQL предусматривает возможность его процедурных расширений, с учётом которых язык уже вполне может рассматриваться в качестве языка программирования.
В настоящее время широко распространенны следующие спецификации SQL:
В данной статье будет рассмотрена спецификация Transact-SQL, которая используется серверами Microsoft SQL. А так как база у всех спецификаций SQL одинаковая, то большинство команд и сценариев с легкостью переносятся на другие типы SQL.
Transact-SQL — это процедурное расширение языка SQL компаний Microsoft. S QL был расширен такими дополнительными возможностями как:
Язык Transact-SQL является ключом к использованию SQL Server. Все приложения, взаимодействующие с экземпляром SQL Server, независимо от их реализации и пользовательского интерфейса, отправляют серверу инструкции Transact-SQL.
Для того, чтобы усвоить теоретический материал, его, конечно же, нужно применить на практике. Для практических занятий создадим базу данных и заполним ее небольшим количеством значений.
Итак, чтобы создать базу данных и заполнить ее значениями, необходимо открыть консоль выполнения команд и запросов SQL сервера и выполнить следующий сценарий:
Примечание. В Microsoft SQL Server 2000 запросы выполняются в приложении Query Analyzer. В Microsoft SQL Server 2005 запросы выполняются в SQL Server Management Studio.
Директивы сценария — это специфические команды, которые используются только в MS SQL. Эти команды помогают серверу определять правила работы со скриптом и транзакциями. Типичные представители: GO — сигнализирует SQL-серверу об окончании сценария, EXEC (или EXECUTE) — выполняет процедуру или скалярную функцию.
Как и в языках программирования, в SQL существуют различные типы данных для хранения переменных:
Примечание. Для использования русских символов (не ASCII кодировки) испольюзуются типы данных с приставкой «n» (nchar, nvarchar, ntext), которые кодируют символы двумя байтами. Иначе говоря, для работы с Unicode используются типы данных с «n».
Примечание. Для данных переменной длины используются типы данных с приставкой «var». Типы данных без приставки «var» имеют фиксированную длину области памяти, неиспользованная часть которой заполняется пробелами или нулями.
Идентификаторы — это специальные символы, которые используются с переменными для идентифицирования их типа или для группировки слов в переменную. Типы идентификаторов:
Переменные используются в сценариях и для хранения временных данных. Чтобы работать с переменной, ее нужно объявить, притом объявление должно быть осуществлено в той транзакции, в которой выполняется команда, использующая эту переменную. Иначе говоря, после завершения транзакции, то есть после команды GO, переменная уничтожается.
Примечание. Полный список функций можно найти в справке к SQL серверу.
Выражение — это комбинация символов и операторов, которая получает на вход скалярную величину, а на выходе дает другую величину или исполняет какое-то действие. В Transact-SQL выражения делятся на 3 типа: DDL, DCL и DML.
В Transact-SQL существуют специальные команды, которые позволяют управлять потоком выполнения сценария, прерывая его или направляя в нужную логику.
Обычно сценарии пишутся как универсальное средство для выполнения стандартных задач, поэтому в них применяется динамическое конструирование логики — в запросы и команды вставляются переменные, а не конкретные названия объектов, что позволяет быстро изменять параметры скрипта.
В языках SQL выборка данных из таблиц осуществляется с помощью команды SELECT:
По умолчанию в команде SELECT используется параметр ALL, который можно не указывать. Если в команде указать параметр DISTINCT, то в результат попадут только уникальные (неповторяющиеся) записи из выборки.
Для того, чтобы изменить имена объектов в командах к SQL-серверу, используется команда AS. Использование этой команды помогает сокращать длину строки запроса, а так же получать результат в более удобочитаемом виде.
— Выбрать записи колонки PositionID из таблицы Positions, где BaseSalary < 600
SELECT PositionID FROM Positions WHERE BaseSalary < 600
Для сортировки данных в выборке используется командаORDER BY, но следует учесть, что эта команда не сортирует данные типа text, ntext и image. По умолчанию сортировка производится по возрастанию, поэтому параметр ASC в этом случае можно не указывать:
Для того, чтобы ограничить количество строк в результате запроса, используется командаTOP:
Внутри запроса можно проводить вычисления над полученными данными. Для этого используюся функции агрегирования:
Примеры использования команд ORDER, TOP и функций агрегирования:
— Найти величину максимального оклада в организации
SELECT MAX(BaseSalary) FROM Positions
— Найти должности, у которых максимальный оклад в организации
SELECT * FROM Positions
WHERE BaseSalary IN (SELECT MAX(BaseSalary) FROM Positions)
SQL позволяет производить группировку данных по определенным полям таблицы. Чтобы сгруппировать данные по какому-нибудь параметру, в SQL-запросе необходимо написать команду GROUP BY, в которой указать имя колонки, по которой производится группировка. Колонки, упомянутые в команде GROUP BY, должны присутствовать в команде SELECT, а так же команда SELECT должна содержать функцию агрегирования, которая будет применена к сгруппированным данным.
Чтобы отфильтровать строки в запросе с группировкой применяется специальная команда HAVING, в которой указывается условие фильтрации. Колонки, по которым производится фильтрация, должны присутствовать в команде GROUP BY. Команда HAVING может использоваться и без GROUP BY, в этом случае она работает аналогично команде WHERE, но она разрешает применять в условиях фильтрации только функции агрегирования.
Команда группировки может дополняться оператором WITH ROLLUP, который дополняет результат группировки сводной строкой с суммой значений колонок.
Команда группировки также может дополняться оператором WITH CUBE, который дополняет формирует всевозможные комбинации из группируемых колонок: если есть N колонок, то получится 2^N комбинаций.
Функция агрегирования GROUPING позволяет определить, была ли запись добавлена командами ROLLUP и CUBE, или это запись получена из источника данных.
Еще одна команда группировки COMPUTE позволяет группировать данные и выводить по ним отчет в разные таблицы. То есть команда GROUP BY с операторами ROLLUP и CUBE группирует данные и дописывает в таблицу дополнительны строки с отчетом, а команда COMPUTE группирует данные, разрывая исходную таблицу на несколько подтаблиц, а также формирует подтаблицы с отчетами. Команда COMPUTE может использоваться в двух режимах:
Команда COMPUTE с параметром BY может использоваться только совместно с командой ORDER BY, причем столбцы сортировки должны совпадать со столбцами группировки.
Самые важные и нужные запросы в SQL — это с запросы с соединением таблиц, когда выборка осуществляется сразу из нескольких источников. Такие запросы более сложны в написании, но и более удобны в обработке, так как часто выдают в программу уже готовый результат, который остается только вывести на экран.
Соединять таблицы в SQL можно двумя способами: вертикально и горизонтально.
Вертикальное соединение осуществляется командой UNION, которая в конец первой таблицы допишет вторую таблицую. При таком соединении количество колонок соединяемых таблиц должно быть одинаковым, а сами колонки должны иметь одинаковые названия и типы данных. При соединении одинаковые строки, встречающиеся в обоих таблицах, будут удалены, если в команде не указан параметр ALL.
Горизонтальное соединение производится путем сцепки нескольких таблиц по ключевым колонкам. Самое простое горизонтальное соединение выполняется с помощью команды INNER JOIN, которая сцепляет таблицы, выбирая строки по ключевому полю, которое встречается в обоих таблицах.
Чтобы выполнить сцепление по всем полям левой таблицы, независимо, есть ли такие записи в правой таблице, необходимо использовать команду LEFT JOIN. Эта команда соединяет таблицы, выбирая все строки из левой таблицы, а отсутствующие данные правой таблицы заполняются значением NULL.
Команда RIGHT JOIN аналогична предыдущей, разница заключается лишь в том, что она соединяет таблицы, выбирая все строки из правой таблицы, а отсутствующие данные левой таблицы заполняются значением NULL.
Команда FULL JOIN объединяет в себе левое и правое сцепление, то есть она соединяет таблицы, выбирая строки из обоих таблиц, а отсутствующие данные заполняются значением NULL.
Последняя и редкоиспользуемая команда соединения таблиц — это CROSS JOIN. Эта команда сцепляет таблицы без использования ключевого поля, а результат — это комбинация из всевозможных строк исходных таблиц.
Сцепление не ограничивается только двумя таблицами, запрос может содержать несколько команда JOIN, что очень удобно при формировании конечных отчетов. Ниже приведены примеры для всех команд соединения таблиц.
Прежде, чем рассказывать о командах изменения данных, нужно пояснить особенность диалекта Transact-SQL. Как видно из самого названия, этот механизм основан на транзакциях, то есть на последовательности операций, объединенных в один логический модуль, будь то запрос на выбоку данных, изменения данных или структуры таблиц. На время транзакции все используемые в сценарии данные блокируются, что позволяет избежать несоотвествия данных во время начала работы с таблицей и завершением сценария.
Ниже приведен пример использования этого блока:
Для вставки данных в таблицы SQL-сервера используется команда INSERT INTO:
Вторая часть комнады является необязательной для MS SQL Server 2003, но MS JET SQL без этого слова будет выдавать ошибку синтаксиса. Вставка обычно производиться целострочно, то есть в комнаде указываются все колонки таблицы и значения, которые нужно в них занести. Если же колонка имеет значение по умолчанию или разрешает пустое значения, то в команде вставки эту колонку можно не указывать. Команда INSERT INTO также разрешает указывать вносимые данные не по порядку следования колонок, но в этом случае нужно обозначить используемый порядок колонок.
Удаление данных обычно производится по какому-то критерию. Так как удаление данных — это достаточно опасная операция, то перед выполнением такой команды лучше всего произвести тестовую выборку командой SELECT, которая выведет в результат те данные, которые будут стерты. Если это то, что требуется, тогда можно смело заменять SELECT на DELETE и выполнять удаление данных.
Transact-SQL позволяет использовать временные таблицы, то есть таблицы, которые создаются в памяти сервера на время работы пользователя с базой данных. Временные таблицы могут иметь любое имя, но начинаться обязаны с символа #.
Хранимые процедуры и функции представляют собой набор SQL-операторов, которые можно сохранять на сервере. Если сценарий сохранен на сервере, то клиентам не придется повторно задавать одни и те же отдельные операторы, вместо этого они смогут обращаться к хранимой процедуре. Ситуации, когда хранимые процедуры особенно полезны:
Для увеличения производительности, то есть для быстрого выполнения запросов, следует помнить некоторые правила составления строк запросов:
Здравствуй уважаемый посетитель сайта Info-Comp.ru, я с радостью готов представить Вам книгу, которую полностью разработал и написал лично я, она посвящена основам языка T-SQL и предназначена в первую очередь для начинающих программистов. В данном материале я подробно расскажу Вам об этой книге.
Об авторе
Основным направлением моей работы, вот уже более 8 лет, является реализация бизнес-логики и разработка аналитических отчетов в базах данных на языке T-SQL в Microsoft SQL Server. За это время я приобрёл неплохой опыт работы с языком T-SQL, на этом сайте Вы найдете много статей, посвященных T-SQL и Microsoft SQL Server в целом.
Однако освоить язык T-SQL и научиться программировать на нем с помощью разбросанных статей по сайту вряд ли получится, для этого необходим упорядоченный процесс обучения, которым может выступать, например, курс, книга или методика.
Практически все курсы и книги по T-SQL ориентированы в большей степени на людей, которые хоть немного, но владеют навыками программирования и языком SQL. Иными словами, все они для Вас будут «сложными», если Вы начинающий. Я это точно знаю, ведь мне пришлось перечитать много книг, и пройти много курсов, чтобы иметь те знания, которые у меня есть сейчас. Если Вы хоть раз начинали читать книгу по T-SQL или просто SQL и бросали чтение, так как поступающая информация была для Вас «непонятной» и сложной, я Вас понимаю, и именно поэтому у меня и возникла идея разработать и написать некую методику обучения языку T-SQL, которая будет доступна и понятна всем, даже начинающим программистам SQL!
Данную методику я выразил в виде книги, в которой я простым и понятным языком рассказываю о языке T-SQL и в целом о Microsoft SQL Server, а также в ней я привожу свой личный опыт становления программистом T-SQL и даю практические советы по использованию инструкций языка T-SQL.
Представляю Вам книгу «Путь программиста T-SQL. Самоучитель по языку Transact-SQL», и сейчас я Вам подробно расскажу о ней.
Путь программиста T-SQL. Самоучитель по языку Transact-SQL
Данная книга в первую очередь предназначена, как я уже сказал, для начинающих программистов SQL, в частности T-SQL. Если направление Вашей работы больше связано с администрированием Microsoft SQL Server, то Вам лучше выбрать другую книгу, так как книга «Путь программиста T-SQL» ориентирована все-таки на разработку, хотя, если Вы начинающий администратор, она будет Вам полезна, так как знания и умения писать SQL запросы требуется всем, кто работает с SQL сервером, к тому же тема базового администрирования в книге затронута.
Если говорить в целом, в книге затронуты все те моменты, с которыми Вы столкнетесь, когда будете разрабатывать инструкции на T-SQL, писать запросы на выборку, в общем, просто работать с Microsoft SQL Server. Книгу можно смело рекомендовать обычным администраторам, программистам, инженерам, в обязанности которых входит сопровождение Microsoft SQL Server.
В книге присутствуют примеры написания кода для каждой конструкции и оператора, поэтому могу с уверенностью сказать, что в книге очень много примеров T-SQL инструкций, все они несомненно помогут Вам в изучении языка T-SQL.
Конечно же, все знания, которые Вы получите, нельзя отнести к углубленным, так как книга посвящена основам T-SQL, самое главное, что эти знания у Вас будут, и после прочтения книги Вы без труда сможете писать SQL запросы, разрабатывать процедуры, функции и многое другое!
Кстати, после прочтения данной книги все те книги по T-SQL или SQL, которые Вы начинали читать, но так и не дочитали, будут для Вас не такими уж и сложными, ведь Вы уже будете обладать достаточными знаниями, чтобы понять все то, что пытаются донести до нас авторы этих книг.
Книга хоть и посвящена основам, но в ней затронуто практически все, что касается языка T-SQL и даже больше! Затронуты практически все конструкции, включая аналитические, с помощью которых реализуется отчетность, что на сегодняшний день очень актуально.
Книга содержит несколько разделов: предисловие, введение, 18 глав и заключение.
Предисловие и введение посвящено рассказу о том, как я стал программистом T-SQL, иными словами, я расскажу Вам свой путь.
Глава 1 — Базы данных
В этой главе мы поговорим о теории баз данных, о том какие инструменты необходимы для того, чтобы работать с базами данных и писать SQL запросы. Я покажу, как устанавливается Microsoft SQL Server, SSMS и как создаются базы данных.
Глава 2 -Типы данных в SQL Server
Данная глава посвящена системным типам данных, которые существуют в Microsoft SQL Server, и для чего они нужны.
Глава 3 – Таблицы
В данной главе мы разберем, как создаются таблицы, как они изменяются и удаляются.
Глава 4 — Выборка данных – оператор SELECT
В этой главе подробно будет рассмотрена инструкция SELECT, включая и группировку, и объединение, и продвинутые запросы с участием таких операторов, как UNION, INTERSECT, EXCEPT, а также Вы научитесь писать вложенные запросы.
Глава 5 – Представления
Вы узнаете, что это такое, как это можно использовать, и как это создается!
Глава 6 — Модификация данных в таблицах
После прочтения данной главы Вы с лёгкостью сможете писать запросы на добавление, удаление, обновление и слияние данных, а также использовать инструкцию OUTPUT.
Глава 7 – Индексы
Из данной главы Вы узнаете, что такое индексы, и для чего они нужны в базе данных, а также какие типы индексов есть в Microsoft SQL Server, и как их создавать и обслуживать.
Глава 8 – Ограничения
На самом деле это очень интересная тема, в этой главе Вы познакомитесь с ограничениями, узнаете, для чего они нужны, какие бывают типы ограничений, и как все они создаются на T-SQL.
Глава 9 — Программирование на T-SQL
Здесь я научу Вас программировать на T-SQL! Использовать переменные, циклы, условные конструкции, обрабатывать ошибки и многое другое.
Глава 10 — Функции в языке T-SQL
Эта глава посвящена функциям, как пользовательским, которые Вы научитесь писать сами, так и системным, которые Вы научитесь использовать.
Глава 11 — Хранимые процедуры
Автоматизация разработанных алгоритмов в Microsoft SQL Server реализуется с помощью хранимых процедур, после прочтения данной главы Вы научитесь писать и изменять процедуры.
Глава 12 — Триггеры в T-SQL
Очень полезный инструмент в программировании на T-SQL, в этой главе рассмотрены основы создания и использования триггеров.
Глава 13 — Курсоры в T-SQL
Не знаете, что это такое и для чего это нужно? В этой главе я все расскажу, а также покажу, как работать с этими курсорами.
Глава 14 — Транзакции в T-SQL
Очень важная и в некоторых бизнес операциях просто незаменимая возможность Microsoft SQL Server. Здесь мы с Вами поговорим о транзакциях, рассмотрим примеры, а также я расскажу о так называемых «уровнях изоляции» и для чего они нужны.
Глава 15 — Работа с XML в T-SQL
Microsoft SQL Server умеет работать с XML данными! Из данной главы Вы узнаете, как обрабатывать, извлекать и формировать данные в формате XML на языке T-SQL.
Глава 16 — Дополнительные полезные возможности языка T-SQL
В этой главе Вы познакомитесь и научитесь использовать такие непонятные и сложные с первого взгляда слова как: CTE, OVER, PIVOT, ROLLUP, APPLY и многие другие. Все это относится к продвинутым возможностям языка T-SQL, знание которых сделает Вас очень компетентным специалистом.
Глава 17 — Администрирование сервера и базы данных
Тему администрирования Microsoft SQL Server я не могу обойти, в этой главе Вы научитесь таким базовым операциям как: создание пользователей, настройка параметров базы данных, создание архива БД и восстановление данных из этого архива, а также как перемещать файлы базы данных на другой сервер и как сжимать эти файлы.
Глава 18 — Microsoft SQL Server во всей красе!
Это личной бонус от меня, в этой главе я расскажу Вам практически обо всех возможностях Microsoft SQL Server, которые могут значительно упростить Вашу работу, автоматизировать ее или просто перевести Вас на новый уровень.
В заключении я подытожу, приведу ссылки на полезные ресурсы по T-SQL и Microsoft SQL Server.
Кроме всего прочего, в книге есть еще много интересного и полезного, о чем я Вам пока не буду рассказывать))
Сейчас действует акция на книгу, в связи с чем стоимость снижена до 390 рублей! А также всем новым читателям предоставляются дополнительные очень интересные и выгодные бонусы (уникальный экземпляр с автографом + скидка на курсы по T-SQL)! Узнать подробности.
Важно! Теперь изучить язык T-SQL можно с помощью профессиональных онлайн-курсов, на которых используется моя авторская последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL. Каждый курс включает огромное количество материалов: видео, текстовый материал, тесты, домашние задания, скрипты, а также сертификат о прохождении.