Выполнение запросов microsoft sql server. Простые SQL запросы - короткая справка и примеры. Добавление вычисляемого поля Average

Выполнение запросов microsoft sql server. Простые SQL запросы - короткая справка и примеры. Добавление вычисляемого поля Average

Пример создания запроса (Query ) в базе данных MS SQL Server . База данных размещена в локальном файле *.mdf

Условие задачи

Задана база данных, которая размещается в файле Education.mdf . База данных содержит две связанные между собою таблицы Student и Session .

Таблицы связаны между собою за полем ID_Book .

Используя средства Microsoft Visual Studio создать запрос с именем Query1 , который будет иметь следующую структуру:

Название поля Таблица
Num_Book Student
Name Student
Mathematics Session
Informatics Session
Philosophy Session
Average Вычислительное поле

Выполнение (пошаговая инструкция)

1. Загрузить Microsoft Visual Studio
2. Подключить базу данных Education.mdf к перечню баз данных утилиты Server Explorer

Чтобы не тратить время на разработку и связывание таблиц базы данных Education.mdf , архив ранее подготовленной базы данных можно загрузить . После загрузки и сохранения в некоторой папке, базу данных нужно разархивировать и подключить к перечню баз данных утилиты Server Explorer .

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

  • выбором команды «Connect to Database…» с меню Tools ;
  • выбором кнопки (команды) «Connect to Database…» из утилиты Server Explorer .

В результате, откроется окно мастера, в котором с помощью нескольких шагов (окон) нужно настроить подключение базы данных.

Рис. 1. Способы добавления/подключения базы данных

Подробное описание того, как осуществляется подключение базы данных типа Microsoft SQL Server в Microsoft Visual Studio , приведено в теме:

  • Пример создания/подключени я локальной базы данных Microsoft SQL Server , которая размещается в *.mdf -файле

После подключения, окно утилиты Server Explorer будет выглядеть как показано на рисунке 2.

Рис. 2. Утилита Server Explorer с подключенной базой данных Education.mdf

3. Добавление нового запроса. Команда «New Query»

К базе данных можно создавать запросы. В нашем случае нужно создать запрос в соответствии с условием задачи.

Запрос создается с помощью команды «New Query» , которая вызовется из контекстного меню (рисунок 3). Чтобы вызвать команду, достаточно сделать клик правой кнопкой мышки в области поля, которое выделено для отображения элементов базы данных Education.mdb . Следует отметить, что запросы не сохраняются системой. Для отображения сохраненных (сложных) запросов используется представление (Views ).

На рисунке 3 отображено контекстное меню, которое вызывается при нажатии на вкладке Views (представление). В этом меню нужно выбрать команду «New Query» . Эта команда есть в перечне контекстных меню других составляющих базы данных (таблиц, диаграмм и т.п.).

Рис. 3. Команда New Query

В результате откроется окно «Add Table» , в котором нужно выбрать таблицы, данные из которых будут использоваться в запросе (рисунок 4).

Рис. 4. Выбор таблиц, которые будут использоваться в запросе

Для нашего случая нужно выбрать обе таблицы.

В результате окно Microsoft Visual Studio будет выглядеть, как показано на рисунке 5.

Рис. 5. Окно MS Visual Studio после создания запроса

В таблицах нужно выделить поля, которые будут использоваться в запросе. Порядок выбора полей должен соответствовать отображению их в запросе в соответствии с условием задачи. Это означает, что сначала выбираются поля таблицы Student (NumBook , Name ), а потом выбираются поля таблицы Session (Mathematics , Informatics , Philosophy ).

Для нашего случая выбор полей изображен на рисунке 6.

Рис. 6. Выбор полей для запроса

Как видно из рисунка 6, в нижней части окна отображается запрос на языке SQL , сформированный системой

SELECT Student.Num_Book, Student.Name, Session.Mathematics, Session.Informatics, Session.Philosophy FROM
4. Добавление вычисляемого поля Average

Чтобы создать вычисляемое поле Average , нужно в окне, где отображается SQL -запрос изменить текст этого запроса. Например:

SELECT Student.Num_Book, Student.Name, Session.Mathematics, Session.Informatics, Session.Philosophy, (Session.Mathematics + Session.Informatics + Session.Philosophy) / 3.0 AS Average FROM Session INNER JOIN Student ON Session.ID_Book = Student.ID_Book

Добавляется вычислительное поле Average , которое есть средним арифметическим (рисунок 7).

Последнее обновление: 05.07.2017

В прошлой теме в SQL Management Studio была создана простенькая база данных с одной таблицей. Теперь определим и выполним первый SQL-запрос. Для этого откроем SQL Management Studio, нажмем правой кнопкой мыши на элемент самого верхнего уровня в Object Explorer (название сервера) и в появившемся контекстном меню выберем пункт New Query :

После этого в центральной части программы откроется окно для ввода команд языка SQL.

Выполним запрос к таблице, которая была создана в прошлой теме, в частности, получим все данные из нее. База данных у нас называется university , а таблица - dbo.Students , поэтому для получения данных из таблицы введем следующий запрос:

SELECT * FROM university.dbo.Students

Оператор SELECT позволяет выбирать данные. FROM указывает источник, откуда брать данные. Фактически этим запросом мы говорим "ВЫБРАТЬ все ИЗ таблицы university.dbo.Students". Стоит отметить, что для названия таблицы используется полный ее путь с указанием базы данных и схемы.

После ввода запроса нажмем на панели инструментов на кнопку Execute , либо можно нажать на клавишу F5 .

В результате выполнения запроса в нижней части программы появится небольшая таблица, которая отобразит результаты запроса - то есть все данные из таблицы Students.

Если необходимо совершить несколько запросов к одной и той же базе данных, то мы можем использовать команду USE , чтобы зафиксировать базу данных. В этом случае при запросах к таблицам достаточно указать их имя без имени бд и схемы:

USE university SELECT * FROM Students

В данном случае мы выполняем запрос в целом для сервера, мы можем обратиться к любой базе данных на сервере. Но также мы можем выполнять запросы только в рамках конкретной базы данных. Для этого необходимо нажать правой кнопкой мыши на нужную бд и в контекстном меню выбрать пункт New Query :

Если в этом случае мы захотим выполнить запрос к выше использованной таблице Students, то нам не пришлось бы указывать в запросе название базы данных и схему, так как эти значения итак уже были бы понятны.

Среда SQL Server Management Studio предоставляет завершенное средство для создания всех типов запросов. С ее помощью можно создавать, сохранять, загружать и редактировать запросы. Кроме этого, над запросами можно работать без подключения к какому-либо серверу. Этот инструмент также предоставляет возможность разрабатывать запросы для разных проектов.

Предоставляется возможность работать с запросами как посредством редактора запросов, так и с помощью обозревателя решений. В этой статье рассматриваются оба эти инструмента. Кроме этих двух компонентов среды SQL Server Management Studio мы рассмотрим отладку SQL-кода, используя встроенный отладчик.

Редактор запросов

Чтобы открыть панель редактора запросов Query Editor (Редактор запросов) , на панели инструментов среды SQL Server Management Studio нажмите кнопку New Query (Создать запрос). Эту панель можно расширить, чтобы отображать кнопки создания всех возможных запросов, а не только запросов компонента Database Engine. По умолчанию создается новый запрос компонента Database Engine, но, нажав соответствующую кнопку на панели инструментов, можно также создавать запросы MDX, XMLA и др.

Строка состояния внизу панели редактора запросов указывает статус подключения редактора к серверу. Если подключение к серверу не выполнено автоматически, при запуске редактора запросов выводится диалоговое окно подключения к серверу, в котором можно выбрать сервер для подключения и режим проверки подлинности.

Редактирование запросов в автономном режиме предоставляет больше гибкости, чем при подключении к серверу. Для редактирования запросов не обязательно подключаться к серверу, и окно редактора запросов можно отключить от одного сервера (выполнив команду меню Query --> Connection --> Disconnect) и подключить к другому, не открывая другого окна редактора. Чтобы выбрать автономный режим редактирования, в диалоговом окне подключения к серверу, открывающемуся при запуске редактора конкретного вида запросов, просто нажмите кнопку Cancel (Отмена).

Редактор запросов можно использовать для выполнения следующих задач:

    создания и выполнения инструкций языка Transact-SQL;

    сохранения созданных инструкций языка Transact-SQL в файл;

    создания и анализирования планов выполнения общих запросов;

    графического иллюстрирования плана выполнения выбранного запроса.

Редактор запросов содержит встроенный текстовый редактор и панель инструментов с набором кнопок для разных действий. Главное окно редактора запросов разделено по горизонтали на панель запросов (вверху) и панель результатов (внизу). Инструкции Transact-SQL (т.е. запросы) для исполнения вводятся в верхнюю панель, а результаты обработки системой этих запросов отображаются в нижней панели. На рисунке ниже показан пример ввода запроса в редактор запросов и результатов выполнения этого запроса:

В первой инструкции запроса USE указывается использовать базу данных SampleDb в качестве текущей базы данных. Вторая инструкция - SELECT - извлекает все строки таблицы Employee. Чтобы выполнить этот запрос и вывести результаты, в панели инструментов редактора запросов нажмите кнопку Execute (Выполнить) или клавишу F5 .

Можно открыть несколько окон редактора запросов, т.е. выполнить несколько подключений к одному или нескольким экземплярам компонента Database Engine. Новое подключение создается нажатием кнопки New Query в панели инструментов среды SQL Server Management Studio.

В строке состояния внизу окна редактора запросов отображается следующая информация, связанная с выполнением инструкций запроса:

    состояние текущей операции (например, "Запрос успешно выполнен");

    имя сервера базы данных;

    имя текущего пользователя и идентификатор серверного процесса;

    имя текущей базы данных;

    время, затраченное на выполнение последнего запроса;

    количество найденных строк.

Одним из основных достоинств среды SQL Server Management Studio является легкость ее использования, что также относится и к редактору запросов Query Editor. Редактор запросов поддерживает множество возможностей, облегчающих задачу кодирования инструкций языка Transact-SQL. В частности, в нем используется подсветка синтаксиса, чтобы улучшить читаемость инструкций языка Transact-SQL. Все зарезервированные слова отображаются синим цветом, переменные - черным, строки - красным, а комментарии - зеленым.

Кроме этого, редактор запросов оснащен контекстно-зависимой справкой, называющейся Dynamic Help , посредством которой можно получить сведения о конкретной инструкции. Если вы не знаете синтаксиса инструкции, выделите ее в редакторе, а потом нажмите клавишу F1 . Также можно выделить параметры различных инструкций Transact-SQL, чтобы получить справку по ним из электронной документации.

В SQL Management Studio поддерживается инструмент SQL Intellisense, который является видом средства автозавершения. Иными словами, этот модуль предлагает наиболее вероятное завершение частично введенных элементов инструкций Transact-SQL.

С редактированием запросов может также помочь обозреватель объектов (object Explorer). Например, если вы хотите узнать, как создать инструкцию CREATE TABLE для таблицы Employee, щелкните правой кнопкой эту таблицу в обозревателе объектов и в появившемся контекстном меню выберите пункты Script Table As --> CREATE to --> New Query Editor Window (Создать скрипт для таблицы --> Используя CREATE --> Новое окно редактора запросов). Окно редактора запросов, содержащее созданную таким образом инструкцию CREATE TABLE, показано на рисунке ниже. Эта возможность также применима и с другими объектами, такими как хранимые процедуры и функции.

Обозреватель объектов очень полезен для графического отображения плана исполнения конкретного запроса. Планом выполнения запроса называется вариант выполнения, выбранный оптимизатором запроса среди нескольких возможных вариантов выполнения конкретного запроса. Введите в верхнюю панель редактора требуемый запрос, выберите последовательность команд из меню Query --> Display Estimated Execution Plan (Запрос --> Показать предполагаемый план выполнения) и в нижней панели окна редактора будет показан план выполнения данного запроса.

Обозреватель решений

Редактирование запросов в среде SQL Server Management Studio основано на методе решений (solutions). Если создать пустой запрос с помощью кнопки New Query, то он будет основан на пустом решении. Это можно увидеть, выполнив последовательность команд из меню View --> Solution Explorer сразу же после открытия пустого запроса.

Решение может быть связано ни с одним, с одним или с несколькими проектами. Пустое решение, не связано ни с каким проектом. Чтобы связать проект с решением, закройте пустое решение, обозреватель решений и редактор запросов и создайте новый проект, выполнив последовательность команд из меню File --> New --> Project. В открывшемся окне New Project выберите в средней панели опцию SQL Server Scripts. Проект - это способ организации файлов в определенном месте. Проекту можно присвоить имя и выбрать место для его расположения на диске. При создании нового проекта автоматически запускается новое решение. Проект можно добавить к существующему решению с помощью обозревателя решений.

Для каждого созданного проекта в обозревателе решений отображаются папки Connections (Соединения), Queries (Запросы) и Miscellaneous (Разное). Чтобы открыть новое окно редактора запросов для данного проекта, щелкните правой кнопкой его папку Queries и в контекстном меню выберите пункт New Query.

Отладка SQL Server

SQL Server, начиная с версии SQL Server 2008, оснащен встроенным отладчиком кода. Чтобы начать сеанс отладки, выберите в главном меню среды SQL Server Management Studio следующую последовательность команды Debug --> Start Debugging (Отладка --> Начать отладку). Мы рассмотрим работу отладчика на примере с использованием пакета команд. Пакетом называется последовательность инструкций SQL и процедурных расширений, составляющих логическое целое, отправляемая компоненту Database Engine для выполнения всех содержащихся в ней инструкций.

На рисунке ниже показан пакет, который подсчитывает количество сотрудников, работающих над проектом p1. Если это количество равно 4 или больше, то выводится соответствующее сообщение. В противном случае выводятся имена и фамилии сотрудников.

Чтобы остановить выполнение пакета на определенной инструкции, можно установить точки останова, как это показано на рисунке. Для этого нужно щелкнуть слева от строки, на которой нужно остановиться. В начале отладки выполнение останавливается на первой линии кода, которая отмечается желтой стрелкой. Чтобы продолжить выполнение и отладку, выполните команду меню Debug --> Continue (Отладка --> Продолжить). Выполнение инструкций пакета продолжится до первой точки останова, и желтая стрелка остановится на этой точке.

Информация, связанная с процессом отладки, отображается в двух панелях внизу окна редактора запросов. Информация о разных типах информации об отладке сгруппирована в этих панелях на нескольких вкладках. Левая панель содержит вкладку Autos (Автоматические), Locals (Локальные) и до пяти вкладок Watch (Видимые). Правая панель содержит вкладки Call Stack (Стек вызовов), Threads (Потоки), Breakpoints (Точки останова), Command Window (Окно команд), Immediate Window (Окно интерпретации) и Output (Вывод). На вкладке Locals отображаются значения переменных, на вкладке Call Stack - значения стека вызовов, а на вкладки Breakpoints - информация о точках останова.

Чтобы завершить процесс отладки, выполните последовательность команд из главного меню Debug --> Stop Debugging или нажмите синюю кнопку на панели инструментов отладчика.

В SQL Server 2012 функциональность встроенного в SQL Server Management Studio отладчика расширена несколькими новыми возможностями. Теперь в нем можно выполнять ряд следующих операций:

    Указывать условие точки останова. Условие точки останова - это SQL-выражение, вычисленное значение которого определяет, будет ли выполнение кода остановлено в данной точке или нет. Чтобы указать условие точки останова, щелкните правой кнопкой красный значок требуемой точки и в контекстном меню выберите пункт Condition (Условие). Откроется диалоговое окно Breakpoint Condition (Условие для точки останова), в котором нужно ввести необходимое логическое выражение. Кроме этого, если нужно остановить выполнение, в случае если выражение верно, то следует установить переключатель Is True. Если же выполнение нужно остановить, если выражение изменилось, то нужно установить переключатель When Changed (Изменилось).

    Указать число попаданий в точку останова. Число попаданий - это условие останова выполнения в данной точке в зависимости от количества раз, когда была достигнута эта точка останова в процессе выполнения. При достижении указанного числа прохождений и любого другого условия, указанного для данной точки останова, отладчик выполняет указанное действие. Условие прерывания выполнения на основе числа попаданий может быть одним из следующих:

    1. безусловное (действие по умолчанию) (Break always);

      если число попаданий равно указанному значению (Break when the his count equals a specified value);

      если число попаданий кратно указанному значению (Break when the hit count equals a multiple of a specified value);

      если число попаданий равно или больше указанного значения (Break when the his count is greater or equal to a specified value).

    Чтобы задать число попаданий в процессе отладки, щелкните правой кнопкой значок требуемой точки останова на вкладке Breakpoints, в контекстном меню выберите пункт Hit Count (Число попаданий), затем в открывшемся диалоговом окне Breakpoint Hit Count (Число попаданий в точку останова) выберите одно из условий из приведенного ранее списка. Для опций, требующих значение, введите его в текстовое поле справа от раскрывающегося списка условий. Чтобы сохранить указанные условия, нажмите кнопку OK.

    Указывать фильтр точки останова. Фильтр точки останова ограничивает работу останова только на указанных компьютерах, процессах или потоках. Чтобы установить фильтр точки останова, щелкните правой кнопкой требуемую точку и в контекстном меню выберите пункт Filter. Затем в открывшемся диалоговом окне Breakpoint Filters (Фильтр точки останова) укажите ресурсы, которыми нужно ограничить выполнение данной точки останова. Чтобы сохранить указанные условия, нажмите кнопку ОК.

    Указывать действие в точке останова. Условие When Hit (При попадании) указывает действие, которое нужно выполнить, когда выполнение пакета попадает в данную точку останова. По умолчанию, когда удовлетворяются как условие количества попаданий, так и условие останова, тогда выполнение прерывается. Альтернативно можно вывести заранее указанное сообщение.

    Чтобы указать действие при попадании в точку останова, щелкните правой кнопкой красный значок требуемой точки и выберите в контекстном меню пункт When Hit. В открывшемся диалоговом окне When Breakpoint is Hit (При попадании в точку останова) выберите требуемое действие. Чтобы сохранить указанные условия, нажмите кнопку OK.

    Использовать окно быстрой проверки Quick Watch. В окне QuickWatch (Быстрая проверка) можно просмотреть значение выражения Transact-SQL, а потом сохранить это выражение в окне просмотра значений Watch (Просмотр значений). Чтобы открыть окно Quick Watch, в меню Debug выберите пункт Quick Watch. Выражение в этом окне можно или выбрать из раскрывающегося списка Expression (Выражение), или ввести его в это поле.

    Использовать всплывающую подсказку Quick Info. При наведении указателя мыши на идентификатор кода средство Quick Info (Краткие сведения) отображает его объявление во всплывающем окне.

Разработать приложение, которое демонстрирует основные операции над данными в базе данных типа MS SQL Server , а именно:

  • подключение базы данных к приложению;
  • отображение таблиц базы данных на форме;
  • добавление новой записи в базу данных;
  • редактирование записи;
  • удаление записи.

За основу взята база данных Education.dbo , процесс создания которой подробно описывается

На рисунке 1 отображена структура базы данных Education.dbo . Как видно из рисунка, база данных называется:

sasha-pc\sqlexpress.Education.dbo

Здесь «sasha-pc » – идентификатор компьютера в сети, «sqlexpress » – название сервера баз данных, «Education.dbo » – название базы данных.

Рис. 1. База данных Education.dbo

База данных содержит две таблицы: Student и Session. Структура таблиц следующая.

Таблица Student .

Таблица Session .

Выполнение

1. Создать новый проект в MS Visual Studio как Windows Forms Application .

Создать новый проект типа Windows Forms Application . Пример создания нового проекта подробно описывается

2. Создание нового представления (view ) для отображения данных таблицы Student .

Чтобы отображать данные таблиц базы данных, можно использовать разные способы. Один из них – это создание представлений (views ), которые формируются средствами MS Visual Studio .

В нашем случае данные таблиц будут отображаться на форме в элементе управления типа DataGridView . После создания представлений, очень удобно их связать с элементами DataGridView .

Для создания представления, нужно вызвать команду «Add New View » из контекстного меню, которое вызывается кликом правой кнопкой мышки на элементе «Views » базы данных Education.dbo (рисунок 2).

Рис. 2. Вызов команды добавления нового представления

В результате откроется окно «Add Table » (рисунок 3). В окне нужно выбрать таблицы, которые добавляются к представлению.

Рис. 3. Выбор таблиц, на которых будет базироваться новое представление

В нашем случае выбираем таблицу Student и подтверждаем свой выбор кликом на кнопке Add . Следующим шагом нужно закрыть окно выбором кнопки Close .

После выполненных действий будет сформировано окно, в котором нужно выбрать поля, которые должны отображаться в представлении (на форме). Выбираем все поля (рисунок 4).

При выборе полей, в верхней части рабочей области отображаются поля таблицы Student . С помощью «мышки» можно выбирать нужные поля для представления.

Соответственно, в средней области окна отображаются названия выбранных полей, таблица в которой они есть (см. рис. 4), возможность сортировки, фильтрование и прочее.

В нижней части области отображается соответствующий текст SQL -запроса, который используется для создания представления.

Рис. 4. Выбор полей таблицы Student для их отображения в представлении

После выбора команды

File->Save All File->Save View1

откроется окно, в котором нужно указать имя представления. Задаем имя «View Student » (рисунок 5).

Рис. 5. Указание имени для представления

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

Рис. 6. Представление View Student в базе данных

Теперь можно размещать элемент управления DataGridView и связывать его с представлением.

3. Размещение элемента управления DataGridView и настройка связи с базой данных.

Перед размещением элемента управления DataGridView нужно перейти в режим проектирования формы «Form1.cs «.

Элемент DataGridView представляет собой таблицу, которая может отображать данные. Данный элемент управления размещается в панели ToolBox . Сначала немного корректируем размеры формы, а потом размещаем на ней элемент управления DataGridView (рисунок 7). В результате будет создан экземпляр объекта с именем dataGridView1 по умолчанию.

Рис. 7. Элемент управления DataGridView и окно выбора источника данных

После размещения элемента управления типа DataGridView на форме в правом верхнем углу можно выбрать настройку источника данных. Соответственно откроется окно «DataGridView Tasks «. В этом окне нужно выбрать сплывающее меню «Choose Data Source «.

В открывшемся меню выбирается команда «Add Project Data Source… » (рис. 7). После этого открывается окно мастера, в котором последовательно выбирается источник данных.

На рисунке 8 показано окно «Data Source Configuration Wizard «, в котором выбирается тип источника данных. В нашем случае устанавливаем «Database «.

Рис. 8. Выбор типа источника данных

В следующем окне (Рисунок 9) выбирается модель источника данных. Нужно выбрать DataSet .

Рис. 9. Выбор модели источника данных

В окне, изображенном на рисунке 10 , нужно задать соединение данных, которое нужно использовать для подключения к базе данных. В нашем случае нужно выбрать базу данных «sasha-pc\sqlexpress\Education.dbo «.

Рис. 10. Выбор соединения данных

В следующем окне (рисунок 11) предлагается сохранить строку соединения Connection String в конфигурационный файл приложения. Оставляем все как есть и переходим к следующему окну.

Рис. 11. Предложение сохранения строки соединения с базой данных Connection String в конфигурационном файле приложения

После создания соединения с базой данных отображается множество объектов базы данных (рисунок 12). В нашем случае нужно выбрать представление «View Student » и все поля из него. Отмеченные поля будут отображаться в компоненте типа DataGridView .

Рис. 12. Выбор объектов базы данных, которые нужно отображать в DataGridView

После выбора кнопки Finish будут отображены выбранные объекты (представление View Student ) базы данных Education.dbo (рисунок 13).

Рис. 13. Элемент управления типа DataGridView с выбранными полями представления View Student

Подобным образом можно настроить представления, которые содержат любые поля из любых таблиц базы данных. Также в одном представлении могут отображаться поля из разных таблиц.

4. Настройка вида элемента управления типа DataGridView .

Если запустить приложение на выполнение, то будут получены данные представления View Student , которое отвечает таблице Student базы данных (рисунок 14).

Рис. 14. Запуск приложения на выполнение

Как видно из рисунка 14, данные в таблице dataGridView1 отображаются нормально, но оформление можно скорректировать.

Элемент управления типа DataGridView допускает корректирование вида полей, которые отображаются.

Для вызова команд редактирования полей, достаточно вызвать контекстное меню кликом правой кнопкой мышки на элементе управления dataGridView1 .

В меню существуют различные полезные команды, которые разрешают управлять видом и работой DataGridView :

  • команда блокирования элемента управления (Lock Controls );
  • команда редактирования полей, которые отображаются в представлении (Edit Columns… );
  • команда добавления новых полей, например вычисляемых (Add Column ).

В нашем случае нужно выбрать команду «Edit Columns… » (рисунок 15).

Рис. 15. Команда «Edit Columns… » из контекстного меню

В результате откроется окно «Edit Columns «, в котором можно настроить вид полей представления по собственному вкусу (рисунок 16).

Рис. 16. Окно настройки вида полей в представлении «View Student «

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

5. Строка Connection String

Для того, чтобы в базу данных вносить изменения, нужно получить строку соединения с базой данных Connection String .

Существуют разные способы получения строки соединения с базой данных. Один из них базируется на чтении этой строки в окне Properties базы данных Education.dbo (рис. 17).

Рис. 17. Определение строки Connection String

Для сохранности строки в программе вводится внутренняя переменная типа string . С помощью буфера обмена копируем строку Connection String в описанную переменную типа string .

В тексте файла «Form1.cs » в начале описания класса Form1 надо описать переменную:

string conn_string = ;

На данный момент текст класса Form1 следующий:

public partial class Form1 : Form { string conn_string = @"Data Source=(local)\SQLEXPRESS;Initial Catalog=Education;Integrated Security=True;Pooling=False" ; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the "educationDataSet.View_Student" table. You can move, or remove it, as needed. } }

6. Создание новой формы для демонстрации команд манипулирования данными.

Для того, чтобы иметь возможность обрабатывать данные текущей записи нужно создать новую форму. Процесс создания новой формы в MS Visual Studio — C# подробно описывается .

Добавление новой формы осуществляется командой:

Project -> Add Windows Form...

В открывшемся окне «New Item » нужно выбрать элемент «Windows Form «.

Имя файла новой формы оставляем по умолчанию «Form2.cs «.

На рисунке 18 изображен вид новой формы.

Размещаем на форме элементы управления следующих типов:

  • два элемента управления типа Button (кнопки OK и Cancel ). Соответственно будет получено два объекта с именами button1 и button2 ;
  • четыре элемента управления типа Label для создания информационных сообщений;
  • четыре элемента управления типа TextBox для ввода данных в полях Num_book , Name , Group , Year .

Нужно настроить следующие свойства элементов управления:

  • в элементе управления button1 свойство Text = «OK «;
  • в элементе управления button2 свойство Text = «Cancel «;
  • в элементе управления button1 свойство DialogResult = «OK «;
  • в элементе управления button2 свойство DialogResult = «Cancel «;
  • в элементе управления label1 свойство Text = «Num_book «;
  • в элементе управления label2 свойство Text = «Name «;
  • в элементе управления label3 свойство Text = «Group «;
  • в элементе управления label4 свойство Text = «Year «.

Также настраиваем видимость элементов управления типа TextBox . Для этого во всех элементах управления textBox1 , textBox2 , textBox3 , textBox4 значение свойства Modifiers = «public «.

Рис. 18. Вид новосозданной формы

7. Добавление кнопок вызова команд манипулирования данными таблицы Student .

Для дальнейшей работы нужно с помощью мышки переключиться на главную форму Form1 .

На главную форму приложения Form1 добавляем три кнопки (Button ). Автоматически будет создано три переменных-объекта с именами button1 , button2 , button3 . В каждой из этих кнопок вносим следующие настройки (окно Properties ):

  • в кнопке button1 свойство Text = «Insert … » (вставить запись);
  • в кнопке button2 свойство Text = «Edit … » (изменить запись);
  • в кнопке button3 свойство Text = «Delete «.

В результате внесенных изменений главная форма будет иметь вид как показано на рисунке 19.

Рис. 19. Главная форма приложения

8. Программирование события клика на кнопке «Insert… «.

Обработчик события клика на кнопке «Insert… » имеет вид:

private void button1_Click_1(object sender, EventArgs e) { string cmd_text; Form2 f2 = new Form2 (); if (f2.ShowDialog() == DialogResult .OK) { cmd_text = "INSERT INTO Student VALUES (" + """ + f2.textBox1.Text + "" , "" + f2.textBox2.Text + "" , "" + f2.textBox3.Text + "" , " + f2.textBox4.Text + ")" ; // создать соединение с базой данных SqlConnection sql_conn = new SqlConnection (conn_string); // создать команду на языке SQL SqlCommand sql_comm = new SqlCommand (cmd_text, sql_conn); sql_conn.Open(); // открыть соединение sql_comm.ExecuteNonQuery(); // выполнить команду на языке SQL sql_conn.Close(); // закрыть соединение this .view_StudentTableAdapter.Fill(this .educationDataSet.View_Student); } }

Сначала вызывается форма Form2 . После получения результата «OK » (нажатие соответствующей кнопки), в форме Form2 заполненные поля в элементах типа TextBox включаются в строку SQL -запроса. SQL -запрос добавления новой строки имеет вид:

INSERT INTO Student VALUES (value1, value2, value3, value4)

где value1 отвечает номеру зачетной книжки; value2 – фамилия студента; value3 – группа, в которой учится студент; value4 – год вступления.

Строка соединения с базой данных Connection String описывается в переменной conn_string (см. п. 5). Объект класса SqlConnection осуществляет соединение приложения с источниками данных. Кроме того, класс Connection решает задачи аутентификации пользователей, работу с сетями, идентификацию баз данных, буферизацию соединений и обработку транзакций.

Команда на языке SQL , добавляющая запись к таблице, инкапсулирована в классе SqlCommand . Конструктор класса SqlCommand принимает два параметра: строку запроса на языке SQL (переменная cmd_text ) и объект класса SqlConnection .

Метод ExecuteNonQuery() реализован в интерфейсе IDBCommand . Метод реализует SQL -команды, которые не возвращают данные. К таким командам относятся команды INSERT , DELETE , UPDATE а также хранимые процедуры, которые не возвращают данных. Метод ExecuteNonQuery() возвращает количество задействованных ним записей.

9. Программирование события клика на кнопке «Edit… «.

Обработчик события клика на кнопке «Edit… » имеет вид:

private void button2_Click(object sender, EventArgs e) { string cmd_text; Form2 f2 = new Form2 (); int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert .ToString(dataGridView1.Value); f2.textBox1.Text = num_book; f2.textBox2.Text = Convert .ToString(dataGridView1.Value); f2.textBox3.Text = Convert .ToString(dataGridView1.Value); f2.textBox4.Text = Convert .ToString(dataGridView1.Value); if (f2.ShowDialog() == DialogResult .OK) { cmd_text = "UPDATE Student SET Num_book = "" + f2.textBox1.Text + "", " + " = "" + f2.textBox2.Text + "", " + " = "" + f2.textBox3.Text + "", " + "Year = " + f2.textBox4.Text + "WHERE Num_book = "" + num_book + """ ; SqlConnection sql_conn = new SqlConnection (conn_string); SqlCommand sql_comm = new SqlCommand (cmd_text, sql_conn); sql_conn.Open(); sql_comm.ExecuteNonQuery(); sql_conn.Close(); this .view_StudentTableAdapter.Fill(this .educationDataSet.View_Student); } }

В этом обработчике выполняется SQL -команда UPDATE , которая изменяет текущее значение активной записи.

10. Программирование события клика на кнопке «Delete «.

Обработчик события клика на кнопке «Delete » имеет вид:

private void button3_Click(object sender, EventArgs e) { string cmd_text = "DELETE FROM Student" ; int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert.ToString(dataGridView1.Value); cmd_text = "DELETE FROM Student WHERE . = "" + num_book + """ ; SqlConnection sql_conn = new SqlConnection (conn_string); SqlCommand sql_comm = new SqlCommand (cmd_text, sql_conn); sql_conn.Open(); sql_comm.ExecuteNonQuery(); sql_conn.Close(); this .view_StudentTableAdapter.Fill(this .educationDataSet.View_Student); }

В этом обработчике выполняется SQL -команда удаления записи DELETE .

Связанные темы

  • Вывод таблицы базы данных Microsoft Access

SQL - Структурированный Язык Запросов.
В данном обзоре мы рассмотрим наиболее часто встречающиеся виды SQL-запросов.
Стандарт SQL определяется ANSI (Американским Национальным Институтом Стандартов ).
SQL — это язык, ориентированный специально на реляционные базы данных.

Разделение SQL:


DDL
(Язык Определения Данных ) — так называемый Язык Описания Схемы в ANSI, состоит из команд, которые создают объекты (таблицы, индексы, просмотры, и так далее) в базе данных.
DML (Язык Манипулирования Данными ) — это набор команд, которые определяют, какие значения представлены в таблицах в любой момент времени.
DCD (Язык Управления Данными ) состоит из средств, которые определяют, разрешить ли пользователю выполнять определенные действия или нет. Они являются составными частями DDL в ANSI. Не забывайте эти имена. Это не различные языки, а разделы команд SQL сгруппированных по их функциям.

Типы данных:

SQL Server - Типы данных

Описание

bigint (int 8 )

bigint (int 8 )

binary (n)

binary (n) или image

character
(синоним char )

national character или ntext

character varying (синоним char varying varchar )

national character varying или ntext

Datetime

datetime

decimal

он же numeric

double precision

double precision

integer (int 4 ) (синоним:int )

integer (int 4 )

national character (синоним: national character , nchar )

national character

Numeric (сининимы: decimal , dec )

national character varying (синонимы: national char varying , nvarchar )

National character varying

Smalldatetime

datetime

smallint (int 2 )

smallint (int 2 )

Smallmoney

sql_variant

Больше не поддреживается

Ntext
Начиная с SQL Server 2005 не рекомендуется для использования.

Timestamp

Не поддреживается

tinyint (int 1 )

tinyint (int 1 )

Uniqueidentifier

uniqueidentifier

varbinary (n)

varbinary (n) или image

smalldatetime

datetime

smallint (int 2 )

smallint (int 2 )

smallmoney

sql_variant

Не поддерживается

timestamp

Не поддерживается

tinyint (int 1 )

tinyint (int 1 )

uniqueidentifier

uniqueidentifier

varbinary (n)

varbinary (n) или image

Таблица типов данных в SQL Server 2000

ЧТО ТАКОЕ ЗАПРОС?

Запрос — команда, которую вы даете вашей программе базы данных. Запросы это часть языка DML. Все запросы в SQL состоят из одиночной команды. Структура этой команды обманчиво проста, потому что вы должны расширять ее так, чтобы выполнить высоко сложные оценки и обработки данных.

Команда SELECT:

SELECT “Выбор” - самая часто используемая команда, с помощью её идет выборка данных из таблицы.
Вид запроса с применением SELECT:

SELECT id, user_name, city, birth_day FROM users_base;

Такой запрос выведет из таблицы users_base все значения столбцов указанных через запятую после команды SELECT. Также, можно выводить все столбцы одним символом, * т.е. SELECT * FROM users_base ; - такой запрос выведет все данные из таблицы.

Структура команды SELECT:

SELECT {Имена столбцов через запятую которые необходимо вывести в запросе} FROM {имя таблицы в базе данных}
- это простейший вид запроса. Существуют дополнительные команды для удобства извлечения данных (см. далее “Функции”)

DML команды:

Значения могут быть помещены и удалены из полей, тремя командами языка DML (Язык Манипулирования Данными):
INSERT (Вставка)
UPDATE (Обновление, модификация),
DELETE (Удаление)

Команда INSERT:

INSERT INTO users_base (user_name, city, birth_day) VALUES (‘Александр’, ‘Ростов’, ’20.06.1991’);

Команда INSERT идет вместе с приставкой INTO (in to - в), далее в скобках идут имена столбцов, в которые мы должны вставить данные, далее идет команда VALUES (значения) и в скобках по очереди идут значения (обязательно нужно соблюдать очередность значений со столбцами, значения должны идти в той же очередности, как и столбцы указанные вами).

Команда UPDATE:

UPDATE users_base SET user_name = ‘Алексей’;

Команда UPDATE обновляет значения в таблице. Сначала идет сама команда UPDATE затем имя таблицы, после команда SET (установит) далее имя столбца и его значение в кавычках (кавычки ставятся в том случае если значение имеет string формат, если это числовое значение и столбец не привязан к типу данных vchar и любых других строковых типов, то кавычки не имеют смысла.)

Команда DELETE:

DELETE FROM users_base WHERE user_name = ‘Василий’;

Команда DELETE удаляет строку целиком, определяет строку по критерию WHERE (Где). В данном случае этот запрос удалил бы все строки, в которых значение столбца user_name было бы Василий. О критерии WHERE и других мы поговорим немного позже.

Критерии, функции, условия и т.п. что помогает нам в SQL:

WHERE- предложение команды SELECT и других DML команд, которое позволяет вам устанавливать предикаты, условие которых может быть или верным или неверным для любой строки таблицы. Команда извлекает только те строки из таблицы, для которых такое утверждение верно.
Пример:
SELECT id, city, birth_day FROM users_base WHERE user_name = ‘Алексей’; - такой запрос выведет только те строки, которые будут соответствовать условию WHERE, а именно все строки в которых столбец user_name имеет значение Алексей.

ORDER BY - условие для сортировки выбранных строк. Имеет 2 критерия ASC и DESC. ASC (сортировка от А до Я или от 0 до 9)

DESC (противоположно от ASC).
Пример:
SELECT id, city, birth_day FROM users_base ORDER BY user_name ASC; - такой запрос выведет значения отсортированные по столбцу user_name от А до Я (A-Z; 0-9)

Также это условие можно использовать совместно с условием WHERE.
Пример:
SELECT id, city, birth_day FROM users_base WHERE user_name = ‘Алексей’ ORDER BY id ASC;

DISTINCT (Отличный) — аргумент, который обеспечивает вас способом устранять двойные значения из вашего предложения SELECT. Т.е. если у вас имеются повторные значения в столбце, допустим, user_name то DISTINCT выведет вам только одно, например у вас в базе есть 2 человека по имени Алексей то запрос с использованием функции DISTINCT выведет вам только 1 значение, которое встретит первым...
Пример:
SELECT DISTINCT user_name FROM users_base; - такой запрос выведет нам значения всех записей в столбце user_name но они не будут повторяться, т.е. если вы имели бесконечное число повторяющихся значений, то они показаны не будут…

AND - берет два Буля (в форме A AND B) как аргументы и оценивает их по отношению к истине, верны ли они оба.
Пример:
SELECT * FROM users_base WHERE city = ‘Ростов’ AND user_name = ‘Александр’; - выведет все значения из таблицы где в одной строке встречается название города (в данном случае Ростов и имя пользователя Александр.

OR - берет два Буля (в форме A OR B) как аргументы и оценивает на правильность, верен ли один из них.

SELECT * FROM users_base WHERE city = ‘Ростов’ OR user_name = ‘Александр’; - выведет все значения из таблицы где в строке встречается название города Ростов или Имя пользователя Александр.

NOT - берет одиночный Булев (в форме NOT A) как аргументы и заменяет его значение с неверного на верное или верное на неверное.
SELECT * FROM users_base WHERE city = ‘Ростов’ OR NOT user_name = ‘Александр’; - выведет все значения из таблицы где в одной строке встретится имя города Ростов или имя пользователя не будет ровно Александр.

IN - определяет набор значений в которое данное значение может или не может быть включено.
SELECT * FROM users_base WHERE city IN (‘Владивосток’, ‘Ростов’); - такой запрос выведет все значения из таблицы в которых встретятся наименования указанных городов в столбце city

Between - похож на оператор IN. В отличии от определения по номерам из набора, как это делает IN, BETWEEN определяет диапазон, значения которого должны уменьшаться что делает предикат верным.
SELECT * FROM users_base WHERE id BETWEEN 1 AND 10; - выводит все значения из таблицы которые будут находиться в диапазоне от 1 до 10 в столбце id

COUNT - производит номера строк или не NULL значения полей, которые выбрал запрос.
SELECT COUNT (*) FROM users_base ; - выведет количество строк в данной таблице.
SELECT COUNT (DISTINCT user_name) FROM users_base ; - выведет кол-во строк с именами пользователей (не повторяющихся)

SUM - производит арифметическую сумму всех выбранных значений данного поля.
SELECT SUM (id) FROM users_base ; - выведет сумму значений всех строк столбца id.

AVG - производит усреднение всех выбранных значений данного поля.
SELECT AVG (id) FROM users_base ; - выведет среднее значение всех выбранных значений столбца id

MAX - производит наибольшее из всех выбранных значений данного поля.

MIN - производит наименьшее из всех выбранных значений данного поля.

Создание таблиц:

CREATE TABLE users_base (id integer, user_name text, city text, birth_day datetime); - выполнение такой команды приведёт к созданию таблицы, по которой я приводил примеры… Тут всё просто, пишем команду CREATE TABLE далее имя таблицы, которую хотим создать, далее в скобках через запятую имена столбцов и их тип данных. Это стандартный вид создания таблицы в SQL. Сейчас я приведу пример создания таблиц в SQL Server 2005:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N".") AND type in (N"U"))
BEGIN
CREATE TABLE .(

NOT NULL,
NOT NULL,
NOT NULL,
PRIMARY KEY CLUSTERED
ASC


END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N".") AND type in (N"U"))
BEGIN
CREATE TABLE .(
IDENTITY(1,1) NOT NULL,
NULL,
NULL,
PRIMARY KEY CLUSTERED
ASC
)WITH (IGNORE_DUP_KEY = OFF) ON
) ON TEXTIMAGE_ON
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N".") AND type in (N"U"))
BEGIN
CREATE TABLE .(
IDENTITY(1,1) NOT NULL,
NULL,
NULL,
PRIMARY KEY CLUSTERED
ASC
)WITH (IGNORE_DUP_KEY = OFF) ON
) ON
END

Синтаксис в SQL Server 2005 это уже другая тема, я просто хотел показать что я описал основы SQL программирования, до вершин вы сможете дойти сами зная основы.

При вознекновении вопросов по этой теме, пишите мне на мыло