Что такое transact sql
Что такое T-SQL. Подробное описание для начинающих
Приветствую Вас на сайте Info-Comp! Сегодня в этой статье я специально для начинающих в максимально простой и доступной форме подробно расскажу о том, что такое T-SQL, для чего нужен и где используется этот язык.
Скорей всего, Вы догадываетесь, что T-SQL как-то связан с языком SQL, который в свою очередь каким-то образом связан с базами данных.
И это на самом деле так, однако, чтобы четко понять, что такое T-SQL, сначала необходимо разобраться, чем по своей сути является реляционная база данных и язык SQL.
Поэтому сначала мы последовательно рассмотрим все основные понятия и узнаем всю необходимую информацию, которая плавно подведет Вас к ясному пониманию того, что же такое T-SQL.
Итак, давайте начнем.
Что такое база данных
База данных – это любой набор информации, который хранится определенным образом, с целью дальнейшего использования этой информации.
Однако, если говорить о базах данных, которые используются в информационных системах на компьютерах, то речь, конечно же, будет идти о так называемых реляционных базах данных.
Реляционная база данных – это упорядоченная информация, связанная между собой определёнными отношениями. Представлена она в виде таблиц, в которых и лежит вся эта информация.
В основе реляционной модели лежит теория множеств, которая подразумевает объединение разных объектов в одно целое, под одним целым в базе данных как раз и имеется в виду таблица.
Что такое СУБД
Мы выяснили, что база данных — это упорядоченный набор информации, однако тут возникает другой вопрос, а как вся эта информация выглядит физически на компьютере?
А представлена она, конечно же, в виде файлов, сформированных в специальном формате.
Отсюда возникает следующий вопрос, как создать такой файл и открыть его с целью просмотра всей информации, иными словами, как создать базу данных и управлять всей информацией в базе данных?
Для этого должен быть какой-то инструмент, т.е. специальная программа. И такой программой выступает СУБД – это система управления базами данных, сокращенно СУБД.
По своим возможностям и популярности можно выделить следующие СУБД:
Что такое SQL
Теперь мы понимаем, что информация в реляционной базе данных упорядочена и логически представлена в виде таблиц, а хранится и управляется вся эта информация с помощью специальной программы под названием СУБД.
Однако каким образом мы можем обратиться к данным и манипулировать ими? Иными словами, как получить информацию из базы данных, как добавить, удалить или изменить информацию в базе?
Для этого должен быть специальный механизм, который позволял бы нам осуществлять манипулирование данными. Как раз таким механизмом и является язык SQL.
SQL (Structured Query Language) – язык структурированных запросов, с помощью данного языка пишутся специальные запросы к базе данных с целью получения этих данных и манипулирования ими.
Заметка! Если Вас интересует язык SQL, то рекомендую почитать книгу «SQL код» – это самоучитель по языку SQL для начинающих программистов. В ней очень подробно рассмотрены основные конструкции языка.
Что такое T-SQL
Язык SQL – это стандарт, он реализован во всех реляционных базах данных, но у каждой СУБД есть расширение этого стандарта, так называемый диалект языка SQL.
И вот мы дошли до сути нашего сегодняшнего вопроса – что такое T-SQL.
T-SQL – это расширение языка SQL, реализованное в Microsoft SQL Server.
T-SQL – это сокращенное название языка, а полное название Тransact-SQL, т.е. транзакционный SQL.
T-SQL обладает всеми возможностями языка SQL, однако предназначен он для решения задач программирования, не связанных с реляционными данными. Иными словами, на T-SQL Вы можете полноценно программировать, используя переменные, циклы, условные конструкции и другие возможности. T-SQL позволяет нам реализовывать сложные алгоритмы бизнес-логики в виде хранимых процедур и функций, тем самым создавая так называемые «программы» внутри базы данных.
Кроме этого, T-SQL упрощает написание SQL запросов за счет огромного количества встроенных системных функций, а также позволяет администрировать SQL Server и получать системную информацию с помощью системных представлений, процедур и функций.
Заметка! Если Вас интересует язык SQL, то рекомендую почитать книгу «SQL код» – это самоучитель по языку SQL для начинающих программистов. В ней язык SQL рассматривается как стандарт, чтобы после прочтения данной книги можно было работать с языком SQL в любой системе управления базами данных.
На сегодня это все, надеюсь, материал был Вам интересен и полезен, до новых встреч!
Справочник по Transact-SQL (компонент Database Engine)
В этом разделе приводится общее описание поиска и использования разделов справки по Microsoft Transact-SQL (T-SQL). T-SQL является ключом к использованию продуктов и служб Microsoft SQL. Все средства и приложения, которые взаимодействуют с базами данных SQL, делают это путем отправки команд T-SQL.
Соответствие T-SQL стандарту SQL
Подробные технические документы о реализации определенных стандартов в SQL Server см. в документации по поддержке стандартов Microsoft SQL Server.
Средства, использующие T-SQL
Ниже приведены лишь некоторые средства Майкрософт, использующие команды T-SQL.
Поиск разделов справочника по Transact-SQL
Чтобы найти разделы T-SQL, воспользуйтесь полем поиска в верхней правой части или оглавлением в левой части этой страницы. Можно также ввести ключевое слово T-SQL в окне редактора запросов среды Management Studio и нажать клавишу F1.
Поиск системных представлений
Чтобы найти системные таблицы, представления, функции и процедуры, см. ссылки в разделе Использование реляционных баз данных в документации по SQL.
Ссылки «Относится к»
Справочные разделы T-SQL могут охватывать несколько версий SQL Server, начиная с 2008 года, а также другие службы SQL Azure. В верхней части каждой статьи приведен раздел, указывающий, какие продукты и службы поддерживают описанную в ней функциональность.
Например, текущий раздел применим ко всем версиям и имеет следующую метку.
Еще один пример: следующая метка указывает, что раздел применяется только к Azure Synapse Analytics и Parallel Data Warehouse.
В некоторых случаях функциональность раздела используется продуктом или службой, но поддерживаются не все аргументы. В этом случае другие разделы Относится к вставляются в описания соответствующих аргументов в теле раздела.
Получение помощи на странице вопросов и ответов на сайте Майкрософт
Справочники по другим языкам
Документация по SQL включает и другие справочники по языкам.
Дальнейшие действия
Теперь, когда вы знаете, как найти справочные разделы T-SQL, можно:
Просто о Transact-SQL
SQL в его исходном виде является информационно-логическим языком, а не языком программирования, но вместе SQL предусматривает возможность его процедурных расширений, с учётом которых язык уже вполне может рассматриваться в качестве языка программирования.
В настоящее время широко распространенны следующие спецификации SQL:
Тип базы данных | Спецификация SQL |
Microsoft SQL | Transact-SQL |
Microsoft Jet/Access | Jet SQL |
MySQL | SQL/PSM (SQL/Persistent Stored Module) |
Oracle | PL/SQL (Procedural Language/SQL) |
IBM DB2 | SQL PL (SQL Procedural Language) |
InterBase/Firebird | PSQL (Procedural SQL) |
В данной статье будет рассмотрена спецификация Transact-SQL, которая используется серверами Microsoft SQL. А так как база у всех спецификаций SQL одинаковая, то большинство команд и сценариев с легкостью переносятся на другие типы SQL.
Язык Transact-SQL является ключом к использованию SQL Server. Все приложения, взаимодействующие с экземпляром SQL Server, независимо от их реализации и пользовательского интерфейса, отправляют серверу инструкции Transact-SQL.
Для того, чтобы усвоить теоретический материал, его, конечно же, нужно применить на практике. Для практических занятий создадим базу данных и заполним ее небольшим количеством значений.
Итак, чтобы создать базу данных и заполнить ее значениями, необходимо открыть консоль выполнения команд и запросов SQL сервера и выполнить следующий сценарий:
В результате работы сценария на SQL сервере будет создана база данных TestDatabase с пятью пользовательскими таблицами: Users, Departments, Positions, Local Customers, Local Orders.
UserID | UserName | UserSurname | DepartmentID | PositionID |
1 | Ivan | Petrov | 1 | 1 |
2 | Ivan | Sidorov | 1 | 2 |
3 | Petr | Ivanov | 1 | 3 |
4 | Nikolay | Petrov | 1 | 3 |
5 | Nikolay | Ivanov | 2 | 1 |
6 | Sergey | Sidorov | 2 | 3 |
7 | Andrey | Bukin | 2 | 3 |
8 | Viktor | Rybakov | 4 | 1 |
PositionID | PositionName | BaseSalary |
1 | Manager | 1000 |
2 | Senior analyst | 650 |
3 | Analyst | 400 |
OrderID | CustomerID | UserID | Description |
1 | 1 | 1 | Special parts |
DepartmentID | DepartmentName |
1 | Production |
2 | Distribution |
3 | Purchasing |
CustomerID | CustomerName | CustomerAddress |
1 | Alex Company | 606443, Russia, Bor, Lenina str., 15 |
2 | Potrovka | 115516, Moscow, Promyshlennaya str., 1 |
Комментарии используются для создания пояснений для блоков сценариев, а также для временного отключения команд при отладке скрипта. Комментарии бывают как строковыми, так и блоковыми:
Как и в языках программирования, в SQL существуют различные типы данных для хранения переменных:
Переменные используются в сценариях и для хранения временных данных. Чтобы работать с переменной, ее нужно объявить, притом объявление должно быть осуществлено в той транзакции, в которой выполняется команда, использующая эту переменную. Иначе говоря, после завершения транзакции, то есть после команды GO, переменная уничтожается.
Объявление переменной выполняется командой DECLARE, задание значения переменной осуществляется либо командой SET, либо SELECT:
Спецификация Transact-SQl значительно расширяет стандартные возможности SQL благодаря встроенным функциям:
В Transact-SQL существуют специальные команды, которые позволяют управлять потоком выполнения сценария, прерывая его или направляя в нужную логику.
В языках SQL выборка данных из таблиц осуществляется с помощью команды SELECT:
По умолчанию в команде SELECT используется параметр ALL, который можно не указывать. Если в команде указать параметр DISTINCT, то в результат попадут только уникальные (неповторяющиеся) записи из выборки.
Для того, чтобы изменить имена объектов в командах к SQL-серверу, используется команда AS. Использование этой команды помогает сокращать длину строки запроса, а так же получать результат в более удобочитаемом виде.
CustomerID | CustomerName | CustomerAddress |
---|---|---|
1 | Alex Company | 606443, Russia, Bor, Lenina str., 15′) |
2 | Potrovka | 115516, Moscow, Promyshlennaya str., 1 |
Department Name |
---|
Production |
Distribution |
Purchasing |
UserName |
---|
Andrey |
Ivan |
Nikolay |
Petr |
Sergey |
Viktor |
В строке сравнения разрешается использовать подстановочные символы:
Фильтрация позволяет использовать подзапросы, то есть конструировать запрос из нескольких подзапросов:
PositionID |
---|
3 |
UserID | UserName | UserSurname | DepartmentID | PositionID |
---|---|---|---|---|
4 | Nikolay | Petrov | 1 | 3 |
6 | Sergey | Sidorov | 2 | 3 |
UserID | UserName | UserSurname | DepartmentID | PositionID |
---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 |
2 | Ivan | Sidorov | 1 | 2 |
7 | Andrey | Bukin | 2 | 2 |
Department name | Summary salary |
---|---|
Production | 2700.0000 |
Для сортировки данных в выборке используется командаORDER BY, но следует учесть, что эта команда не сортирует данные типа text, ntext и image. По умолчанию сортировка производится по возрастанию, поэтому параметр ASC в этом случае можно не указывать:
Для того, чтобы ограничить количество строк в результате запроса, используется командаTOP:
Внутри запроса можно проводить вычисления над полученными данными. Для этого используюся функции агрегирования:
Примеры использования команд ORDER, TOP и функций агрегирования:
UserName |
---|
Andrey |
Ivan |
Nikolay |
UserID | UserName | UserSurname | DepartmentID | PositionID |
---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 |
2 | Ivan | Sidorov | 1 | 2 |
(No column name) |
---|
1000.0000 |
PositionID | PositionName | BaseSalary |
---|---|---|
1 | Manager | 1000.0000 |
UserID | UserName | UserSurname | DepartmentID | PositionID |
---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 |
5 | Nikolay | Ivanov | 2 | 1 |
8 | Viktor | Rybakov | 4 | 1 |
(No column name) |
---|
3 |
SQL позволяет производить группировку данных по определенным полям таблицы. Чтобы сгруппировать данные по какому-нибудь параметру, в SQL-запросе необходимо написать команду GROUP BY, в которой указать имя колонки, по которой производится группировка. Колонки, упомянутые в команде GROUP BY, должны присутствовать в команде SELECT, а так же команда SELECT должна содержать функцию агрегирования, которая будет применена к сгруппированным данным.
DepartmentID | Number of users |
---|---|
1 | 4 |
2 | 3 |
4 | 1 |
Чтобы отфильтровать строки в запросе с группировкой применяется специальная команда HAVING, в которой указывается условие фильтрации. Колонки, по которым производится фильтрация, должны присутствовать в команде GROUP BY. Команда HAVING может использоваться и без GROUP BY, в этом случае она работает аналогично команде WHERE, но она разрешает применять в условиях фильтрации только функции агрегирования.
DepartmentID | Number of users |
---|---|
1 | 4 |
Команда группировки может дополняться оператором WITH ROLLUP, который дополняет результат группировки сводной строкой с суммой значений колонок.
DepartmentID | Number of users |
---|---|
1 | 4 |
2 | 3 |
4 | 1 |
NULL | 8 |
DepartmentID | PositionID | Number of users |
---|---|---|
1 | 1 | 1 |
1 | 2 | 2 |
1 | 3 | 1 |
1 | NULL | 4 |
2 | 1 | 1 |
2 | 2 | 1 |
2 | 3 | 1 |
2 | NULL | 3 |
4 | 1 | 1 |
4 | NULL | 1 |
NULL | NULL | 8 |
Команда группировки также может дополняться оператором WITH CUBE, который дополняет формирует всевозможные комбинации из группируемых колонок: если есть N колонок, то получится 2^N комбинаций.
DepartmentID | PositionID | Number of users |
---|---|---|
1 | 1 | 1 |
1 | 2 | 2 |
1 | 3 | 1 |
1 | NULL | 4 |
2 | 1 | 1 |
2 | 2 | 1 |
2 | 3 | 1 |
2 | NULL | 3 |
4 | 1 | 1 |
4 | NULL | 1 |
NULL | NULL | 8 |
NULL | 1 | 3 |
NULL | 2 | 3 |
NULL | 3 | 2 |
Функция агрегирования GROUPING позволяет определить, была ли запись добавлена командами ROLLUP и CUBE, или это запись получена из источника данных.
DepartmentID | Number of users | Added row |
---|---|---|
1 | 4 | 0 |
2 | 3 | 0 |
4 | 1 | 0 |
NULL | 8 | 1 |
Еще одна команда группировки COMPUTE позволяет группировать данные и выводить по ним отчет в разные таблицы. То есть команда GROUP BY с операторами ROLLUP и CUBE группирует данные и дописывает в таблицу дополнительны строки с отчетом, а команда COMPUTE группирует данные, разрывая исходную таблицу на несколько подтаблиц, а также формирует подтаблицы с отчетами. Команда COMPUTE может использоваться в двух режимах:
Команда COMPUTE с параметром BY может использоваться только совместно с командой ORDER BY, причем столбцы сортировки должны совпадать со столбцами группировки.
UserID | UserName | UserSurname | DepartmentID | PositionID |
---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 |
2 | Ivan | Sidorov | 1 | 2 |
3 | Petr | Ivanov | 1 | 2 |
4 | Nikolay | Petrov | 1 | 3 |
5 | Nikolay | Ivanov | 2 | 1 |
6 | Sergey | Sidorov | 2 | 3 |
7 | Andrey | Bukin | 2 | 2 |
8 | Viktor | Rybakov | 4 | 1 |
cnt |
---|
8 |
UserID | UserName | UserSurname | DepartmentID | PositionID |
---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 |
2 | Ivan | Sidorov | 1 | 2 |
3 | Petr | Ivanov | 1 | 2 |
4 | Nikolay | Petrov | 1 | 3 |
cnt |
---|
4 |
UserID | UserName | UserSurname | DepartmentID | PositionID |
---|---|---|---|---|
5 | Nikolay | Ivanov | 2 | 1 |
6 | Sergey | Sidorov | 2 | 3 |
7 | Andrey | Bukin | 2 | 2 |
cnt |
---|
3 |
UserID | UserName | UserSurname | DepartmentID | PositionID |
---|---|---|---|---|
8 | Viktor | Rybakov | 4 | 1 |
cnt |
---|
1 |
Соединять таблицы в SQL можно двумя способами: вертикально и горизонтально.
Вертикальное соединение осуществляется командой UNION, которая в конец первой таблицы допишет вторую таблицую. При таком соединении количество колонок соединяемых таблиц должно быть одинаковым, а сами колонки должны иметь одинаковые названия и типы данных. При соединении одинаковые строки, встречающиеся в обоих таблицах, будут удалены, если в команде не указан параметр ALL.
UserID | UserName | UserSurname | DepartmentID | PositionID |
---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 |
2 | Ivan | Sidorov | 1 | 2 |
4 | Nikolay | Petrov | 1 | 3 |
UserID | UserName | UserSurname | DepartmentID | PositionID |
---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 |
2 | Ivan | Sidorov | 1 | 2 |
1 | Ivan | Petrov | 1 | 1 |
4 | Nikolay | Petrov | 1 | 3 |
Горизонтальное соединение производится путем сцепки нескольких таблиц по ключевым колонкам. Самое простое горизонтальное соединение выполняется с помощью команды INNER JOIN, которая сцепляет таблицы, выбирая строки по ключевому полю, которое встречается в обоих таблицах.
Чтобы выполнить сцепление по всем полям левой таблицы, независимо, есть ли такие записи в правой таблице, необходимо использовать команду LEFT JOIN. Эта команда соединяет таблицы, выбирая все строки из левой таблицы, а отсутствующие данные правой таблицы заполняются значением NULL.
Команда RIGHT JOIN аналогична предыдущей, разница заключается лишь в том, что она соединяет таблицы, выбирая все строки из правой таблицы, а отсутствующие данные левой таблицы заполняются значением NULL.
Команда FULL JOIN объединяет в себе левое и правое сцепление, то есть она соединяет таблицы, выбирая строки из обоих таблиц, а отсутствующие данные заполняются значением NULL.
Сцепление не ограничивается только двумя таблицами, запрос может содержать несколько команда JOIN, что очень удобно при формировании конечных отчетов. Ниже приведены примеры для всех команд соединения таблиц.
UserID | UserName | UserSurname | DepartmentID | PositionID | DepartmentID | DepartmentName |
---|---|---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 | 1 | Production |
2 | Ivan | Sidorov | 1 | 2 | 1 | Production |
3 | Petr | Ivanov | 1 | 2 | 1 | Production |
4 | Nikolay | Petrov | 1 | 3 | 1 | Production |
5 | Nikolay | Ivanov | 2 | 1 | 2 | Distribution |
6 | Sergey | Sidorov | 2 | 3 | 2 | Distribution |
7 | Andrey | Bukin | 2 | 2 | 2 | Distribution |
UserID | UserName | UserSurname | DepartmentID | PositionID | DepartmentID | DepartmentName |
---|---|---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 | 1 | Production |
2 | Ivan | Sidorov | 1 | 2 | 1 | Production |
3 | Petr | Ivanov | 1 | 2 | 1 | Production |
4 | Nikolay | Petrov | 1 | 3 | 1 | Production |
5 | Nikolay | Ivanov | 2 | 1 | 2 | Distribution |
6 | Sergey | Sidorov | 2 | 3 | 2 | Distribution |
7 | Andrey | Bukin | 2 | 2 | 2 | Distribution |
8 | Viktor | Rybakov | 4 | 1 | NULL | NULL |
UserID | UserName | UserSurname | DepartmentID | PositionID | DepartmentID | DepartmentName |
---|---|---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 | 1 | Production |
2 | Ivan | Sidorov | 1 | 2 | 1 | Production |
3 | Petr | Ivanov | 1 | 2 | 1 | Production |
4 | Nikolay | Petrov | 1 | 3 | 1 | Production |
5 | Nikolay | Ivanov | 2 | 1 | 2 | Distribution |
6 | Sergey | Sidorov | 2 | 3 | 2 | Distribution |
7 | Andrey | Bukin | 2 | 2 | 2 | Distribution |
NULL | NULL | NULL | NULL | NULL | 3 | Purchasing |
UserID | UserName | UserSurname | DepartmentID | PositionID | DepartmentID | DepartmentName |
---|---|---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 | 1 | Production |
2 | Ivan | Sidorov | 1 | 2 | 1 | Production |
3 | Petr | Ivanov | 1 | 2 | 1 | Production |
4 | Nikolay | Petrov | 1 | 3 | 1 | Production |
5 | Nikolay | Ivanov | 2 | 1 | 2 | Distribution |
6 | Sergey | Sidorov | 2 | 3 | 2 | Distribution |
7 | Andrey | Bukin | 2 | 2 | 2 | Distribution |
NULL | NULL | NULL | NULL | NULL | 3 | Purchasing |
8 | Viktor | Rybakov | 4 | 1 | NULL | NULL |
UserID | UserName | UserSurname | DepartmentID | PositionID | DepartmentID | DepartmentName |
---|---|---|---|---|---|---|
1 | Ivan | Petrov | 1 | 1 | 1 | Production |
2 | Ivan | Sidorov | 1 | 2 | 1 | Production |
3 | Petr | Ivanov | 1 | 2 | 1 | Production |
4 | Nikolay | Petrov | 1 | 3 | 1 | Production |
5 | Nikolay | Ivanov | 2 | 1 | 1 | Production |
6 | Sergey | Sidorov | 2 | 3 | 1 | Production |
7 | Andrey | Bukin | 2 | 2 | 1 | Production |
8 | Viktor | Rybakov | 4 | 1 | 1 | Production |
1 | Ivan | Petrov | 1 | 1 | 2 | Distribution |
2 | Ivan | Sidorov | 1 | 2 | 2 | Distribution |
3 | Petr | Ivanov | 1 | 2 | 2 | Distribution |
4 | Nikolay | Petrov | 1 | 3 | 2 | Distribution |
5 | Nikolay | Ivanov | 2 | 1 | 2 | Distribution |
6 | Sergey | Sidorov | 2 | 3 | 2 | Distribution |
7 | Andrey | Bukin | 2 | 2 | 2 | Distribution |
8 | Viktor | Rybakov | 4 | 1 | 2 | Distribution |
1 | Ivan | Petrov | 1 | 1 | 3 | Purchasing |
2 | Ivan | Sidorov | 1 | 2 | 3 | Purchasing |
3 | Petr | Ivanov | 1 | 2 | 3 | Purchasing |
4 | Nikolay | Petrov | 1 | 3 | 3 | Purchasing |
5 | Nikolay | Ivanov | 2 | 1 | 3 | Purchasing |
6 | Sergey | Sidorov | 2 | 3 | 3 | Purchasing |
7 | Andrey | Bukin | 2 | 2 | 3 | Purchasing |
8 | Viktor | Rybakov | 4 | 1 | 3 | Purchasing |
Department | User name | Position |
---|---|---|
NULL | Viktor Rybakov | Manager |
Production | Ivan Petrov | Manager |
Production | Ivan Sidorov | Senior analyst |
Production | Petr Ivanov | Senior analyst |
Production | Nikolay Petrov | Analyst |
Distribution | Nikolay Ivanov | Manager |
Distribution | Andrey Bukin | Senior analyst |
Distribution | Sergey Sidorov | Analyst |
Прежде, чем рассказывать о командах изменения данных, нужно пояснить особенность диалекта Transact-SQL. Как видно из самого названия, этот механизм основан на транзакциях, то есть на последовательности операций, объединенных в один логический модуль, будь то запрос на выбоку данных, изменения данных или структуры таблиц. На время транзакции все используемые в сценарии данные блокируются, что позволяет избежать несоотвествия данных во время начала работы с таблицей и завершением сценария.
Ниже приведен пример использования этого блока:
Для вставки данных в таблицы SQL-сервера используется команда INSERT INTO:
Вторая часть комнады является необязательной для MS SQL Server 2003, но MS JET SQL без этого слова будет выдавать ошибку синтаксиса. Вставка обычно производиться целострочно, то есть в комнаде указываются все колонки таблицы и значения, которые нужно в них занести. Если же колонка имеет значение по умолчанию или разрешает пустое значения, то в команде вставки эту колонку можно не указывать. Команда INSERT INTO также разрешает указывать вносимые данные не по порядку следования колонок, но в этом случае нужно обозначить используемый порядок колонок.
Для того, чтобы изменить значение ячейки таблицы, используется команда UPDATE:
Обновление (изменение) значений в таблице можно производить безусловно, с условием или с выборкой данных из другой таблицы.
Удаление данных производится командой DELETE:
Пример удаления всех данных:
Transact-SQL позволяет использовать временные таблицы, то есть таблицы, которые создаются в памяти сервера на время работы пользователя с базой данных. Временные таблицы могут иметь любое имя, но начинаться обязаны с символа #.
Хранимые процедуры и функции представляют собой набор SQL-операторов, которые можно сохранять на сервере. Если сценарий сохранен на сервере, то клиентам не придется повторно задавать одни и те же отдельные операторы, вместо этого они смогут обращаться к хранимой процедуре. Ситуации, когда хранимые процедуры особенно полезны:
Пример создания хранимой процедуры и хранимой функции:
Итак, хранимые процедуры и функции дают следующие преимущества:
Для увеличения производительности, то есть для быстрого выполнения запросов, следует помнить некоторые правила составления строк запросов: