T-SQL, Запросы

Приветствую всех, сегодня мы рассмотрим t-sql запросы.

SQL ( Structured Query Language ) — язык структурированных запросов, применяемый для создания, модификации и управления данными в реляционных базах данных.

T-SQL — это собственный диалект языка структурированных запрос (SQL), применяемый в СУБД SQL Server.

SQL был расширен такими дополнительными возможностями:

  • Управляющие операторы.
  • Локальные и глобальные переменные.
  • Различные дополнительные функции.
  • Поддержка аутентификации Microsoft Windows.

Директивы сценария — это специфические команды, которые используются только в MS SQL. Эти команды помогают серверу определять правила работы со скриптом и транзакциями. Типичные представители: GO — информирует программы SQL Server об окончании пакета инструкций Transact-SQL, EXEC (или EXECUTE ) — выполняет процедуру
или скалярную функцию.

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

Data Manipulation Language (DML)— это семейство компьютерных языков, используемых пользователями баз данных для получения, вставки, удаления или изменения данных в базах данных.

Функции DML :
INSERT – вставка данных
SELECT – выборка данных
UPDATE – изменение данных
DELETE – удаление данных

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

Как вы помните в прошлом уроке мы создали бд и таблицу, в которую благодаря конструктору внесли данные. Сейчас мы расширим нашу таблицу и сделаем это программно.

Для этого используем оператор вставки INSERT

После того как мы выполнили все 3 блока кода, мы рассмотрим пример как можно выбраться все данные из таблицы, сделать это можно с помощью запроса:

SELECT-Выбрать

*-все

From-из

MyFriend-имя таблицы.

Выполнив его у нас должно получиться как на скриншоте ниже:

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

Следующий пример покажет как можно одновременно добавить в нашу таблицу несколько данных людей:

Теперь рассмотрим варианты запросов отвечающих за выборку данных SELECT:

Далее для работы нам потребуется скачать AdventureWorks2012_Data.mdf из интернета. Так как в базе содержится много таблиц которые мы будем рассматривать. После того как скачали, в свойствах файла уберите флажок только для чтения, и не забудьте там же нажать кнопку разблокировать. Иначе будет ошибка добавления базы данных. Так же вам потребуется запустить Microsoft SQL Server Management Studio 17 от имени администратора, иначе у вас будут вылетать ошибки, которые не позволят добавить вам эту базу данных.

После добавления базы не забудьте выполнить следующую команду:

которая позволит вам переключиться на работу к базе данных AdventureWorks2012_Data.mdf

Попробуем выбрать из таблицы CreditCard всех: типов кредитных карт, номеров карт, месяца до которого действительна карта, и года до которого действительна карта

Производим выборку всех данных из таблицы CreditCard, где значения ячеек столбца CreditCardID равны 10

Производим выборку всех данных из таблицы CreditCard, где значения ячеек столбца CreditCardID меньше 10.

Производим выборку всех данных из таблицы CreditCard,  где значения ячеек столбца CreditCardID лежат в диапазоне от 1 до 3 (включительно).

Производим выборку данных из столбцов CardType и ExpYear, таблицы CreditCard, где значения ячеек столбца ExpYear равно 2005 или 2006.

Производим выборку всех данных из таблицы CreditCard,  где значения ячеек столбца ExpYear лежат в диапазоне от 2005 до 2006 (включительно).

Производим выборку данных из столбцов CardType и ExpYear, таблицы CreditCard, где значения ячеек столбца ExpYear равно 2005 и значения ячеек столбца CardType равно ‘Vista’.

Если у вас ячейки имеют тип Data и вы хотите выбрать только с определенной даты, до определенной даты, то этом можно сделать по аналогии:

Производим выборку данных из столбцов CardType и ExpYear, таблицы CreditCard, где значения ячеек столбца ExpYear не равно 2006

Производим выборку данных из столбцов CardType и ExpYear, таблицы CreditCard, где значения ячеек столбца CardType соответствуют шаблону ‘ColonialVoice’

Производим выборку данных из столбцов CardType и ExpYear, таблицы CreditCard, где значения ячеек столбца CardType соответствуют шаблону ‘Dis%’

Производим выборку данных из столбцов CardType и ExpYear, таблицы CreditCard, где значения ячеек столбца CardType соответствуют шаблону ‘Vis__’

Производим выборку данных из столбцов CardType и ExpYear, таблицы CreditCard,  где значения ячеек столбца CardType соответствуют шаблону ‘Vis_’

Производим выборку данных из столбцов CardType и ExpYear, таблицы CreditCard, где значения ячеек столбца CardType соответствуют шаблону ‘Vis_а’

Производим выборку данных из столбцов CardType и ExpYear, таблицы CreditCard, где значения ячеек столбца CardType соответствуют шаблону ‘%ist%’

Производим выборку всех данных из таблицы CreditCard,  где значения ячеек столбца ExpMonth равняются одному из значений ряда (1, 5, 11)

Конструкция ORDER BY — УПОРЯДОЧИТЬ ПО…

Производим выборку данных из столбцов BusinessEntityID, FirstName, LastName, MiddleName и ModifiedDate, где данные упорядочены по столбцу FirstName, таблицы Person.Person

Производим выборку данных из столбцов BusinessEntityID, FirstName, LastName, MiddleName и ModifiedDate, где данные упорядочены по столбцу ModifiedDate, таблицы Person.Person

Производим выборку данных из столбцов BusinessEntityID, FirstName, LastName, MiddleName и ModifiedDate, где данные упорядочены по столбцам FirstName и LastName, таблицы Person.Person

Производим выборку данных из столбцов BusinessEntityID, FirstName, LastName, MiddleName и ModifiedDate,  где данные упорядочены по столбцу FirstName, таблицы Person.Person

Производим выборку данных из столбцов BusinessEntityID, FirstName, LastName, MiddleName и EmailAddress, где данные упорядочены в порядке убывания, по столбцу FirstName, таблицы Person.Contact

Агрегирование данных. Конструкция GROUP BY

Производим выборку данных из столбцов SalesOrderID и OrderQty, таблицы Sales.SalesOrderDetail, где значения ячеек столбца SalesOrderID равняются одному из значений ряда (43666, 43660, 43664)

Производим выборку данных из столбца SalesOrderID  и возвращаемого значения агрегированной функции SUM по столбцу OrderQty, таблицы Sales.SalesOrderDetail, где значения ячеек столбца SalesOrderID равняется одному из значений ряда (43666, 43660, 43664), при этом производится группировка по значениям столбца SalesOrderID.  Агрегирование-процесс объединения элементов.

Производим выборку возвращаемого значения агрегированной функции COUNT таблицы HumanResources.Employee.

Производим выборку данных из столбца ProductID и возвращаемого значения агрегированной функции COUNT, таблицы Sales.SalesOrderDetail, при этом производится группировка по значениям столбца ProductID.

Производим выборку данных из столбца ProductID и возвращаемого значения агрегированной функции COUNT, таблицы Sales.SalesOrderDetail, при этом производится группировка по значениям столбца ProductID,  где возвращаемое значение агрегированной функции COUNT больше 3300-ти.

Важно! HAVING — должен использоваться совместно с GROUP BY

WHERE работает до группировки, а HAVING работает вместе с группировкой.

Оператор UPDATE (изменение(обновление) данных в таблице)

Изменяем значение сразу в нескольких столбцах

Оператор DELETE (удаление данных из таблицы)

Удалить всех пользователей имя которых TestName

Удаление всех данных из таблицы с помощью DELETE

Для удаления всех данных из таблицы лучше использовать — TRUNCATE TABLE, так как TRUNCATE удаляет информацию из базы быстрее чем стандартный DELETE.

В случаи если в ваше таблице при создании ее, была допущена ошибка, в имени или в типе значений, и при изменений выскакивает ошибка сохранение изменений запрещено

То можно выполнить запрос alter, в котором мы берем таблицу Product в которой изменяем столбец Cost вводим новый тип значения и последним параметром не обязательное заполнение.

 

 

 

 

 

 

 

 

Обновлено: 07.11.2018 — 17:03

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.