Темы 1-2

advertisement
Занятие 4 (5 мая)
Часть 1 (теоретическая). Язык запросов SQL.
Реляционные модели и реляционные языки
 Реляционные модели
 Классификация реляционных языков
 Основные характеристики языка SQL
Основы языка SQL
 Типы данных
 Создание таблицы
 Изменение структуры таблицы
 Удаление таблицы
 Ограничения
 Индексы
 Ввод данных в таблицы
Часть 3 (практикум).
 Создание таблиц базы данных.
 Модификация таблиц.
 Ввод данных в таблицы.
Упражнение 1. Работа с БД Duma_1995.mdb.
С помощью конструктора запросов Access cконструировать запрос на создание таблицы
"новая" по образцу таблицы "депутаты" с двумя полями – "имя" и "номер". Скопировать в
новую таблицу 10 первых записей таблицы "депутаты".
Изучить построенную СУБД инструкцию SQL, соответствующую этому запросу.
Инструкция 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([номер студента]));
Download