Программирование в Microsoft SQL Server 2000

         

Изменение отношений


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

Измените отношение

Откройте конструктор таблиц Table Designer для таблицы Oils, щелкнув правой кнопкой на имени таблицы в рабочей панели Details Pane и выбрав Design Table (Конструирование таблицы). SQL Server откроет конструктор таблиц Table Designer.


Щелкните на кнопке Relationships (Отношения)

в панели инструментов конструктора таблиц. SQL Server откроет диалоговое окно Properties (Свойства) конструктора таблиц с отображением страницы свойств Relationships (Отношения).


Проверьте, что в поле списка Selected Relationship (Выбор отношения) выбрано FK_Oils_PlantTypes. SQL Server отобразит свойства отношения.Выберите PlantPartID в качестве поля внешнего ключа.


Нажмите Close (Закрыть). SQL Server закроет диалоговое окно Properties (Свойства).Щелкните на кнопке Save (Сохранить) в панели инструментов конструктора таблиц. SQL Server отобразит диалоговое окно, предлагающее подтвердить, что внесенные вами в две таблицы изменения следует сохранить в вашей базе данных.


Нажмите Yes (Да). SQL Server изменит отношение.Закройте окно конструктора таблиц Table Designer.



Обслуживание отношений


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

Переименуйте отношение

Откройте конструктор таблиц Table Designer для таблицы Oils, щелкнув правой кнопкой на имени таблицы в рабочей панели Details Pane и выбрав Design Table (Конструирование таблицы). SQL Server откроет конструктор таблиц Table Designer.


Щелкните на кнопке Relationships (Отношения).

SQL Server откроет диалоговое окно Properties (Свойства) конструктора таблиц с отображением страницы свойств Relationships (Отношения).


Выберите FK_Oils_PlantTypes в списке Selected Relationship (Выбор отношения). SQL Server отобразит свойства отношения.


Выделите текст в поле Relationship Name (Имя отношения) и введите DeleteMe.


Нажмите Close (Закрыть). SQL Server закроет диалоговое окно Properties (Свойства)Нажмите кнопку Save (Сохранить). SQL Server отобразит диалоговое окно, предлагающее подтвердить, что внесенные вами в две таблицы изменения следует сохранить в вашей базе данных.


Нажмите Yes (Да). SQL Server изменит имя отношения.Закройте окно конструктора таблиц Table Designer.



Понятие об отношениях


Большинство баз данных предназначены для моделирования некой части реального мира, которую называют пространством состояний (problem space). На логическом уровне объекты в пространстве состояний являются сущностями (entities) и связаны между собой через отношения (relationships). На физическом уровне Microsoft SQL Server представляет сущности в виде таблиц, а отношения – в виде ограничений внешнего ключа, которые определяют внешние ключи.

Реляционная модель

Многие думают, что реляционные базы данных называются "реляционными" ("relational"), поскольку между таблицами устанавливаются отношения (relationships). На самом деле это название произошло от английского термина "relation", означающего "отношение", который был введен доктором Э.Ф.Коддом для описания объекта, который в SQL Server реализован в виде таблицы.

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

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

С другой стороны, отношения один-ко-многим достаточно широко распространены. В нашем примере базы данных отношение один-ко-многим существует между таблицей PlantParts и таблицей Oils – любая строка в таблице PlantParts может быть связана с нулем, одной или нескольким строками таблицы Oils.

Отношения много-ко-многим также встречаются довольно часто. В нашем примере отношение много-ко-многим существует между таблицей Properties и таблицей Oils – любой вид масла может иметь несколько свойств, а любое свойство может относиться к нескольким видам масла.

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






Создание отношений


В SQL Server отношения создаются с помощью вкладки Relationships (Отношения) диалогового окна Properties (Свойства) конструктора таблиц Table Designer. Отношения один-к-одному и один-ко-многим создаются аналогичным образом. SQL Server определяет тип отношения на основе столбцов, содержащихся в зависимой таблице; если для столбцов внешнего ключа имеется уникальный индекс, отношение будет иметь тип один-к-одному; в противном случае оно будет иметь тип один-ко-многим.

Создайте отношение

Откройте конструктор таблиц Table Designer для таблицы Oils, щелкнув правой кнопкой на имени таблицы в рабочей панели Details Pane и выбрав Design Table (Конструирование таблицы). SQL Server откроет конструктор таблиц Table Designer.


Щелкните на кнопке Relationships (Отношения)

в панели инструментов Table Designer. SQL Server откроет диалоговое окно Properties (Свойства) конструктора таблиц с отображением страницы свойств Relationships (Отношения).


Нажмите New (Создать). SQL Server предложит первую таблицу в списке таблиц для установления нового отношения.


Выберите PlantTypes в качестве главной таблицы. SQL Server предложит FK_Oils_PlantTypes в качестве имени для отношения.


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


Выберите PlantTypeID в качестве поля внешнего ключа.


Совет. Если вы хотите использовать для отношения каскадные изменения или удаления, установите соответствующие флажки на странице свойств.

Нажмите Close (Закрыть). SQL Server закроет диалоговое окно Properties (Свойства).Щелкните на кнопке Save (Сохранить)

в панели инструментов конструктора таблиц. SQL Server отобразит диалоговое окно, предлагающее подтвердить, что изменения, внесенные вами в две таблицы, следует сохранить в вашей базе данных.


Нажмите Yes (Да). SQL Server создаст отношение.Закройте окно конструктора таблиц Table Designer.



Управление отношениями


Отношения между таблицами, как правило, являются достаточно устойчивыми, однако, как и другие составляющие схемы базы данных, они могут время от времени подвергаться изменениям. Такие изменения легко осуществимы через Enterprise Manager.



Возвратные отношения


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

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


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

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

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

Новинкой в Microsoft SQL Server 2000 является возможность каскадных изменений в главной таблице. Если вы укажете SQL Server осуществлять каскадные удаления для отношения, удаление строки в главной таблице заставит SQL Server удалить все связанные строки в зависимой таблице. Аналогично, если вы укажете SQL Server каскадировать обновления, изменение первичного ключа главной таблицы будет приводить к обновлению связанных столбцов в зависимой таблице.

Внимание! Некоторые схемы баз данных могут быть достаточно сложными. Использование каскадных удалений и изменений может облегчить сопровождение сложных структур данных, но SQL Server требует, чтобы каскадирование не было круговым. Например, удаление строки в таблице А может привести к удалению строки в таблице В, что, в свою очередь, вызовет удаление строки в таблице С. Однако не допускается устанавливать такой режим каскадирования, при котором удаление строки в таблице С приведет к удалению строки в таблице А.



Изменение проверочных ограничений


Конструктор таблиц Table Designer предоставляет механизм для корректировки текста проверочного ограничения через то же диалоговое окно Properties (Свойства), которое вы использовали при его создании.

Измените текст ограничения

Если вы закрыли конструктор таблиц Table Designer после выполнения предыдущего упражнения, откройте его, щелкнув правой кнопкой мыши на имени таблицы в рабочей панели Details Pane и выбрав Design Table (Конструирование таблицы). SQL Server откроет конструктор таблиц Table Designer.


Нажмите кнопку Constraints (Ограничения).

SQL Server откроет диалоговое окно Properties (Свойства) конструктора таблиц с отображением страницы свойств Check Constraints (Проверочные ограничения).


Убедитесь, что ограничение CK_Oils отображено в поле списка Selected Constraint (Выбранное ограничение). Измените текст ограничения на LEN(OilName) > 2, чтобы задать новое условие ограничения.


Нажмите Close (Закрыть). SQL Server закроет диалоговое окно Properties (Свойства) конструктора таблиц.Нажмите Save (Сохранить). SQL Server проверит все строки в таблице на соответствие новому проверочному ограничению, а затем сохранит ограничение.



Обслуживание проверочных ограничений


Как и другие свойства таблицы, проверочные ограничения обслуживаются через диалоговое окно Properties (Свойства) конструктора таблиц.

Переименуйте проверочное ограничение

Откройте конструктор таблиц Table Designer для таблицы Oils, щелкнув правой кнопкой мыши на имени таблицы в рабочей панели Details Pane и выбрав Design Table (Конструирование таблицы). SQL Server откроет конструктор таблиц Table Designer.


Нажмите кнопку Constraints (Ограничения).

SQL Server откроет диалоговое окно Properties (Свойства) конструктора таблиц с отображением страницы свойств Check Constraints (Проверочные ограничения).


Выделите CK_Oils в поле имени ограничения Constraint Name и измените его на CK_DeleteMe.


Нажмите кнопку Close (Закрыть). SQL Server закроет диалоговое окно Properties (Свойства).Нажмите кнопку Save (Сохранить). SQL Server проверит все строки в таблице на соответствие проверочному ограничению и сохранит ограничение.



Понятие о проверочных ограничениях


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

Проверочные ограничения, с которыми вы познакомитесь, используются для введения двух дополнительных форм целостности базы данных: целостность домена и целостность сущности. В реляционной терминологии домен (domain) представляет собой область значений, которые может содержать столбец. Тип данных столбца является одним из атрибутов домена, но определения типа данных достаточно не всегда. Например, столбец с типом данных smallint может содержать целочисленные значения от -32768 до 32767, что вполне приемлемо для столбца, содержащего год окончания работником компании учебного заведения. Однако реальный диапазон значений для столбца YearDegreeAwarded более строгий – скажем, между 1900 и текущим годом. Вам следует воспользоваться проверочным ограничением, чтобы в качестве значения столбца не был введен 1543 или 2075 год.

Ограничения целостности сущности обеспечивают целостность сущности самой по себе. Наиболее важным в ограничении целостности сущности является то, что каждая сущность должна быть уникально идентифицируемой. Это ограничение реализуется путем задания первичного ключа для таблицы. Целостность сущности может также обеспечиваться условными вычислениями для нескольких столбцов в таблице, и этот тип ограничения чаще всего реализуется с помощью проверочных ограничений. Например, если таблица содержит столбцы страны Country и штата State, вы можете использовать проверочное ограничение для указания, что значение "AZ" в столбце State (что соответствует обозначению штата Аризона) корректно только в том случае, если в столбце Country содержится значение "USA" ("США").

Проверочные ограничения задаются в виде Булевых выражений. Булево выражение принимает значение либо TRUE (Истина), либо FALSE (Ложь). Булевы выражения мы рассмотрим в уроке 13. В этом уроке мы используем выражение:

LEN (<столбец>) >= 4

Здесь LEN представляет собой функцию Transact-SQL, которая возвращает количество символов в строке, поэтому выражение LEN (<столбец>) >= 4 будет принимать значение TRUE, если <столбец> содержит четыре или более символов, и FALSE, если он содержит менее четырех символов.



Создание проверочных ограничений


Подобно индексам и отношениям, вы можете создавать проверочные ограничения с помощью диалогового окна Properties (Свойства) конструктора таблиц Table Designer.

Создайте проверочное ограничение

Откройте конструктор таблиц Table Designer для таблицы Oils, щелкнув правой кнопкой мыши на имени таблицы в рабочей панели Details Pane и выбрав Design Table (Конструирование таблицы). SQL Server откроет конструктор таблиц Table Designer.


Нажмите кнопку Constraints (Ограничения).

Microsoft SQL Server откроет диалоговое окно Properties (Свойства) конструктора таблиц, отобразив страницу свойств Check Constraints (Проверочные ограничения).


Нажмите New (Создать). SQL Server предлагает в качестве имени ограничения CK_Oils. В этом упражнении мы примем это имя.


Введите LEN(OilName) >= 4 в качестве условия ограничения.


Совет. Если вы создаете новое проверочное ограничение и не хотите, чтобы оно применялось для уже существующих данных, вы можете указать SQL Server игнорировать существующие данные, сбросив флажок Check Existing Data On Creation (Проверять при создании существующие данные) для ограничения.

Нажмите Close (Закрыть). SQL Server закроет диалоговое окно Properties (Свойства) конструктора таблиц.Нажмите кнопку Save (Сохранить).

SQL Server проверит, отвечают ли все строки в таблице проверочному ограничению, а затем сохранит ограничение.



Управление проверочными ограничениями


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



Понятие о пользовательских типах данных


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

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

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



Понятие о правилах


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

Примечание. Microsoft не одобряет правила и рекомендует использовать вместо них проверочные ограничения. Однако правила по-прежнему находят применение в базах данных SQL Server, поскольку только правило может быть применено к пользовательскому типу данных.

В отличие от проверочных ограничений, правило не может напрямую ссылаться на имя столбца. Вместо этого значение, к которому применяется правило, передается ему через переменную, имеющую форму записи @ИмяПеременной. Подробнее о переменных вы узнаете в уроке 24.



Понятие об умолчаниях


Функция умолчаний аналогична свойству умолчания, которое вы задаете при создании столбца в конструкторе таблиц Table Designer, – т.е., они представляют собой значения, которые автоматически присваиваются Microsoft SQL Server, если пользователь не задал значение при создании строки. Однако умолчания являются объектами на уровне базы данных, которые могут быть применены к нескольким столбцам.



Снимите действие умолчания


Снимите действие умолчания

Если конструктор таблиц Table Designer не остался открытым после выполнения предыдущего упражнения, откройте его, щелкнув правой кнопкой мыши на имени таблицы в рабочей панели Details Pane и выбрав Design Table (Конструирование таблицы). SQL Server откроет конструктор таблиц.


Выделите столбец Sample. Конструктор таблиц отобразит свойства для этого столбца.


Выделите dbo.DefaultUnknown в поле значения по умолчанию Default Value и нажмите клавишу Delete, чтобы удалить значение.


Нажмите кнопку Save (Сохранить). SQL Server сохранит изменение в определении столбца.



Создание пользовательских типов данных


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

Создайте пользовательский тип данных

Перейдите к папке User Defined Data Types базы данных Aromatherapy. SQL Server отобразит список пользовательских типов данных. (В рассматриваемом нами примере базы данных он будет пуст.)


увеличить изображение

Нажмите New (Создать)

. SQL Server отобразит диалоговое окно User-Defined Data Type Properties (Свойства пользовательских типов данных).


Введите MySample в качестве имени пользовательского типа данных.


Установите в качестве базового тип данных varchar и длину, равную 20.


Выберите dbo.SampleRule в поле списка Rule (Правило).


Примите значения по умолчанию для опций Allow NULLS и Default, затем нажмите ОК. SQL Server создаст пользовательский тип данных.



Создание правил


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

Создайте правило

Перейдите к папке Rules базы данных Aromatherapy в дереве консоли Console Tree. SQL Server отобразит список правил для базы данных. (Для рассматриваемой в примере базы данных список будет пуст.)


увеличить изображение

Нажмите New (Создать).

SQL Server откроет диалоговое окно Rule Properties (Свойства правила).


Введите SampleRule в качестве имени правила.


Введите LEN(@fldValue) > 3 в качестве текста правила.


Совет. Помните, что LEN является функцией Transact-SQL, которая возвращает количество символов в текстовой строке, и что символ @ в начале оператора Transact-SQL указывает на переменную, которая будет передавать значение в операторе. Поэтому в этом случае правило возвратит TRUE только тогда, когда длина столбца больше, чем 3.

Нажмите ОК. SQL Server закроет диалоговое окно Rule Properties (Свойства правила) и создаст правило.



Создание умолчаний


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

Создайте умолчание

Перейдите к папке Default базы данных Aromatherapy в дереве консоли Console Tree. SQL Server отобразит список умолчаний в рабочей панели Details Pane. (В рассматриваемом нами примере базы данных их нет.)


увеличить изображение

Нажмите кнопку New (Создать).

SQL Server отобразит диалоговое окно Default Properties (Свойства умолчаний).


Введите DefaultUnknown в поле имени Name.


Введите 'Неизвестно' в поле значения Value.


Нажмите ОК. SQL Server создаст умолчание.



Свяжите умолчание со столбцом


Свяжите умолчание со столбцом

Перейдите к папке Tables и откройте конструктор таблиц Table Designer для таблицы Oils, щелкнув правой кнопкой мыши на имени таблицы в рабочей панели Details Pane и выбрав Design Table (Конструирование таблицы). SQL Server откроет конструктор таблиц.


Добавьте в таблицу новый столбец с именем Sample. Примите тип данных по умолчанию и длину, предложенную SQL Server.


Щелкните на поле значения по умолчанию Default Value для столбца, а затем выберите из списка dbo.DefaultUnknown.


Нажмите кнопку Save (Сохранить).

SQL Server сохранит таблицу.



Использование диаграмм для обслуживания базы данных


Окно Database Diagram (Диаграмма базы данных) Enterprise Manager SQL Server также дает вам возможность обслуживать схему базы данных в графическом окружении. Вы можете добавлять новые таблицы, изменять существующие и управлять отношениями между таблицами.



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


Одним из наиболее полезных свойств в окне Database Diagram (Диаграмма базы данных) является возможность модифицировать схему базы данных непосредственно в диаграмме. Графическое представление является отличным средством для визуализации таблиц и отношений в вашей базе данных, а возможность непосредственно модифицировать схему позволяет легко вносить изменения.

Добавьте столбец в таблицу в окне диаграммы Database Diagram

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


Щелкните на первой пустой ячейке в поле Column Name и добавьте новый столбец с именем Description. Установите для него тип данных varchar и длину, равную 50.


Совет. Обратите внимание, что имя таблицы для таблицы Oils имеет в конце звездочку (*). SQL Server помечает подобным образом любую таблицу в окне Database Diagram (Диаграмма базы данных), которая была изменена, указывая тем самым, что изменения еще не сохранены.

Поскольку SQL Server не изменяет схему базы данных до тех пор, пока вы не сохраните диаграмму, вы можете воспользоваться окном Database Diagram (Диаграмма базы данных), чтобы опробовать изменения, прежде чем принять их. Если вы передумаете, вам будет достаточно просто закрыть окно без сохранения изменений, и ваша база данных останется такой же, какой и была.

Щелкните на кнопке Arrange Tables (Упорядочить таблицы),

чтобы SQL Server изменил размеры отображаемой таблицы.Нажмите кнопку Save (Сохранить). SQL Server отобразит диалоговое окно, предлагающее вам подтвердить изменения в таблице Oils.


Нажмите Yes (Да). SQL Server обновит таблицу Oils добавлением нового столбца и удалит звездочку из отображения таблицы Oils в диаграмме.



Измените степень детализации диаграммы базы данных


Измените степень детализации диаграммы базы данных

Выделите таблицу Oils в диаграмме базы данных, щелкнув мышью на ее имени в диаграмме.


увеличить изображение

Выберите Standard (Стандартный) из открывающегося списка, который отображается, когда вы нажимаете кнопку Show (Вид)

в панели инструментов окна Database Diagram (Диаграмма базы данных). SQL Server добавит тип данных, длину и возможность использования нулевых значений (NULL) к отображению таблицы Oils.



Понятие о диаграммах баз данных


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



Создание диаграммы базы данных из существующей схемы


Хотя возможно создать всю схему базы данных из окна Database Diagram (Диаграмма базы данных), чаще всего диаграммы создают из существующих таблиц. С помощью мастера создания диаграмм Create Database Diagram Wizard этот процесс можно упростить – достаточно выбрать таблицы, которые вы хотите включить в диаграмму, и мастер Create Database Diagram Wizard сделает все остальное.

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

Создайте диаграмму базы данных

Перейдите к папке Diagrams базы данных Aromatherapy. Microsoft SQL Server отобразит имеющиеся диаграммы в рабочей панели Details Pane.


увеличить изображение

Нажмите New (Создать).

SQL Server отобразит первую страницу мастера создания диаграмм Create Database Diagram Wizard.


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


Щелкните на поле флажка Add Related Tables Automatically (Автоматически добавлять связанные таблицы) и установите уровень отношений, равный 2.


Выделите Oils в списке Available Tables (Доступные таблицы), а затем нажмите Add (Добавить). Мастер создания диаграмм Create Database Diagram Wizard добавит таблицу Oils и все связанные с ней таблицы в список таблиц, которые будут добавлены в диаграмму.


Нажмите Next (Далее). Мастер создания диаграмм Create Database Diagram Wizard отобразит страницу, предлагающую вам подтвердить список таблиц, добавляемый в диаграмму базы данных.


Нажмите Finish (Готово). Мастер создания диаграмм Create Database Diagram Wizard создаст диаграмму.


увеличить изображение

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

Нажмите кнопку Save (Сохранить).

SQL Server отобразит диалоговое окно, запрашивающее имя для диаграммы.


Введите урок 10 в качестве имени и нажмите ОК. SQL Server сохранит диаграмму.




Введите урок 10 в качестве имени и нажмите ОК. SQL Server сохранит диаграмму.

Измените степень детализации диаграммы базы данных

Выделите таблицу Oils в диаграмме базы данных, щелкнув мышью на ее имени в диаграмме.


увеличить изображение

Выберите Standard (Стандартный) из открывающегося списка, который отображается, когда вы нажимаете кнопку Show (Вид)
в панели инструментов окна Database Diagram (Диаграмма базы данных). SQL Server добавит тип данных, длину и возможность использования нулевых значений (NULL) к отображению таблицы Oils.


увеличить изображение



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

Нажмите кнопку Arrange Tables (Упорядочить таблицы)
в панели инструментов Database Diagram (Диаграмма базы данных). SQL Server реорганизует диаграмму базы данных, чтобы учесть дополнительное пространство, требующееся для таблицы Oils.


увеличить изображение

Нажмите кнопку Save (Сохранить).
SQL Server сохранит новое размещение элементов диаграммы.

Добавьте имеющуюся таблицу в диаграмму базы данных

Щелкните на кнопке Add Table (Добавить таблицу)
в диаграмме базы данных. SQL Server отобразит диалоговое окно Add Table (Добавление таблицы).



Выберите в списке таблицу с именем dtproperties, а затем щелкните на Add (Добавить). SQL Server добавит таблицу в диаграмму. Поскольку таблица dtproperties является системной таблицей, которая не связана с таблицами данных из базы Aromatherapy, SQL Server не добавит в диаграмму никаких линий связи.


увеличить изображение

Нажмите кнопку Close (Закрыть), чтобы закрыть диалоговое окно Add Table (Добавление таблицы), а затем нажмите кнопку Save (Сохранить)
в панели инструментов database Diagram. SQL Server сохранит диаграмму с новой таблицей.

Удалите таблицу из диаграммы базы данных

Щелкните правой кнопкой мыши на таблице dtproperties в диаграмме базы данных и выберите Remove Table From Diagram (Удалить таблицу из диаграммы) из контекстного меню. SQL Server удалит таблицу из диаграммы.


увеличить изображение

Нажмите кнопку Save (Сохранить).
SQL Server сохранит диаграмму.


Создание объектов базы данных


Кроме изменения имеющихся объектов базы данных, окно Database Diagram (Диаграмма базы данных) позволяет добавлять новые таблицы и создавать отношения.

Создайте таблицу в окне диаграммы Database Diagram

Щелкните правой кнопкой мыши на пустой области в окне Database Diagram (Диаграмма базы данных) и выберите New Table (Новая таблица) из контекстного меню. SQL Server отобразит диалоговое окно, запрашивающее имя для новой таблицы.


Совет. Вы также можете создать новую таблицу, щелкнув на кнопке New Table (Новая таблица)

в панели инструментов Database Diagram (Диаграмма базы данных).

Введите Images в качестве нового имени, а затем нажмите ОК. SQL Server добавит таблицу в диаграмму.


увеличить изображение

Добавьте два столбца в новую таблицу:

Имя столбцаТип данныхДлинаРазрешить NULL
OilIDInt4No
PictureImage16No


Выделите столбец OilID, щелкнув на сером прямоугольнике слева от имени столбца, а затем нажмите кнопку Primary Key (Первичный ключ)

в панели инструментов окна Database Diagram (Диаграмма базы данных). SQL Server установит OilID в качестве первичного ключа таблицы.


Щелкните правой кнопкой мыши на таблице, откройте меню Table View (Представление таблицы) и выберите Column Names (Имена столбца). SQL Server изменит способ отображения таблицы.


Нажмите кнопку Save (Сохранить).

SQL Server отобразит диалоговое окно, предлагающее вам подтвердить изменения в схеме базы данных.


Нажмите Yes (Да). SQL Server добавит новую таблицу в базу данных.



Использование конструктора запросов Query Designer


Несмотря на то, что данные, хранящиеся в базе данных Microsoft SQL Server, редко используются в своем полном, необработанном виде, без применения той или иной сортировки или фильтрации, иногда бывает полезно быстро проверить содержимое одной таблицы. Конструктор запросов Query Designer в Enterprise Manager облегчает просмотр и редактирование строк, а также добавление новых.



Модификация строк в таблице


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

Отредактируйте строку в конструкторе запросов Query Designer

Щелкните правой кнопкой мыши на таблице PlantParts в рабочей панели Details Pane, откройте меню Open Table (Открытие таблицы), а затем выберите Return All Rows (Показать все строки), чтобы открыть конструктор запросов Query Designer для таблицы PlantParts.Измените столбец таблицы PlantParts для строки со значением PlantPartID, равным 12, заменив Fruit Kernal на Fruit Kernel. Конструктор запросов добавит значок Edit (Правка)

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


увеличить изображение

Щелкните на любой другой строке. Конструктор запросов сохранит изменение и удалит значок правки Edit.


увеличить изображение

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

Добавьте новую строку в конструкторе запросов Query Designer

В конструкторе запросов Query Designer щелкните на столбце PlantPart в последней строке [отмеченной значком New (Новая)

].Введите Fruit. Конструктор запросов пометит строку значком Edit (Правка)
и добавит новую строку в конце таблицы.


увеличить изображение

Щелкните на любой другой строке в таблице. Конструктор запросов присвоит значение PlantPartID новой строке и сохранит ее в таблице.


увеличить изображение

Примечание. Вы не можете добавить значение PlantPartID для новой строки, поскольку этот столбец является идентификационным столбцом. Если вы попытаетесь сделать это, конструктор запросов Query Designer отобразит сообщение об ошибке.



Панель диаграмм Diagram Pane


Щелчок на кнопке Diagram Pane (Панель диаграмм)

в панели инструментов конструктора запросов Query Designer отобразит панель диаграмм Diagram Pane. Панель диаграмм представляет запрос в виде, аналогичном диаграмме базы данных. Помимо всех преимуществ от графического представления информации, панель диаграмм Diagram Pane полезна для указания таблиц и представлений, на которых будет основываться ваш запрос, а также отношений между ними. Кроме того, вы можете задать, какие столбцы будут отображаться.


увеличить изображение



Панель сетки Grid Pane


Щелчок на кнопке Grid Pane (Панель сетки)

в панели инструментов конструктора запросов приводит к отображению панели сетки Grid Pane. Панель сетки аналогична виду Query Design Grid в Access. Она предоставляет возможность быстро изменять заголовки столбцов в запросе, задавать порядок, в котором будут отображаться строки, а также указывать условие отбора, например, "Surname = 'Jones'".


увеличить изображение



Панель SQL Pane


Щелчок на кнопке SQL Pane (Панель SQL)

в панели инструментов конструктора запросов приводит к отображению панели SQL Pane. Панель SQL Pane отображает фактический оператор Transact-SQL, который будет генерировать запрос. Вы можете вводить и редактировать операторы Transact-SQL непосредственно в панели SQL Pane.


увеличить изображение

Совет. Панель SQL Pane является прекрасным средством для знакомства и изучения Transact-SQL. Создайте запрос с использованием панелей диаграмм и сетки, и конструктор запросов Query Designer построит для вас оператор Transact-SQL.



Просмотр строк в таблице


Простейшим способом просмотра строк в таблице является открытие конструктора запросов Query Designer через контекстное меню таблицы.

Просмотрите все строки в таблице

В Enterprise Manager перейдите к папке Table базы данных Aromatherapy. SQL Server отобразит список таблиц в рабочей панели Details Pane.


увеличить изображение

Щелкните правой кнопкой мыши на таблице PlantParts, откройте меню Open Table (Открытие таблицы) и выберите Return All Rows (Показать все строки). SQL Server откроет конструктор запросов Query Designer с отображением всех строк в таблице.


увеличить изображение

Ограничьте количество отображаемых строк

Закройте конструктор запросов Query Designer.Щелкните правой кнопкой мыши на таблице Odors в рабочей панели Details Pane, откройте меню Open Table (Открытие таблицы) и выберите Return Top (Показать первые). SQL Server отобразит диалоговое окно, запрашивающее, сколько строк вы хотите извлечь.


Введите 5 в качестве максимального количества извлекаемых строк.


Нажмите ОК. Конструктор запросов Query Designer отобразит первые пять строк в таблице.


увеличить изображение

Закройте окно конструктора запросов Query Designer.



Работа с конструктором запросов Query Designer SQL Server


Когда вы открываете конструктор запросов Query Designer с помощью команды Open Table (Открыть таблицу), строки таблицы отображаются в виде сетки подобно тому, как это имеет место в представлении Datasheet (Таблица данных) для таблицы Microsoft Access. Это панель результатов Results Pane конструктора запросов. Конструктор запросов имеет еще три дополнительные панели: панель диаграмм Diagram Pane, панель сетки Grid Pane и панель SQL Pane.

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



Использование фразы TOP n


Когда вы выбираете команду Return Top (Показать первые) из контекстного меню таблицы, SQL Server использует фразу TOP n, чтобы создать отображение в конструкторе запросов Query Designer. Помимо задания определенного количества строк, вы также можете отобразить часть строк в процентах от общего их количества, воспользовавшись фразой TOP n PERCENT, которая, как можно ожидать, возвращает указанный процент строк.

Отобразите первые 5 строк

Добавьте фразу TOP 5 перед первым словом в списке_столбцов оператора SELECT в панели SQL Pane.


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы повторно исполнить запрос. SQL Server отобразит только первые пять строк.


увеличить изображение

Отобразите первые 5 процентов строк

Добавьте слово PERCENT после TOP 5 в панели SQL Pane.


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. SQL Server отобразит только первые пять процентов строк.


увеличить изображение



Использование оператора SELECT


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

SELECT [TOP n [PERCENT]] список_столбцов FROM список_источников [WHERE условие_поиска] [ORDER BY выражение]

Обязательными являются только первая и вторая фразы (разделы) оператора SELECT. Первая фраза, SELECT список_столбцов, задает столбцы, которые будут возвращены запросом. Список столбцов может содержать реальные столбцы из таблицы и представления (виды), на которых основывается запрос, либо содержать вычисляемые столбцы, получаемые из оригинальных столбцов. Вторая фраза, FROM список_источников, задает таблицы и представления, на которых основывается запрос.



Создайте вычисляемый столбец с использованием панели SQL Pane


Создайте вычисляемый столбец с использованием панели SQL Pane

Скройте панель сетки Grid Pane

и отобразите панель SQL Pane
, щелкнув на кнопках в панели инструментов конструктора запросов.


увеличить изображение

Добавьте GETDATE() AS [Today's Date] в список столбцов оператора SELECT.


увеличить изображение

Совет. Не забудьте поставить запятую перед GETDATE!

Нажмите кнопку Run (Выполнить)

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


увеличить изображение



Создание псевдонимов столбцов


По умолчанию столбец в запросе носит то же имя, которое он имел в исходной таблице или строке. Однако полезно иметь возможность изменять имя, либо по причине слишком большой его длины ("MyLongColumnNameWithNoSpaces"), либо просто потому, что оно слишком непривычно для его отображения пользователю ("pk_varchar_50_col32713"). Оператор SELECT позволяет переименовывать столбцы в запросе путем создания псевдонимов. Псевдоним изменяет имя столбца в запросе, но не в таблице.

Создайте псевдоним столбца с использованием панели сетки Grid Pane

Скройте панель диаграмм Diagram Pane

и отобразите панель Grid Pane
, щелкнув на кнопках в панели инструментов конструктора запросов.


увеличить изображение

Создайте псевдоним для столбца OilName, введя OilName в поле Alias (Псевдоним). Конструктор запросов автоматически добавит квадратные скобки вокруг псевдонима, поскольку псевдоним содержит пробел.


увеличить изображение

Примечание. Квадратные скобки не будут отображаться в результате выполнения запроса. Они просто указывают SQL Server интерпретировать текст "Oil Name" как одно имя. Квадратные скобки обязательны только в том случае, если псевдоним содержит пробел, но они могут использоваться для любого имени столбца.

Нажмите кнопку Run (Выполнить)

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


увеличить изображение

Создайте псевдоним столбца с использованием панели SQL Pane

Скройте панель сетки Grid Pane

и отобразите панель SQL Pane
, щелкнув на кнопках в панели инструментов конструктора запросов Query Designer.


увеличить изображение

Добавьте [Latin Name] в качестве псевдонима для второго столбца.


увеличить изображение

Нажмите кнопку Run (Выполнить)

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


увеличить изображение



Создание вычисляемых столбцов


В дополнение к столбцам, которые просто отображают информацию из исходных таблиц и представлений, ваш запрос может также содержать столбцы, которые вычисляются на основе исходных данных, функций SQL Server или любой их комбинации. Вычисляемый столбец создается путем задания выражения в качестве столбца. Подробнее с выражениями Transact-SQL мы познакомимся в уроке 21, поэтому в этом упражнении мы лишь используем пару простых выражений на основе оператора + конкатенации строк, который складывает две строки, а также функции GETDATE, возвращающей текущие системные дату и время.

Создайте вычисляемый столбец с использованием панели сетки Grid Pane

Скройте панель SQL Pane

и отобразите панель сетки Grid Pane,
щелкнув на кнопках в панели инструментов конструктора запросов.


увеличить изображение

Щелкните на пустой ячейке столбца в панели сетки Grid Pane и введите OilName + ' - ' + LatinName.


увеличить изображение

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

Нажмите клавишу Tab. SQL Server предложит в качестве псевдонима столбца Expr1.


увеличить изображение

Измените псевдоним на Extended Name.


увеличить изображение

Нажмите кнопку Run (Выполнить)

, чтобы повторно исполнить запрос. Конструктор запросов отобразит новый столбец в панели результатов Results Pane.


увеличить изображение



Выборка подмножества столбцов


Хотя синтаксис SELECT * чрезвычайно прост в использовании, вам часто требуется, чтобы ваш запрос возвращал только избранные столбцы. Для этого следует указать столбцы в перечне список_столбцов оператора SELECT.

Выполните отбор столбцов с использованием панели SQL Pane

Замените * в операторе SELECT на имя столбца OilName.


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов отобразит только столбец OilName.


увеличить изображение

Выполните отбор столбцов с помощью панели диаграмм Diagram Pane

Скройте панель SQL Pane

и отобразите панель диаграмм Diagram Pane
, щелкнув на кнопках в панели инструментов конструктора запросов.


увеличить изображение

Щелкните на поле LatinName в панели диаграмм Diagram Pane. Конструктор запросов сделает панель результатов Results тусклой, указывая на то, что результаты больше не являются корректными.


увеличить изображение

Нажмите кнопку Run (Выполнить)

, чтобы исполнить запрос. Конструктор запросов отобразит в панели результатов Results Pane как столбец OilName, так и столбец LatinName.


увеличить изображение



Выборка всех столбцов


Простейшим случаем использования оператора SELECT является выборка всех столбцов из одной таблицы. Как большинство версий языка SQL, Transact-SQL позволяет вам использовать знак звездочки (*), если вы хотите задать все столбцы, поэтому в этом простом случае оператор будет иметь следующую форму:

SELECT * FROM имя_таблицы

Выберите все столбцы

Откройте конструктор запросов Query Designer для таблицы Properties, щелкнув правой кнопкой мыши на ее имени в рабочей панели Details Pane Enterprise Manager, открыв меню Open Table (Открытие таблицы) и выбрав Return All Rows (Показать все строки). SQL Server откроет конструктор запросов Query Designer для таблицы.


увеличить изображение

Включите панель SQL Pane, щелкнув на кнопке SQL Pane (Панель SQL)

в панели инструментов конструктора запросов. Конструктор запросов отобразит панель SQL Pane.


увеличить изображение

Измените оператор SQL, чтобы отобразить все столбцы из таблицы Oils.


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы выполнить запрос. Конструктор запросов отобразит все записи из таблицы Oils.


увеличить изображение

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



Базовая фраза WHERE


Основу фразы WHERE составляет условие выбора, которое определяет, какие строки будут возвращены. Базовая структура фразы WHERE имеет форму WHERE <столбец> <оператор> < значение>. SQL Server предоставляет полный объем операторов сравнения, показанных в таблице 13-1.

Таблица 13-1. Операторы сравнения

ОператорЗначение
=Равно
>Больше чем
<Меньше чем
>=Больше или равно
<=Меньше или равно
<>Не равно

При этом <значение>, указанное в условии WHERE, может быть константой, такой как "Red" или 10000, либо выражением, возвращающим значение, таким как GETDATE. Аналогично, значение <столбец> может быть получено с помощью функций Transact-SQL, такой как LEFT, которые возвращают указанное число символов, отсчитываемое от начала строки. Мы подробно рассмотрим функции в уроке 24, "Компоненты языка Transact-SQL".

Задайте условие WHERE с использованием панели сетки Grid Pane

Выберите окно номер 2 из меню Windows, чтобы вернуться в окно конструктора Query Designer, используемое нами ранее в этом уроке.Скройте панель SQL Pane

и отобразите панель сетки Grid Pane
, щелкнув на кнопках в панели инструментов конструктора запросов.Введите = 'Eucalyptus' в ячейку условия Criteria строки OilName в панели сетки Grid Pane.


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит только одну строку.


увеличить изображение



Фраза ORDER BY


Фраза ORDER BY является необязательным компонентом оператора SELECT. Она позволяет вам задавать порядок, в котором строки будут возвращены. Можно задать несколько столбцов, а строки возвращать в порядке возрастания или убывания.



Фраза WHERE


Воспользовавшись необязательной фразой WHERE оператора SELECT, вы можете задать подмножество строк, которые будут возвращены. Например, вам нужно увидеть лишь тех клиентов, которые за предыдущие 12 месяцев приобрели вашу продукцию на сумму более $10000, либо только названия продуктов, начинающихся с буквы "R". Эти условия вы можете указать с помощью фразы WHERE.



Использование специальных операторов


В дополнение к стандартному формату фразы WHERE <столбец> <оператор> <значение> SQL Server также поддерживает три специальных оператора: LIKE, который позволяет вам указывать значения с использованием символов замещения, представленных в таблице 13-2; BETWEEN, который позволяет вам задавать диапазон значений; и IN, который позволяет вам задавать множество, в котором содержатся значения.

Таблица 13-2. Символы замещения.

Символ замещенияЗначениеПример
-Любой одиночный символLIKE 'a_' Соответствует "at" и "as", но не "and"
%Любая строка из нуля или более символовLIKE '%t%' Соответствует "at", "bat" и "together", но не "lucky"
[]Любой определенный символ внутри области или множестваLIKE '[a-c]at' Соответствует "cat" и "bat", но не "fat" LIKE '[ab]at' Соответствует "bat", но не "cat"
[^]Любой определенный символ, не содержащийся в области или множествеLIKE '[^c]at' Соответствует "bat" и "fat", но не "cat"

Задайте условие WHERE с использованием оператора LIKE

Измените условие WHERE в панели SQL Pane на WHERE (OilName LIKE 'Rose%').


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит все строки, начинающиеся с "Rose".


увеличить изображение

Задайте условие WHERE с использованием оператора BETWEEN

Измените условие WHERE в панели SQL Pane на WHERE (LEFT(OilName,1) BETWEEN 'A' AND 'C').


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит все строки, начинающиеся с A, B или C.


увеличить изображение

Примечание. Transact-SQL также поддерживает оператор NOT BETWEEN, который работает точно так же, но исключает диапазон значений. Например, LEFT(OilName,1) NOT BETWEEN 'C' AND 'E' будет возвращать все строки, кроме тех, для которых значение OilName начинается с C, D или E.



Объединение условий отбора


Помимо задания фразы WHERE с использованием одиночных выражений в формате <столбец> <оператор> <значение>, вы можете также объединять выражения с помощью логических операторов OR или AND. Условие WHERE в формате <выражение> OR <выражение> будет возвращать строки, которые отвечают одному из условий, в то время как условие WHERE в формате <выражение> AND <выражение> возвращает строки, отвечающие обоим условиям.

Задайте составное условие с использованием оператора OR

Измените условие WHERE в панели SQL Pane на WHERE (OilName = 'Rosemary' OR OilName = 'Sage').


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит 2 строки.


увеличить изображение



Отсортируйте строки с использованием панели SQL Pane


Отсортируйте строки с использованием панели SQL Pane

Скройте панель сетки Grid Pane

и отобразите панель SQL Pane
, щелкнув на кнопках в панели инструментов конструктора запросов.


Отсортируйте строки с использованием панели SQL Pane

Скройте панель сетки Grid Pane

и отобразите панель SQL Pane
, щелкнув на кнопках в панели инструментов конструктора запросов.


увеличить изображение

Поменяйте местами имена столбцов во фразе ORDER BY.


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит результаты, отсортированные сначала по полю OdorID, а затем по полю OilID.


увеличить изображение

Закройте окно конструктора запросов.



Сортировка по нескольким столбцам


Вы можете указывать в фразе ORDER BY несколько столбцов. Если указано несколько столбцов, порядок их следования определяет результат – SQL Server будет сортировать строки по первому столбцу, затем по второму столбцу и т.д.

Совет. Упражнения в этом разделе используют таблицу OilOdors, которая действует как узловая таблица, устанавливающая отношение много-ко-многим между таблицами Oils и Odors. Обычно вам следует использовать внешние ключи, содержащиеся в этой таблице, с помощью связывания. Как это делается, мы рассмотрим в следующем уроке, "Связывание таблиц".

Отсортируйте строки с использованием панели сетки Grid Pane

Выберите окно номер 1 из меню Windows, чтобы вернуться в дерево консоли Console Tree.Откройте конструктор запросов Query designer для таблицы OilOdors, щелкнув правой кнопкой мыши на ее имени в рабочей панели Details Pane, открыв меню Open Table (Открытие таблицы) и выбрав Return All Rows (Показать все строки). SQL Server откроет конструктор запросов Query designer для таблицы.Отобразите панель сетки Grid Pane, щелкнув на кнопке Grid Pane (Панель сетки)

в панели инструментов конструктора запросов.


увеличить изображение

Замените * в панели сетки Grid Pane на имена двух полей. SQL Server выделит содержимое панели результатов Results Pane тусклым, указывая, что оно больше не отвечает спецификации запроса.


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит только два указанных вами столбца.


увеличить изображение

Установите значение типа сортировки Sort Type для обоих столбцов на Ascending (По возрастанию).


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит строки, отсортированные сначала по полю OilID, а затем по полю OdorID в соответствии со значениями номеров OilID.


увеличить изображение



Сортировка строк


Простейшая форма фразы ORDER BY предоставляет имя одного столбца, который будет использоваться для сортировки строк, возвращенных запросом.

Отсортируйте строки с использованием панели сетки Grid Pane.

Откройте конструктор запросов Query Designer для таблицы Oils, щелкнув правой кнопкой мыши на ее имени в рабочей панели Details Pane, открыв меню Open Table (Открытие таблицы) и выбрав Return All Rows (Показать все строки). SQL Server откроет конструктор запросов для таблицы.Отобразите панель сетки Grid Pane

, щелкнув на кнопке Grid Pane (Панель сетки) в панели инструментов конструктора запросов.


увеличить изображение

Выберите для отображения только столбцы OilID, OilName и LatinName. Конструктор запросов выделит тусклым содержимое панели результатов Results Pane, указывая, что оно больше не отвечает спецификации запроса.


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов отобразит только заданные столбцы.


увеличить изображение

Установите тип сортировки Sort Type для поля OilName Ascending (По возрастанию).


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов отобразит строки, отсортированные по значению поля OilName.


увеличить изображение



Задайте условие WHERE с использованием панели SQL Pane


Задайте условие WHERE с использованием панели SQL Pane

Скройте панель сетки Grid Pane

и отобразите панель SQL Pane
, щелкнув на кнопках в панели инструментов конструктора запросов.


увеличить изображение

Измените фразу WHERE на WHERE (LEFT(OilName,1) = 'R').


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит названия ароматических масел, начинающихся с "R".


увеличить изображение



Использование фразы FROM


Базовая структура фразы FROM содержит имя одной таблицы или представления. Однако чтобы воспользоваться всей мощью реляционной модели, нужно иметь возможность извлекать столбцы из нескольких таблиц и представлений в одном запросе. Фраза FROM предоставляет механизм для осуществления этой операции с использованием следующего синтаксиса:

FROM <таблица_или_предствление> <оператор_связывания> <таблица_или_предствление> ON <условие_связывания>

Оператор связывания описывает тип выполняемого связывания. Microsoft SQL Server поддерживает внутреннее и внешнее связывание во всех их вариациях (см. урок 15).

Условие связывания представляет собой выражение, аналогичное условию отбора, используемого в фразе WHERE. Оно задает, как будут соответствовать строки в двух таблицах. Большинство операций связывания выполняются на основе выражений эквивалентности, таких как Column A = Column B. Однако SQL Server поддерживает любые логические операторы, а условие связывания может быть сколь угодно сложным, состоящим из нескольких выражений, соединенных с помощью логических операторов AND или OR. таким же образом, как во фразе WHERE с несколькими условиями отбора.

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

FROM <таблица_или_вид> <оператор_связывания> <таблица_или_вид> ON <условие_связывания> <оператор_связывания> <таблица_или_вид> ON <условие_связывания> . . .

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



Объединения


Последним типом связывания является объединения. Объединения помещают результаты выполнения двух различных операторов SELECT в один набор строк. При внутреннем и внешнем связывании столбцы из двух таблиц размещаются построчно. Объединение размещает строки из двух таблиц в одном столбце, как если бы вы взяли два набора строк и получили единое их множество, в котором один набор располагается под другим. Фактический порядок строк в полученном результате определяется фразой ORDER BY.

Синтаксис объединения отличается от синтаксиса связывания. Он имеет следующий вид:

SELECT <список_столбцов> FROM <имя_таблицы> UNION [ALL] SELECT <список_столбцов> FROM <имя_таблицы> [ORDER BY <список_столбцов>]

Вы можете добавить в запрос столько операторов UNION SELECT, сколько захотите (с учетом ограничения в 256 таблиц), но все операторы SELECT должны возвращать одно и то же количество столбцов одинаковых или совместимых типов и в одном и том же порядке. Первый оператор SELECT будет определять имена столбцов, а фраза ORDER BY последнего оператора SELECT будет определять порядок сортировки.

По умолчанию SQL Server не допускает дублирования строк в результате выполнения запроса с объединением. Если вы, однако, укажете UNION ALL, дублирующиеся строки будут сохранены.

Создайте объединение

Откройте конструктор запросов Query Designer, щелкнув правой кнопкой мыши на таблице Properties в рабочей панели Details Pane, укажите на Open Table (Открытие таблицы) и выберите Return All Rows (Показать все строки).Отобразите панель SQL Pane.


увеличить изображение

Замените имеющийся оператор SQL следующим:

SELECT 'PropertyTable' AS TableName, PropertyID AS ID, Property AS Quality FROM Properties UNION SELECT 'OdorTable', OdorID, Odor FROM Odors ORDER BY Quality


увеличить изображение

Нажмите кнопку Run (Выполнить)

в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer объединит результаты выполнения двух операторов SELECT.


увеличить изображение



Создание связей


Связи могут быть созданы в конструкторе запросов Query Designer либо с использованием панели сетки Grid Pane, либо с использованием панели SQL Pane. Панелью сетки Grid Pane лучше пользоваться, если вы связываете таблицы, которые являются формально зависимыми в схеме базы данных, поскольку конструктор запросов будет создавать связь между ними автоматически. Альтернативой является применение панели SQL Pane, которая обеспечивает большую гибкость.

Имена объектов

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

Полная спецификация для любого объекта базы данных определяется четырьмя идентификаторами: именем сервера, именем базы данных, именем владельца и именем объекта. Идентификаторы отделяются друг от друга точками. Таким образом, полное имя для таблицы Oils в моей системе будет следующим:

BUNNY.Aromatherapy.dbo.Oils

Некоторые объекты, такие как таблицы и представления, содержат другие объекты. Чтобы сослаться на один из таких объектов (в нашем случае, на столбцы), вы должны просто добавить его имя после имени объекта. Полное имя для столбца OilID таблицы Oils будет следующим:

BUNNY.Aromatherapy.dbo.Oils.OilID

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



Внутреннее связывание


Наиболее распространенной формой связывания является внутреннее связывание. Внутреннее связывание возвращает только те строки, для которых условие связывания имеет значение TRUE.

Свяжите две таблицы с использованием панели диаграмм Diagram Pane

Откройте конструктор запросов Query Designer для таблицы Oils, щелкнув правой кнопкой мыши на ее имени в рабочей панели Details Pane, указав на Open Table (Открытие таблицы) и выбрав Return All Rows (Показать все строки).Отобразите панель диаграмм Diagram Pane,

щелкнув на кнопке Diagram Pane (Панель диаграмм) в панели инструментов конструктора запросов.


увеличить изображение

Нажмите кнопку Add Table (Добавить таблицу)

в панели инструментов конструктора запросов. Конструктор запросов Query Designer отобразит диалоговое окно Add Table (Добавление таблицы).


Выделите таблицу PlantTypes в списке таблиц и нажмите кнопку Add (Добавить). SQL Server добавит таблицу в запрос. Нажмите Close (Закрыть), чтобы закрыть диалоговое окно Add Table (Добавление таблицы).


увеличить изображение

Щелкните на кнопке SQL Pane (Панель SQL)

в панели инструментов конструктора запросов. Конструктор запросов Query Designer отобразит панель SQL Pane.


увеличить изображение

Удалите * после ключевого слова SELECT.


увеличить изображение

Щелкните на кнопке SQL Pane (Панель SQL)

в панели инструментов конструктора запросов. (Нажмите ОК, если конструктор запросов Query Designer отобразит сообщение об ошибке в синтаксисе оператора SELECT.) Конструктор запросов Query Designer скроет панель SQL Pane.

Внимание! Когда вы открываете конструктор запросов Query Designer, базовым оператором SQL всегда является SELECT *. Выбор определенных столбцов в панели диаграмм Diagram Pane приводит к добавлению их в список столбцов. Эта возможность предусмотрена Microsoft.



увеличить изображение



Свяжите две таблицы с использованием панели SQL Pane

Скройте панель диаграмм Diagram Pane
и отобразите панель SQL Pane,
щелкнув на кнопках в панели инструментов конструктора запросов.


увеличить изображение

Замените имеющийся оператор SELECT на следующий:

SELECT Oils.OilID, Oils.OilName, PlantParts.PlantPart FROM Oils INNER JOIN PlantParts ON Oils.PlantPartID = PlantParts.PlantPartID


увеличить изображение

Нажмите кнопку Run (Выполнить)
в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит значения PlantPart таблицы Oils для каждой строки.


увеличить изображение



Свяжите несколько таблиц с использованием панели диаграмм Diagram Pane

Скройте панель SQL Pane
и отобразите панель диаграмм Diagram Pane.



увеличить изображение

Нажмите кнопку Add Table (Добавить таблицу) в панели инструментов конструктора запросов. Конструктор запросов Query Designer отобразит диалоговое окно Add Table (Добавление таблицы).



Выделите таблицу PlantTypes в списке таблиц и нажмите кнопку Add (Добавить). SQL Server добавит таблицу в запрос.Нажмите кнопку Close (Закрыть), чтобы закрыть диалоговое окно Add Table (Добавление таблицы).


увеличить изображение

В панели диаграмм Diagram Pane щелкните на столбце PlantType в таблице PlantTypes, чтобы добавить столбец в запрос.


увеличить изображение

Нажмите кнопку Run (Выполнить)
в панели инструментов конструктора запросов Query Designer, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит и столбец PlantPart, и столбец PlantType для каждого вида масла.


увеличить изображение



Свяжите несколько таблиц с использованием панели SQL Pane

Скройте панель диаграмм Diagram Pane
и отобразите панель SQL Pane.
Замените имеющийся оператор SELECT следующим:

SELECT Oils.OilID, Oils.OilName, Odors.Odor FROM Oils INNER JOIN OilOdors ON Oils.OilID = OilOdors.OilID INNER JOIN Odors ON OilOdors.OdorID = Odors.OdorID


увеличить изображение

Нажмите кнопку Run (Выполнить)
в панели инструментов конструктора запросов, чтобы исполнить запрос.


увеличить изображение

Закройте окно конструктора запросов Query Designer.