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