Чтение онлайн

на главную - закладки

Жанры

Обработка баз данных на Visual Basic®.NET

Прайс Кевин Т.

Шрифт:

INSERT INTO tblOrder(CustomerID, OrderDate)

VALUES (119, '6/16/2001')

При выполнении этого запроса в таблице tblOrder создается новый заказ для клиента с идентификационным номером 119 и датой 16 июня 2001 года.

НА ЗАМЕТКУ

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

Для создания разновидности запроса на добавление, который копирует записи из одной таблицы в другую, используйте предложение INSERT вместе с предложением SELECT. Предположим, вместо удаления старых заказов вы архивируете их, периодически копируя в архивную таблицу tblOrderArchive, которая имеет ту же структуру, что и tblOrder. Для выполнения этой работы необходимо сначала создать таблицу tblOrderArchive со структурой, аналогичной tblOrder.

CREATE TABLE tblOrderArchive (

 ID [int] NOT NULL,

 CustomerID [int] NULL,

 OrderDate [datetime] NULL)

НА ЗАМЕТКУ

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

Ниже приведена инструкция SQL для копирования старых записей из tblOrder в tblOrderArchive.

INSERT INTO tblOrderArchive

SELECT * FROM tblOrder

WHERE OrderDate < '6/1/2001'

При выполнении этой инструкции SQL в таблицу tblOrderArchive копируются все записи, содержащие заказы, которые были оформлены до 1 июня 2001 года.

Запросы на основе команды SELECT INTO

Запрос на основе команды SELECT INTO аналогичен запросу на добавление, за исключением того, что он создает новую таблицу и сразу же копирует в нее записи. В Microsoft Access он называется запросом на создание таблиц (make-table query). Так, в предыдущем примере все записи из таблицы tblOrder копировались в таблицу tblOrderArchive, исходя из предположения, что таблица tblOrderArchive уже существует. Вместо этого запроса для копирования тех же записей в новую таблицу с такой же структурой, как и у оригинала, воспользуйтесь приведенным ниже запросом SQL.

SELECT * INTO tblOrderArchive

FROM tblOrder

НА ЗАМЕТКУ

Этот запрос копирует все записи из tblOrder в новую таблицу с именем tblOrderArchive. Однако если такая таблица уже существует, эта команда не будет выполнена. Это отличается от результата выполнения данного запроса в Microsoft Access.

Если его выполнить в окне конструктора запросов программы Access при условии, что таблица tblOrderArchive уже существует, то процессор баз данных удалит исходную таблицу и заменит ее вновь созданной, которая будет заполнена содержимым скопированных записей. В SQL Server для удаления таблицы нужно использовать DDL-команду DROP TABLE.

В запросе на основе команды SELECT INTO можно применить критерий отбора (с помощью предложения WHERE) точно так же, как это делалось в запросе на добавление (см. предыдущий раздел). Это дает возможность копировать подмножество записей из исходной таблицы в новую, которая формируется запросом на создание таблицы.

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

Команды языка определения данных (Data Definition Language — DDL) представляют собой инструкции SQL, которые позволяют создавать элементы структуры базы данных, манипулировать ими и удалять. Используя DDL, можно создавать и удалять таблицы, а также изменять структуру этих таблиц.

Команды DDL относятся к наиболее редко используемым инструкциям в SQL в основном потому, что существует множество прекрасных инструментов, которые позволяют легко справиться с задачами создания таблиц, полей и индексов. В среде Visual Studio.NET DDL-команды SQL используются незаметно для разработчика при создании схемы базы данных в окне Server Explorer, но в ней не предусмотрены инструменты для непосредственного выполнения команд SQL по отношению к базе данных. Для этого следует применять инструменты Query Analyzer и osql либо использовать DDL-команды непосредственно в коде.

Но если вы работаете в среде клиент/сервер, то для создания структуры базы данных удобнее использовать DDL-команды. Подобно командам манипулирования данными, DDL-команды не возвращают результирующих наборов (поэтому их и называют не запросами, а командами).

Создание элементов базы данных с помощью предложения CREATE

Новые элементы базы данных создаются с помощью предложения SQL CREATE. Чтобы создать таблицу, используйте команду CREATE TABLE, за которой введите поля и типы данных, предназначенные для добавления в таблицу. В качестве разделителей используйте запятые, а весь список заключите в круглые скобки. Например, для создания новой таблицы можно применять приведенную ниже инструкцию SQL.

CREATE TABLE tblRegion (

 State char (2),

 Region varchar (50)

)

Тип данных char(2), означает, что процессор баз данных должен создать текстовое поле фиксированной длины для хранения максимум двух символов, а выражение varchar (50) указывает на создание поля с переменной длиной до 50 символов.

При выполнении этого запроса будет создана таблица со следующей структурой:

tblRegion
State
Region

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

Добавление ограничений в таблицу

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

Ограничение создается с помощью предложения SQL CONSTRAINT, которое принимает два параметра: имя индекса и имя поля или полей, в индексации которых вы заинтересованы. Можно объявить индекс с помощью ключевого слова UNIQUE или PRIMARY, и тогда этот индекс будет означать, что поле может принимать только уникальные значения или что поле (поля) служит первичным ключом таблицы.

Поделиться:
Популярные книги

Кодекс Императора

Сапфир Олег
1. Кодекс Императора
Фантастика:
аниме
фэнтези
попаданцы
4.25
рейтинг книги
Кодекс Императора

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Статьи

Переслегин Сергей Борисович
Документальная литература:
публицистика
5.00
рейтинг книги
Статьи

Тени в переулке (сборник)

Хруцкий Эдуард Анатольевич
Документальная литература:
биографии и мемуары
публицистика
7.17
рейтинг книги
Тени в переулке (сборник)

Исторический материализм

Коллектив авторов
Научно-образовательная:
история
философия
политика
5.00
рейтинг книги
Исторический материализм

A Choriambic Progression

Mairead Triste and Aristide
Юмор:
сатира
5.00
рейтинг книги
A Choriambic Progression

Танцоры в конце времени

Муркок Майкл Джон
Фантастика:
фантастика: прочее
6.25
рейтинг книги
Танцоры в конце времени

Газлайтер. Том 40

Володин Григорий Григорьевич
40. История Телепата
Фантастика:
альтернативная история
аниме
попаданцы
6.25
рейтинг книги
Газлайтер. Том 40

Древесный маг Орловского княжества 6

Павлов Игорь Васильевич
6. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 6

Бабочка в гипсе

Донцова Дарья
28. Евлампия Романова. Следствие ведет дилетант
Детективы:
иронические детективы
7.74
рейтинг книги
Бабочка в гипсе

Чужой ребенок

Зайцева Мария
1. Чужие люди
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Чужой ребенок

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Газлайтер. Том 39

Володин Григорий Григорьевич
39. История Телепата
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
попаданцы
6.25
рейтинг книги
Газлайтер. Том 39

Милосердие палача

Смирнов Виктор Васильевич
3. Адъютант его превосходительства
Приключения:
исторические приключения
7.38
рейтинг книги
Милосердие палача