Кузин А.В., Левонисова С.В. Базы данных (5-е издание, 2012), страница 12
Описание файла
PDF-файл из архива "Кузин А.В., Левонисова С.В. Базы данных (5-е издание, 2012)", который расположен в категории "". Всё это находится в предмете "базы данных" из 6 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "базы данных (бд)" в общих файлах.
Просмотр PDF-файла онлайн
Текст 12 страницы из PDF
Если переключиться в режим таблицы до выполнения запроса,то можно просмотреть старое содержимое обновляемых полей.Запрос на добавление используется для добавления записей изтаблицы запроса в другую таблицу. Добавляемые записи выбираются из одной или нескольких взаимосвязанных таблиц с помощью запроса на выборку, который затем в окне конструктора запросов превращается в запрос на добавление кнопкой [Добавление] на панели инструментов или командой меню Запрос \Добавление. В открывшемся при этом окне Добавление в поле Имя таблицы вводится имя таблицы, в которую надо добавить записи.57После выполнения последней команды в бланке запроса появляется строка Добавление.
Для формирования добавляемых записей надо включить в бланк запроса поля, соответствующие определенным полям таблицы, в которые будет производиться добавление, и там, где необходимо, записать условия отбора полей вячейки строки Условие отбора. Если в таблице, в которую добавляются записи, есть ключ, то ключевые поля обязательно должныбыть включены в бланк запроса.Для указания в строке Добавление имен полей таблицы-получателя надо в каждой ячейке открыть список и выбрать нужноеимя.
Если выбранные поля имеют одни и те же имена в обеихтаблицах, эти имена в строку Добавление вносятся автоматически.Предварительный просмотр добавляемых записей производитсякнопкой [Представление запроса] на панели инструментов. Возвратв режим конструктора запросов производится этой же кнопкой.Для добавления записей нажимается кнопка [Запуск] на панели инструментов. В открывшемся диалоговом окне сообщается очисле обновляемых записей и задается вопрос о продолжении операции добавления.Если таблица, в которую добавляются записи, содержит ключевое поле, то добавляемые записи должны содержать такое жеполе.Запрос на удаление позволяет удалить записи из одной таблицыили из нескольких взаимосвязанных таблиц.
Удаляемые записивыбираются с помощью запроса на выборку, который в окне конструктора превращается в запрос на удаление при помощи кнопки [Удаление] на панели инструментов или команды меню Запрос\Удаление.После выполнения этой команды в бланке запроса появляетсястрока Удаление. Символ звездочка (*) из списка полей таблицы,записи которой требуется удалить, перемещается с помощью мышив бланк запроса. Для полей (для которых это необходимо) заполняется строка Условие отбора.Для предварительного просмотра удаляемых записей можнонажать кнопку [Представление запроса] на панели инструментов,которая используется и для возврата в режим конструктора запроса. Для удаления записей нажимается кнопка [Запуск] на панели инструментов.Результаты запроса зависят от установленных в схеме БД отношений между таблицами и параметров целостности.
Если для связи установлен параметр целостности Каскадное удаление связанных записей, то в результате выполнения этого запроса будут удалены все связанные записи. Если параметр целостности Каскадноеудаление связанных записей не установлен, то записи удаляютсятолько в указанных в бланке запроса таблицах вне зависимости отих логических связей.582.8.5. Элементы языка SQL и запросы в форме SQLSQL (Structured Query Language) — это язык запросов, который используется при работе с реляционными базами данных всовременных СУБД (ORACLE, dBASE IY, dBASE Y, Paradoxe,Access и др.).Язык SQL стал стандартным языком запросов при работе среляционными базами данных для архитектуры как файл-сервер,так и клиент-сервер, а также в условиях применения системы управления распределенными БД.Язык SQL использует ограниченный набор команд, но в то жевремя — это реляционно полный язык, предназначенный для работы с базами данных, создания запросов выборки данных, выполнения вычислений, обеспечения их целостности.
Синтаксисверсий языка SQL может в определенной степени различаться дляотдельных СУБД. Рассмотрим наиболее общие операторы языкаSQL.Операторы языка SQL для работы с реляционной базой данныхСоздание реляционных таблиц. Создание реляционной базы данных означает спецификацию состава полей: указание имени, типаи длины каждого поля (если это необходимо).
При этом каждаятаблица должна иметь уникальное имя.Синтаксис оператора создания новой таблицы:CREATE TABLE таблица (поле1 тип [(размер)] [индекс1][, поле2 тип [(размер)] [индекс2] [, ...]] [, составнойиндекс [, ...]])Здесь таблица — имя создаваемой таблицы; поле1, поле2 — именаполей таблицы; тип — тип поля; размер — размер текстового поля;индекс 1, индекс2 — директивы создания простых индексов; составной индекс — директива создания составного индекса.Каждый индекс имеет уникальное в пределах данной таблицыимя. Для создания простого индекса используется следующая фраза(размещаемая за именем поля):CONSTRAINT имя индекса {PRIMARY KEY|UNIQUE|REFERENCES внешняя таблица [(внешнее поле)]}Директива создания составного индекса (размещаемая в любом месте после определения его элементов) имеет следующийвид:CONSTRAINT имя {PRIMARY KEY (ключевое1[, ключевое2[, ...]]) |UNIQUE (уникальное! [, ...]]) | FOREIGN KEY (ссыл59ка1[, ссылка2[, ...]]) REFERENCES внешняя таблица [(внешнее поле1 [, внешнее поле2 [, ...]])]}Значения служебных слов:U NIQUE — уникальный индекс (в таблице не может бытьдвух записей, имеющих одно и то же значение полей, входящихв него);PRIMARY KEY — первичный ключ таблицы, который можетсостоять из нескольких полей (упорядочивает записи таблицы);FOREIGN KEY — внешний ключ для связи с другими таблицами (может состоять из нескольких полей);REFERENCES — ссылка на внешнюю таблицу.Пример 2.1.
Создание таблицы:CREATE TABLE Студент([Имя] TEXT,[Фамилия] TEXT,[Дата рождения] DATETIME,CONSTRAINT Адр UNIQUE ([Имя]), [Фамилия], [Дата рождения] ))В результате выполнения данного запроса будет создана таблица СТУДЕНТ, имеющая в своем составе:• два текстовых поля — Имя, Фамилия',• одно поле типа дата/время — Дата рождения.Будет также создан составной индекс с именем Адр по значениямуказанных полей, который будет иметь уникальное значение, так как втаблице не может быть двух записей с одинаковыми значениями полей,образующих его.Изменение структуры таблиц. При необходимости можно изменить структуру таблицы:• удалить существующие поля;• добавить новые поля;• создать или удалить индексы.При этом все указанные действия затрагивают только одно полеили один индекс:ALTER TABLE таблицаADD{[COLUMN]поле тип[(размер)] [CONSTRAINT индекс]CONSTRAINT составной индекс}|DROP {[COLUMN] поле i CONSTRAINT имя индекса}}Опция ADD обеспечивает добавление поля таблицы, а опцияDROP — удаление.
Добавление опции CONSTRAINT означает подобные действия для индексов таблицы.60Пример 2.2. Изменение структуры таблицы:ALTER TABLE Студент ADD COLUMN [Группа] TEXT(5)Для создания нового индекса к существующей таблице можнотакже использовать следующую команду:CREATE [UNIQUE] INDEX индексON таблица (поле[, ...])[WITH {PRIMARY|DISALLOW NULL|IGNORE NULL}]Фраза WITH обеспечивает наложение условий на значенияполей, включенных в индекс:DISALLOW NULL — запретить пустые значения в индексированных полях новых записей;IGNORE NULL — включать в индекс записи, имеющие пустые значения в индексированных полях.Пример 2.3. Создание индекса таблицы:CREATE INDEX Гр ON Студент([группа]) WITH DISALLOWNULLУдаление таблицы.
Для удаления таблицы (одновременно иструктуры, и данных) используется следующая команда:DROP TABLE имя таблицыДля удаления только индекса таблицы (сами данные при этомне разрушаются) необходимо выполнить следующую команду:DROP INDEX имя индекса ON имя таблицыПример 2.4. Удаление только индекса Адр таблицы:DROP INDEX Адр ON СтудентУдаление всей таблицы:DROP TABLE СтудентВвод данных в таблицу.
Формирование новой записи в таблицевыполняется следующей командой:INSERT INTO таблица [(поле1[, поле2[, ...]])]VALUES (значение1[, значение2 [, ...])Здесь указываются имя таблицы, в которую добавляют запись,и состав полей, для которых вводятся значения.61Пример 2.5. Ввод данных в таблицу:INSERT INTO Студент ([Фамилия], [Имя], [Дата рождения] ) VALUES ("Петров", "Иван", 23/3/80)Возможен также групповой ввод записей (пакетный режим),являющихся результатом выборки (запроса) из других таблиц:INSERT INTO таблица [IN внешняя база данных]SELECT [источник.] поле1 [, поле2[, ...]FROM выражениеWHERE условиеВ этом случае сначала выполняется оператор подзапросаSELECT, который и формирует выборку для добавления данных.Фраза SELECT определяет структуру данных источника передаваемых записей — имена таблицы и полей, содержащих исходные данные для загрузки в таблицу.Оператор FROM позволяет указать имена исходных таблиц,участвующих в формировании выборки, а фраза WHERE задаетусловия выполнения подзапроса.
При этом структура данных выборки должна соответствовать структуре данных таблицы, в которую производится добавление.Добавление (перезагрузка) записей возможно и во внешнююбазу данных, для которой указывается полностью специфицированное имя (диск, каталог, имя, расширение). При этом структуры таблиц должны совпадать.Пример 2.6. Ввод данных в таблицу:INSERT INTO Студент SELECT [Студент-заочник].* FROM[Студент-заочник]Этой фразой все записи таблицы СТУДЕНТ-ЗАОЧНИК будут добавлены в таблицу СТУДЕНТ.Пример 2.7. Ввод данных в таблицу:INSERT INTO Студент SELECT [Студент-заочник].* FROM[Студент-заочник] WHERE [Дата рождения] > = # 01/01/80 #В этом случае записи таблицы СТУДЕНТ-ЗАОЧНИК добавляются втаблицу СТУДЕНТ, если дата рождения студента больше или равна указанной.Операции соединения таблиц. Операцию IN N ER JOIN можноиспользовать в любом предложении FROM.
Она создает симмет62ричное объединение — наиболее частую разновидность внутреннего объединения.Записи из двух таблиц объединяются, если связующие их полясодержат одинаковые значения:FROM таблица! INNER JOIN таблица2 ON таблица!., поле1=таблица2.поле2Данный оператор описывает симметричное соединение двухтаблиц по ключам связи (поле1; поле2). Новая запись формируется в том случае, если в таблицах содержатся одинаковые значенияключей связи.Возможны следующие варианты операции соединения таблиц:LEFT JOIN (левостороннее) соединение, когда выбираютсявсе записи левой таблицы и только те записи правой таблицы,которые содержат соответствующие ключи связи;RIGHT JOIN (правостороннее) соединение, когда выбираются все записи правой таблицы и только те записи левой таблицы,которые содержат соответствующие ключи связи.Пример 2.8.
Соединение таблиц:1. SELECT Студент.*, Оценка.* FROM Студенты INNERJOIN Оценка ON Студент.[№ зач.книжки] = Оценка.[№ зач.книжки]2. SELECT Студент.*, Оценка.* FROM Студенты LEFTJOIN Оценка ON Студент.[№ зач.книжки] = Оценка.[№ зач.книжки]3. SELECT Студент.*, Оценка.* FROM Студенты RIGHTJOIN Оценка ON Студент. [№ зач.книжки] = Оценка. [№ зач.книжки]В первом случае создается симметричное соединение двух таблиц пополю [№ зач.книжки]. При этом записи не выводятся, если значение ихключей связи (указанное поле) не представлено в двух таблицах.Во втором случае выводятся все записи таблицы СТУДЕНТ и соответствующие им записи таблицы ОЦЕНКА.В третьем случае, наоборот, выводятся все записи таблицы ОЦЕНКАи соответствующие им записи таблицы СТУДЕНТ.Операции JOIN могут быть вложенными для последовательного соединения нескольких таблиц.Пример 2.9.