Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.hist.msu.ru/Departments/Inf/Stud/bd4.doc
Дата изменения: Fri May 15 14:26:59 2009
Дата индексирования: Tue Oct 2 12:04:12 2012
Кодировка: koi8-r

Занятие 4 (5 мая)

Часть 1 (теоретическая). Язык запросов SQL.
Реляционные модели и реляционные языки
. Реляционные модели
. Классификация реляционных языков
. Основные характеристики языка SQL

Основы языка SQL
. Типы данных
. Создание таблицы
. Изменение структуры таблицы
. Удаление таблицы
. Ограничения
. Индексы
. Ввод данных в таблицы


Часть 3 (практикум).
. Создание таблиц базы данных.
. Модификация таблиц.
. Ввод данных в таблицы.


Упражнение 1. Работа с БД Duma_1995.mdb.
С помощью конструктора запросов Access cконструировать запрос на создание
таблицы "новая" по образцу таблицы "депутаты" с двумя полями - "имя" и
"номер". Скопировать в новую таблицу 10 первых записей таблицы "депутаты".
[pic]

Изучить построенную СУБД инструкцию SQL, соответствующую этому запросу.
[pic]


Инструкция SELECT . INTO - запрос на создание таблицы.
Инструкция SELECT . INTO сохраняет результат запроса в виде новой
таблицы в текущей или внешней базе данных. Запрос на создание таблицы можно
использовать для архивации записей, создания резервных копий таблицы, копий
для экспорта в другую базу данных и др. Синтаксис инструкции:

SELECT <поле1>[, поле2<>[, .]]

INTO <новая таблица> [IN <внешняя база данных>]

FROM <источник>

где <поле1>, <поле2> - имена полей, которые следует скопировать в новую
таблицу;
<новая таблица> - имя создаваемой таблицы;
<внешняя база данных> - путь к внешней базе данных;
<источник> - имя существующей таблицы, из которой берутся записи

Упражнение 2. Создание таблицы с помощью SQL.
В режиме конструктора ввести управляющий запрос SQL, который должен создать
таблицу Новая1, состоящую из трех полей: имя (тип - текстовое), фамилия
(тип - текстовое) и дата рождения (тип - дата):

CREATE TABLE Новая
([Имя] TEXT,
[Фамилия] TEXT,
[Дата рождения] DATETIME)

Инструкция CREATE TABLE - запрос на создание новой таблицы.
CREATE TABLE <таблица> (<поле1> <тип> [(<размер>)] [<индекс1>]

[, <поле2> <тип> [(размер)] [<индекс2>] [,...]][, <составной_индекс>
[,...]])

где <таблица> - имя создаваемой таблицы;
<поле1>, <поле2> - имена полей таблицы;
<тип> - тип данных поля;
<размер> - размер текстового поля;
<индекс1>, <индекс2> - директивы (предложения) CONSTRAINT создания
простых индексов;
<составной_индекс> - директива (предложение) CONSTRAINT создания
составного индекса.

Предложение CONSTRAINT используется для создания индекса.
Для создания простого индекса используется предложение CONSTRAINT
(помещается за именем поля):
CONSTRAINT <имя_индекса> {PRIMARY KEY | UNIQUE |

REFERENCES <внешняя_таблица> [(<внешнее_поле1>, <внешнее_поле2>)]}
Предложение CONSTRAINT для создания составного индекса (помещается в
любом месте после определения его элементов):
CONSTRAINT <имя_индекса>

{PRIMARY KEY (<ключевое1>[, <ключевое2> [, ...]]) |

UNIQUE (<уникальное1>[, <уникальное2> [, ...]]) |

FOREIGN KEY (<ссылка1>[, <ссылка2> [, ...]])

REFERENCES <внешняя_таблица> [(<внешнее_поле1> [, <внешнее_поле2> [,
...]])]}
где
<имя индекса> - имя создаваемого индекса;
<ключевое1>, <ключевое2> - имена одного или нескольких полей, которые
будут ключевыми;
<уникальное1>, <уникальное2> - имена одного или нескольких полей,
которые будут включены в уникальный индекс;
<ссылка1>, <ссылка2> - имена одного или нескольких полей, включенных
во внешний ключ (ссылаются на поля в другой таблице);
<внешняя таблица> - имя внешней таблицы, которая содержит поля,
указанные с помощью аргумента <внешнее поле>;
<внешнее поле1>, <внешнее поле2> - имена одного или нескольких полей
во внешней таблице, на которые ссылаются поля, указанные с помощью
аргумента <ссылка1>, <ссылка2>.

Служебные слова:
UNIQUE - уникальный индекс (в таблице не может быть двух записей, имеющих
одно и то же значение полей, входящих в индекс);
PRIMARY KEY - первичный ключ таблицы (может состоять из нескольких полей;
упорядочивает записи таблицы);
FOREIGN KEY - внешний ключ для связи с другими таблицами (может состоять из
нескольких полей);
REFERENCES - ссылка на внешнюю таблицу.

Замечания:
. перед предложением CONSTRAINT не ставится запятая и не указывается имя
поля, если это предложение следует непосредственно за описанием
соответствующего поля; если же предложение CONSTRAINT не следует сразу за
описанием поля (например, записывается в конце инструкции), то перед ним
должна стоять запятая, а имя поля, по которому строится индекс, задается
в явном виде;
. вместо TEXT можно писать CHAR;
. имена полей, состоящие более чем из одного слова, заключаются в
квадратные скобки.
. каждый индекс имеет уникальное в пределах данной таблицы имя.
Упражнение 3. Создание таблицы с первичным ключом с помощью SQL.
Создать таблицу студент, состоящую из двух полей: номер студента
(целочисленное поле), имя (текстовое поле). Создать в таблице простой
индекс с именем индекс1 по значениям поля номер студента, объявить его
ключом таблицы.

Код:
create table студент
([номер студента] integer, имя text(15),
constraint индекс1 primary key([номер студента]));

Задание 1. Создать базу банных из трех таблиц
. Таблица "студент" (ключ - номер студента)
|номер |имя |дата |
|студента | |рождения |
|1 |Иванов |01.01.1987 |
|2 |Петров |02.02.1988 |
|3 |Сидоров |03.03.1989 |
|4 |Зайцев |04.04.1990 |


. Таблица "оценка"
|номер |номер |результа|
|студента |дисциплины |т |
|1 |1 |2 |
|1 |1 |3 |
|1 |2 |4 |
|2 |1 |5 |
|2 |2 |5 |
|3 |1 |5 |
|3 |1 |3 |


. Таблица "дисциплина"
|номер |название |
|дисциплины | |
|1 |история |
|2 |математика|
|3 |право |

Образец: SQL-инструкция создания таблицы "студент"
create table студент([номер студента] integer, имя text(15), [дата
рождения] datetime, constraint индекс1 primary key([номер студента]));