Занятие 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([номер студента]));