CREATE TABLE tblRegionNew (
State char Region varchar (50),
CONSTRAINT StatePrimary PRIMARY KEY (State)
)
Назначение внешнего ключа
Для того чтобы назначить поле в качестве внешнего ключа, используйте ограничение FOREIGN KEY. Например, в структуре нашей базы данных существует отношение типа один-ко-многим между полем State таблицы tblRegion и соответствующим полем State таблицы tblCustomer. Команда SQL, используемая для создания таблицы tblCustomer, может выглядеть так, как показано ниже.
CREATE TABLE tblCustomer (
ID int identity(1,1),
FirstName varchar (20),
LastName varchar (30),
Address varchar (100),
City varchar (75),
State varchar (2),
CONSTRAINT IDPrimary PRIMARY KEY (ID),
CONSTRAINT StateForeign FOREIGN KEY (State)
REFERENCES tblRegionNew (State)
)
Обратите внимание, что внешний ключ в команде CREATE TABLE не создает индекс по этому внешнему ключу. Он только служит для создания отношения между двумя таблицами.
Создание индексов с помощью команды CREATE INDEX
Помимо создания индексов в процессе формирования таблицы (с помощью предложения CONSTRAINT), можно также создавать индексы уже после того, как таблица сформирована (с помощью предложения CREATE INDEX). Это полезно в тех случаях, когда таблица уже существует (в то время как предложение CONSTRAINT применяется для формирования индексов только в момент создания таблицы).
Для создания индекса в существующей таблице используйте приведенную ниже команду SQL.
CREATE INDEX StateIndex
ON tblCustomer (State)
Для того чтобы создать уникальный индекс, используйте ключевое слово UNIQUE, как показано ниже.
CREATE UNIQUE INDEX StateIndex
ON tblRegion (State)
Чтобы создать первичный индекс в существующей таблице, используйте приведенную ниже команду SQL.
CREATE UNIQUE NONCLUSTERED INDEX StateIndex ON tblRegion (
State
) ON [PRIMARY]
Удаление таблиц и индексов с помощью предложения DROP
Удалять элементы базы данных можно с помощью предложения DROP. Например, чтобы удалить таблицу, используйте приведенную ниже команду SQL.
DROP TABLE tblRegion
С помощью предложения DROP можно также удалить индекс в таблице, как показано ниже.
DROP INDEX tblRegion.StateIndex
Обратите внимание, что для удаления первичного ключа нужно знать имя этого ключа.
У вас также есть возможность удалять отдельные поля таблиц. Для этого нужно использовать предложение DROP внутри предложения ALTER TABLE, как показано в следующем разделе. А для удаления базы данных применяется команда DROP DATABASE.
Модификация структуры таблицы с помощью предложения ALTER
С помощью предложения ALTER можно изменить определения полей в таблице. Например, чтобы добавить поле CustomerType в tblCustomer, используйте приведенную ниже команду SQL.
ALTER TABLE tblCustomer
ADD CustomerType int
Для того чтобы удалить поле из базы данных, используйте предложение DROP COLUMN вместе с предложением ALTER TABLE, как показано ниже.
ALTER TABLE tblCustomer
DROP COLUMN CustomerType
Кроме того, с помощью предложения ALTER TABLE можно добавить в таблицу ограничения. Например, для создания отношения между таблицами tblCustomer и tblOrder с помощью предложения ALTER TABLE используйте приведенную ниже команду SQL.
ALTER TABLE tblOrder
ADD CONSTRAINT OrderForeignKey
FOREIGN KEY (CustomerID)
REFERENCES tblCustomer (ID)
Помните, что добавление ограничения не создает обычного индекса по полю, оно просто делает поле уникальным, назначает поле первичным ключом или создает отношение между двумя таблицами.
Эта глава посвящена технологии создания запросов, которые могут использоваться в приложениях доступа к базам данных, созданных в среде Visual Basic .NET. Здесь рассматривались запросы, которые возвращают необходимые записи, а также запросы, которые создают и модифицируют структуру баз данных.
Большая часть материала этой главы приводится отнюдь не ради увеличения объема книги; начав программировать с использованием Visual Studio .NET и ADO.NET, вы почувствуете реальную пользу от прочитанного.
Почему имена таблиц и полей иногда заключены в квадратные скобки?
Квадратные скобки часто окружают имена объектов в среде Visual Studio.NET и административных инструментах SQL Server для исключения проблем при использовании имен с пробелами и другими зарезервированными символами и словами. Например в базе данных Northwind, которая инсталлируется вместе с SQL Server 2000, есть таблица с именем Order Details. Хотя в общем случае не рекомендуется включать пробелы в имена таблиц, ее все же можно использовать в SQL Server в виде [Order Details]. Однако инструменты с графическим интерфейсом, например в среде Visual Studio .NET, всегда добавляют квадратные скобки. Но в данной книге они не используются, чтобы исключить излишнюю работу по их вводу.
Читать дальше