Интернет. Настройки. Тарифы. Телефон. Услуги

Microsoft sql server запросы. Как составлять SQL-запросы - подробные примеры

Среда 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

Запросы в Access являются основным инструментом выборки, обновления и обработки данных в таблицах базы данных. Access в соответствии с концепцией реляционных баз данных для выполнения запросов использует язык структурированных запросов SQL (Structured Query Language). С помощью инструкций языка SQL реализуется любой запрос в Access.

Основным видом запроса является запрос на выборку. Результатом выполнения этого запроса является новая таблица, которая существует до закрытия запроса. Записи формируются путем объединения записей таблиц, на которых построен запрос. Способ объединения записей таблиц указывается при определении их связи в схеме данных или при создании запроса. Условия отбора, сформулированные в запросе, позволяют фильтровать записи, составляющие результат объединения таблиц.

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

  • запрос на выборку - выбирает данные из одной таблицы или запроса или нескольких взаимосвязанных таблиц и других запросов. Результатом является таблица, которая существует до закрытия запроса. Формирование записей таблицы результата производится в соответствии с заданными условиями отбора и при использовании нескольких таблиц путем объединения их записей;
  • запрос на создание таблицы - выбирает данные из взаимосвязанных таблиц и других запросов, но, в отличие от запроса на выборку, результат сохраняет в новой постоянной таблице;
  • запросы на обновление, добавление, удаление - являются запросами действия, в результате выполнения которых изменяются данные в таблицах.

Запросы в Access в режиме конструктора содержат схему данных, отображающую используемые таблицы, и бланк запроса, в котором конструируется структура таблицы запроса и условия выборки записей (рис. 4.1).

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

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

Запросы в 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 программирования, до вершин вы сможете дойти сами зная основы.

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

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

Но, несмотря на постоянное использование баз данных, даже для многих разработчиков программных систем остается много «белых пятен» из-за разного толкования одних и тех же терминов. Мы дадим краткое определение основных терминов баз данных перед рассмотрением языка SQL. Итак.

База данных - файл или набор файлов для хранения упорядоченных структур данных и их взаимосвязей. Очень часто базой данных называют систему управления - это только хранилище информации в определенном формате и может работать с различными СУБД.

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

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

Столбец и строка - все мы работали с электронными таблицами, в которых также присутствуют строки и столбцы. Любая реляционная база данных работает с таблицами аналогичным образом. Строки иногда называют записями.

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

Что такое SQL?

SQL (англ. - язык структурированных запросов) был разработан только для работы с базами данных и в настоящий момент является стандартом для всех популярных СУБД. Синтаксис языка состоит из небольшого количества операторов и прост в изучении. Но, несмотря на внешнюю простоту, он позволяет создание sql запросов для сложных операций с БД любого размера.

С 1992 г. существует общепринятый стандарт, называемый ANSI SQL. Он определяет базовый синтаксис и функции операторов и поддерживается всеми лидерами рынка СУБД, такими как ORACLE Рассмотреть все возможности языка в одной небольшой статье невозможно, поэтому мы кратко рассмотрим только основные SQL запросы. Примеры наглядно показывают простоту и возможности языка:

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

Типы данных SQL

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

Создаем таблицы и базы данных

Создавать новые базы, таблицы и другие запросы в SQL можно двумя способами:

  • через консоль СУБД
  • Используя интерактивные средства администрирования, входящие в состав сервера баз данных.

Создается новая база данных оператором CREATE DATABASE <наименование базы данных>; . Как видим, синтаксис прост и лаконичен.

Таблицы внутри базы данных создаем оператором CREATE TABLE со следующими параметрами:

  • наименование таблицы
  • имена и типы данных столбцов

В качестве примера создадим таблицу Commodity со следующими столбцами:

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

CREATE TABLE Commodity

(commodity_id CHAR(15) NOT NULL,

vendor_id CHAR(15) NOT NULL,

commodity_name CHAR(254) NULL,

commodity_price DECIMAL(8,2) NULL,

commodity_desc VARCHAR(1000) NULL);

Таблица состоит из пяти столбцов. После наименования идет тип данных, столбцы разделяются запятыми. Значение столбца может принимать пустые значения (NULL) или должно быть обязательно заполнено (NOT NULL), и это определяется при создании таблицы.

Выборка данных из таблицы

Оператор выборки данных - самые часто используемые SQL запросы. Для получения информации необходимо указать, что мы хотим выбрать из такой таблицы. Вначале простой пример:

SELECT commodity_name FROM Commodity

После оператора SELECT указываем имя столбца для получения информации, а FROM определяет таблицу.

Результатом выполнения запроса будут все строки таблицы со значениями Commodity_name в том порядке, в котором они были внесены в базу данных т.е. без всякой сортировки. Для упорядочивания результата используется дополнительный оператор ORDER BY.

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

SELECT commodity_id, commodity_name, commodity_price FROM Commodity

Есть возможность получить как результат запроса значение всех столбцов строки. Для этого используется знак «*»:

SELECT * FROM Commodity

  • Дополнительно SELECT поддерживает:
  • Сортировку данных (оператор ORDER BY)
  • Выбор согласно условиям (WHERE)
  • Группировку срок (GROUP BY)

Добавляем строку

Для добавления строки в таблицу используются SQL запросы с оператором INSERT. Добавление может производиться тремя способами:

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

Для добавления полной строки необходимо указать имя таблицы и значения столбцов (полей) новой строки. Приведем пример:

INSERT INTO Commodity VALUES("106 ", "50", "Coca-Cola", "1.68", "No Alcogol ,)

Пример добавляет в таблицу новый товар. Значения указываются после VALUES для каждого столбца. Если нет соответствующего значения для столбца, то необходимо указывать NULL. Столбцы заполняются значениями в порядке, указанном при создании таблицы.

В случае добавления только части строки необходимо явно указать наименования столбцов, как в примере:

INSERT INTO Commodity (commodity_id, vendor_id, commodity_name)

VALUES("106 ", ‘50", "Coca-Cola",)

Мы ввели только идентификаторы товара, поставщика и его наименование, а остальные поля отставили пустыми.

Добавление результатов запроса

В основном INSERT используется для добавления строк, но может использоваться и для добавления результатов оператора SELECT.

Изменение данных

Для изменения информации в полях таблицы базы данных необходимо использовать оператор UPDATE. Оператор может применяться двумя способами:

  • Обновляются все строки в таблице.
  • Только для определенной строки.

UPDATE состоит из трех основных элементов:

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

Рассмотрим пример. Допустим, у товара с ID=106 изменилась стоимость, поэтому эту строку необходимо обновить. Пишем следующий оператор:

UPDATE Commodity SET commodity_price = "3.2" WHERE commodity_id = "106"

Мы указали имя таблицы, в нашем случае Commodity, где будет производиться обновление, затем после SET - новое значение столбца и нашли нужную запись, указав в WHERE нужное значение ID.

Для изменения нескольких столбцов после оператора SET указываются несколько пар столбец-значение, разделенных запятыми. Смотрим пример, в котором обновляется наименование и цена товара:

UPDATE Commodity SET commodity_name=’Fanta’, commodity_price = "3.2" WHERE commodity_id = "106"

Для удаления информации в столбце можно присвоить ему значение NULL, если это позволяет структура таблицы. Необходимо помнить, что NULL - это именно «никакое» значение, а не нуль в виде текста или числа. Удалим описание товара:

UPDATE Commodity SET commodity_desc = NULL WHERE commodity_id = "106"

Удаление строк

SQL запросы на удаление строк в таблице выполняются оператором DELETE. Есть два варианта использования:

  • в таблице удаляются определенные строки;
  • удаляются все строки в таблице.

Пример удаления одной строки из таблицы:

DELETE FROM Commodity WHERE commodity_id = "106"

После DELETE FROM указываем имя таблицы, в которой будут удаляться строки. Оператор WHERE содержит условие, по которому будут выбираться строки для удаления. В примере мы удаляем строку товара с ID=106. Указывать WHERE очень важно т.к. пропуск этого оператора приведт к удалению всех строк в таблице. Это относится и к изменению значения полей.

В операторе DELETE не указываются наименования столбцов и метасимволы. Он полностью удаляет строки, а удалить отдельный столбец он не может.

Использование SQL в Microsoft Access

Обычно используется в интерактивном режиме для создания таблиц, баз данных, для управления, изменения, анализа данных в базе данных и с целью внедрить запросы SQL Access через удобный интерактивный конструктор запросов (Query Designer), используя который можно построить и немедленно выполнить операторов SQL любой сложности.

Также поддерживается режим доступа к серверу, при котором СУБД Access может использоваться как генератор SQL-запросов к любому ODBC источнику данных. Эта возможность позволяет приложениям Access взаимодействовать с любого формата.

Расширения SQL

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

Наиболее распространенные диалекты языка:

  • Oracle Database - PL/SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL - PL/pgSQL.

SQL в Интернет

СУБД MySQL распространяется под свободной лицензией GNU General Public License. Имеется коммерческая лицензия с возможностью разработки заказных модулей. Как составная часть входит в наиболее популярные сборки Интернет-серверов, таких как XAMPP, WAMP и LAMP, и является самой популярной СУБД для разработки приложений в сети Интернет.

Была разработана компанией Sun Microsystems и в настоящий момент поддерживается корпорацией Oracle. Поддерживаются базы данных размером до 64 терабайт, стандарт синтаксиса SQL:2003, репликация баз данных и облачных сервисов.