Украина, Киев |
Элементы работы с базами данных
Перенос файла Microsoft SQL на другой компьютер
В большинстве случаев вам придется разрабатывать приложения, использующие в качестве базы данных Microsoft SQL Server. Наиболее рациональным решением является разработка базы данных в формате Microsoft SQL на рабочем компьютере с установленной локальной версией Microsoft SQL Server. При сдаче проекта заказчику возникает необходимость переноса базы данных с локального компьютера. Как мы уже отмечали, файлы баз данных по умолчанию размещаются в каталоге C:\Program Files\Microsoft SQL Server\MSSQL\Data. Для переноса на другой компьютер нам потребуется скопировать два файла - саму базу данных BDTur_firmSQL.mdf и файл отчетов о транзакциях5Транзакция - серия запросов к базе, манипулирующая данными. Транзакцию, в отличие от обычного запроса, можно принять (и тогда вся серия запросов вступит в силу) или отклонить. Далее мы рассмотрим подробно это понятие. BDTur_firmSQL.ldf. Однако при попытке их простого копирования появляется ошибка при копировании - подобно системным файлам, они недоступны из операционной системы. Можно, конечно, скопировать нужные файлы из-под DOS, но к счастью, программа SQL Server Enterprise Manager предоставляет удобный интерфейс для этой задачи. Выделяем BDTur_firmSQL в окне программы и в контекстном меню выбираем "Все задачи \ Detach Database (Отсоединить базу)" (рис. 1.30).
Появляется диалоговое окно "Detach Database BDTur_firmSQL" в котором выводится количество текущих соединений к данной базе. Подтверждаем отсоединение, нажимая кнопку "ОК", - и база отсоединена. Теперь можно скопировать нужные файлы непосредственно.
После переноса файлов на другой компьютер желательно их расположить в папке по умолчанию. Для присоединения базы запускаем SQL Server Enterprise Manager на компьютере клиента, выделяем папку "Databases" и в контекстном меню выбираем "Все задачи \ Attach Database (Присоединить базу данных)" (рис. 1.31).
В появившемся окне указываем расположение файла базы данных BDTur_firmSQL.mdf - файл отчетов присоединится автоматически, если он находится в той же самой директории, - и нажимаем "ОК". Присоединившаяся база данных немедленно отображается в папке "Databases".
В программном обеспечении к курсу вы найдете файлы, готовые для присоединения (Code\Glava1\ BDTur_firmSQL.mdf и BDTur_firmSQL.ldf).
Элементы языка SQL
Термин SQL6Здесь мы познакомимся только лишь с некоторыми понятиями языка SQL. Для полного изучения этого языка обращайтесь к специализированным руководствам. символизирует собой Структурированный Язык Запросов. Это язык, который дает нам возможность работать с данными в реляционных базах данных.
Мир баз данных становится все более и более единым, что привело к необходимости создания стандартного языка, который мог бы использоваться для функционирования в большом количестве различных видов компьютерных сред. Стандартный язык позволит пользователям, знающим один набор команд, применять их, чтобы создавать, отыскивать, изменять и передавать информацию независимо от того, работают ли они на персональном компьютере, сетевой рабочей станции или на сервере.
Элегантность и независимость от специфики компьютерных технологий, а также его поддержка лидерами промышленности в области технологии реляционных баз данных, сделали SQL, и, вероятно, в течение обозримого будущего оставят его, основным стандартным языком. По этой причине любой, кто хочет работать с современными базами данных, должен знать SQL.
Стандарт SQL определяется ANSI (Американским Национальным Институтом Стандартов), а также ISO (Международной организацией по стандартизации). Однако большинство коммерческих программ баз данных расширяют SQL без уведомления ANSI, добавляя разные особенности в этот язык, которые, как они считают, будут полезны. Иногда они несколько нарушают стандарт языка, хотя хорошие идеи имеют тенденцию развиваться и вскоре становиться стандартами сами по себе в силу полезности своих качеств.
Для обращения к базе данных используются запросы, написанные на языке SQL. Запрос - команда, которую вы даете вашей программе базы данных, и которая сообщает ей, что нужно вывести определенную информацию из таблиц в память. Эта информация обычно посылается непосредственно на экран компьютера или терминала, которым вы пользуетесь, хотя в большинстве случаев ее можно также послать принтеру, сохранить в файле (как объект в памяти компьютера) или представить как вводную информацию для другой команды или процесса.
Несмотря на большое количество разновидностей этого языка, существующих в настоящее время, логика его работы проста. Достаточно освоить основные команды хотя бы в одной из его версий, чтобы впоследствии без труда разобраться в любой другой его реализации.
Microsoft Query Analyzer, входящий в комплект Microsoft SQL Server 2000, - отличный инструмент для изучения языка SQL. Если у вас установлен этот пакет, то можно приступать к работе. Запускаем Query Analyzer и в появившемся окне указываем следующие параметры (рис. 1.32).
Мы задействуем подключение к серверу, находящемуся на нашем компьютере, - поэтому указываем имя сервера (local) (можно также использовать знак точки - ( . )). В других случаях - для подключения по локальной сети, например, - используйте кнопку обзора для поиска нужного сервера. Установка галочки "Запускать SQL сервер в случае его остановки (Start SQL Server if it is stopped)" позволяет поддерживать бесперебойную связь с сервером. Параметр "Connect using" задает аутентификацию при подключении к серверу - при выбранном значении "Windows authentification", нет надобности вводить имя пользователя и пароль.
Если вы все сделали правильно, то появляется главное окно программы, содержащее чистый бланк для записи SQL-запросов. Добавим окно, в котором мы будем просматривать содержимое базы данных: пункт меню Tools / Object Browser / (Show/hide) или клавиша F8. Нам также потребуется окно для отображения результатов запросов - Window / /Show Results Pane (Ctrl+R). В результате получим следующее (рис. 1.33).
Первое, что мы видим в окне Object Browser, - имя компьютера и связанного с ним сервера. На рисунке это 7EA2B2F6068D473. Это имя формируется, когда мы устанавливаем операционную систему Windows. Далее располагается древовидная структура - содержимое пакета SQL Server 2000, состоящего из баз данных master, model, msdb, NorthwindCS и tempdb. В отличие от других баз данных, обеспечивающих работу самой программы, NorthwindCS является специальной учебной базой. С ней мы и будем работать. На панели инструментов из выпадающего списка выбираем базу, для подключения -. Можно этого не делать, но тогда в окне бланка необходимо будет каждый раз указывать строку - use NorthwindCS; Будем полагать в дальнейшем, что на панели инструментов определена база данных NorthwindCS;.
Итак, напишем первый запрос7Вы можете также писать запросы, используя заглавные буквы, - SQL нечувствителен к регистру. и нажмем клавишу F5 (пункт меню Query - Execute):
select * from Customers;
В результате возвращаются все записи из таблицы Customers базы данных NorthwindCS. Для просмотра содержимого базы данных используем Object Browser, щелкая на знак (+) возле соответствующего объекта. Переключившись на вкладку, видим сообщение, означающее, что была извлечена 91 запись:
(91 row(s) affected)
Главное окно программы принимает вид (рис. 1.34)
Вы можете менять вид данных, отображаемых на панели результатов: пункт меню Query / Results in Text (Ctrl+T) - результат в виде текста, Results in Grid (Ctrl+D) - в виде таблицы (по умолчанию), Results to File (Ctrl+Shift+F) - сохранение результата в виде файла в собственном формате программы - *.rpt.
Таблица Customers состоит из следующих полей (рис. 1.35):
Для извлечения не всей таблицы, а столбцов СustomerID и Address, напишем запрос:
select CustomerID, Address from Customers;
Результатом будет (рис. 1.36)
Если мы сделаем ошибку и укажем поле, которого нет в таблице Customers, например AddressID, в окне результатов на вкладке Messages появится соответствующее предупреждение:
Server: Msg 207, Level 16, State 1, Line 3 Invalid column name 'AddressID'.
Для вывода определенного количества записей используем запрос (рис. 1.37)
select top 5 CustomerID from Customers;
Извлекаются первые пять записей поля CustomerID, расположенные в самой таблице Customers в алфавитном порядке, - этот запрос не производит сортировки!
Вводя оператор percent, получаем указанный процент записей от общего числа:
select top 5 percent CustomerID from Customers;
В данном случае результат будет в точности таким же, как и при использовании запроса без оператора percent. В чем же дело? Общее число записей поля CustomerID таблицы Customers - 91 (в этом нетрудно убедиться, введя запрос select * from Customers; и переключившись на вкладку, увидим сообщение: (91 row(s) affected) ). Простой подсчет показывает, что пять процентов от 91 равняется 4,55; Query Analyzer округляет это число до пяти и возвращает результат.
Для вывода записей, отвечающих заданному условию, используем оператор where:
select * from Products where UnitPrice > 100;
Этот запрос возвращает все записи из таблицы Products в которых Столбец (поле) UnitPrice имеет значение, большее 100 (рис. 1.38):
Можно группировать операторы так:
select ProductName,UnitPrice from Products where UnitPrice > 100;
Здесь извлекаются поля ProductName и UnitPrice из таблицы Products где поле UnitPrice > 100 (рис. 1.39):
Оператор where поддерживает работу со знаками <, >, >=, <=.
Точную выборку осуществляет оператор in, в следующем примере извлекаются лишь те записи, в которых значение поля UnitPrice в точности равно либо 10, либо 15, либо 23 (рис. 1.40):
select ProductName,UnitPrice from Products where UnitPrice in (10,15,23);
Выборка для значений, лежащих в указанном интервале, осуществляется оператором between первое _значение and второе_значение (рис. 1.41):
select ProductName,UnitPrice from Products where UnitPrice between 10 and 13;