Автор работы: Пользователь скрыл имя, 28 Апреля 2012 в 14:12, лабораторная работа
Можно задать также одно или несколько ограничений для таблицы. Ограничения, указанные в описании после определения столбца, относятся к столбцу. Эти ограничения не применяются к таблице целиком, а распространяются только на столбцы таблицы. В стандарте SQL-92 (для любого уровня соответствия) ограничения должны иметь имена, хотя эти имена (внутренние) могут быть сгенерированы исполнительным механизмом СУБД, а не определены явно создателем таблицы. Ниже дан обзор типов ограничений. Подробная информация приводится в главе III в разделе "Сравнения". Возможны следующие ограничения:
Отчет по лабораторной работе №2
Тема «Создание удаленной базы данных InterBase»
Проверил: Великая Я.Г
Оценка_________
Подпись_________
Выполнил: ст. гр. 141004
Калайда А.К
г.Белгород 2012
Ответы на контрольные вопросы
Объединяет две таблицы, где каждая строка обеих таблиц в точности соответствует условию. Если для строки одной таблицы не найдено соответствия в другой таблице, строка не включается в набор.
SELECT *
FROM Person
INNER JOIN City ON Person.CityId = City.Id
Person.Name |
Person.CityId |
City.Id |
City.Name |
Андрей |
1 |
1 |
Москва |
Леонид |
2 |
2 |
Санкт-Петербург |
Сергей |
1 |
1 |
Москва |
Выбор по первичному ключу и индексу положительно сказывается на скорости выборки.
Присоединение таблицы с необязательным присутствием записи в таблице. Также как и в случае с inner join, условие по индексированным полям и первичному ключу ускоряет все виды outer join’ов.
LEFT OUTER JOIN
К левой таблице присоединяются все записи из правой, соответствующие условию (по правилам inner join), плюс все не вошедшие записи из левой таблицы, поля правой таблицы заполняются значениями NULL.
SELECT *
FROM Person
LEFT OUTER JOIN City ON Person.CityId = City.Id
Person.Name |
Person.CityId |
City.Id |
City.Name |
Андрей |
1 |
1 |
Москва |
Леонид |
2 |
2 |
Санкт-Петербург |
Сергей |
1 |
1 |
Москва |
Григорий |
4 |
NULL |
NULL |
RIGHT OUTER JOIN
Аналогично left outer join, но применяется для правой таблицы.
К правой таблице присоединяются все записи из левой, соответствующие условию (по правилам inner join), плюс все не вошедшие записи из правой таблицы, поля левой таблицы заполняются значениями NULL.
SELECT *
FROM Person
RIGHT OUTER JOIN City ON Person.CityId = City.Id
К левой таблице присоединяются все записи из правой, соответствующие условию (по правилам inner join), плюс все не вошедшие записи из правой таблицы, поля левой таблицы заполняются значениями NULL и плюс все не вошедшие записи из левой таблицы, поля правой таблицы заполняются значениями NULL
SELECT *
FROM Person
FULL OUTER JOIN City ON Person.CityId = City.Id
Person.Name |
Person.CityId |
City.Id |
City.Name |
Андрей |
1 |
1 |
Москва |
Сергей |
1 |
1 |
Москва |
Леонид |
2 |
2 |
Санкт-Петербург |
NULL |
NULL |
3 |
Казань |
Григорий |
4 |
NULL |
NULL |
4. Конструкция CROSS JOIN
Все возможные сочетания из обеих таблиц. Как уже говорилось выше, условие для этого типа оператора JOIN не указывается.
SELECT *
FROM Person
CROSS JOIN City
или
SELECT *
FROM Person, City
Этот вид соединения нужно использовать с осторожностью, время выполнения растет пропорционально произведению количества записей соединяемых таблиц и зачастую содержит избыточную информацию.
5. Оператор CREATE TABLE
create table session (
id_zachetka smallint Not Null Primary Key,
id_predmet smallint Not Null,
id_vid_sdachi char(30) Not Null,
otmetka char(30) Not Null)
Можно задать также одно или несколько ограничений для таблицы. Ограничения, указанные в описании после определения столбца, относятся к столбцу. Эти ограничения не применяются к таблице целиком, а распространяются только на столбцы таблицы. В стандарте SQL-92 (для любого уровня соответствия) ограничения должны иметь имена, хотя эти имена (внутренние) могут быть сгенерированы исполнительным механизмом СУБД, а не определены явно создателем таблицы. Ниже дан обзор типов ограничений. Подробная информация приводится в главе III в разделе "Сравнения". Возможны следующие ограничения:
NOT NULL |
В стандарте этот тип ограничения разрешается указывать только для столбца. В этом случае запрещено задавать значение NULL для столбца. | |
UNIQUE |
Этот тип ограничения требует, чтобы все значения столбца или комбинация его значений были уникальными. | |
PRIMARY KEY |
Это ограничение действует так же, как UNIQUE, за исключением того, что ни один из столбцов, указанных в ограничении PRIMARY KEY не может содержать NULL, как это разрешено для UNIQUE. Заметим, что это не относится к приложениям, соответствующим уровню Entry стандарта SQL-92 (см. подраздел "Уровни соответствия"). Кроме того, ограничение PRIMARY KEY несколько отличается от ограничения первичного ключа (см. пояснения ниже). Это ограничение может использоваться только один раз для каждой отдельно взятой таблицы. | |
CHECK |
За этим ограничением в скобках указан предикат, который использует значения столбцов в выражении для вычисления значения и может принимать значение TRUE, FALSE или UNKNOWN (если присутствует NULL). Это ограничение считается нарушенным, когда предикат принимает значение FALSE (см. раздел "Предикаты"). | |
FOREIGN KEY| |
Ограничение FOREIGN KEY используется
для таблицы, а ограничение REFERENCES
— для столбцов. При определении
ограничения для таблицы после
ключевого слова FOREIGN KEY в круглых
скобках следует список имен колонок
таблицы, входящих в FOREIGN KEY. Последующий
синтаксис обоих вариантов |
6. Оператор ALTER
Для изменения структуры существующей таблицы можно использовать оператор ALTER TABLE. Применяя его, можно добавить или удалить поле или серверное ограничение. Существует четыре разновидности оператора ALTER TABLE.
Первая разновидность этого оператора используется для добавления колонки к таблице, и ее синтаксис имеет вид:
ALTER TABLE table ADD [COLUMN] column datatype [(size)] [CONSTRAINT sinlge-column-constraint]
В запросах такого вида определяется
имя таблицы, имя нового поля, его
тип данных и, если нужно, размер. Помимо
этого можно указать серверное
ограничение, связанное с данным
полем. Например, для добавления поля
Phone к таблице Simple, созданной ранее,
можно выполнить следующий
ALTER TABLE Simple ADD Phone varchar(30)
Вторая разновидность оператора ALTER TABLE применяется для добавления серверных ограничений к таблице, а ее синтаксис имеет вид:
ALTER TABLE table ADD CONSTRAINT constraint
Такие запросы позволяют только добавлять индексы, позволяющие использовать соответствующие поля в качестве первичных или внешних ключей.
Третья разновидность предложения ALTER TABLE применяется для удаления поля из таблицы:
ALTER TABLE table DROP [COLUMN] column
Ключевое слово COLUMN использовать не обязательно. Например:
ALTER TABLE Simple DROP Phone
Обратите внимание на то,
что для удаления проиндексированных
полей следует сначала удалить
индекс. Это можно сделать с
помощью четвертой
ALTER TABLE table DROP CONSTRAINT index
Ниже приведен пример такого запроса:
ALTER TABLE Simple DROP CONSTRAINT PrimaryKey
7. Оператор DROP
Для удаления таблиц или индексов можно использовать оператор DROP, имеющий две разновидности. Первая из них применяется для удаления таблицы из базы данных:
DROP TABLE table
Вторая разновидность используется для удаления индекса:
DROP INDEX index ON table
8. Ограничения сущностей
В ограничения этого типа не рассматривается весь столбец интерес представляет только конкретная строка.
Включает:
-ограничение primary key
-ограничение уникальности
ALTER TABLE List
ADD CONSTRAINT PR_id List PRIMARY KEY (id List)
Домен-представляет собой именованное описание столбца. После определения домена его имя можно использовать при описании других столбцов.
Перед использованием домена его нужно создать с помощью оператора:
CREAT DOMAIN <имя домена> [AS]
<описание домена>
<имя столбца><имя домена>
В отличие от ограничений для столбца имя домена нельзя использовать в выражениях для ограничения вместо имени домена используется имя VAUE.
CREAT DOMAIN D_Position AS VARCHAR (20) NOT NULL;
CREAT DOMAIN D_Price AS FLOAT CHECK (VALUE>0);
Пример:
CREAT TABLE Position
Code INTEGER NOT NULL PRIMARY KEY,
Position D_Position(->имя домена)
10. Ограничения ссылочной целостности
Действие ограничения
ссылочной целостности
[CONSTRAINT <имя ограничения>]
FOREIGN KEY(список столбцов)
REFERENCES<имя гл. табл.> [<список ключа гл. табл.>]
При задании ограничения ссылочной целостности ключу гл. табл. Ставится соответствующий ключ подчинённой таблицы.
Для описания внешнего ключа используется операнд FOREIGN. В операнде REFERENCES указывается гл. табл. Описание столбцов главной и подчинённой таблицы должны полностью совпадать.
Ограничение ссылочной целостности-
11. Ограничения столбца
Ограничение столбца задавать не обязательно.
Использование ограничения
столбца позволяет
Ограничение столбца имеет след. формат:
[DEFAULT {<значение> NULL| USER} ]
[NOT NULL]
[COLLATE <порядок сортировки>]
[CHECK<условие>]
Оператор DEFAULT определяет для столбца значение по умолчанию, которое автоматически заносится столбец при добавлении в таблицы новый записи.
В качестве значений по умолчанию можно указать:
Константу. Т.Е. в столбец заносится указанное значение
NULL – в столбец заносится нулевое значение
Оператор COLLATE определяет порядок сортировки строковых значений.
Операнд CHECK позволяет установить для столбца разнообразные условия управления его значениями.
Чтобы задать диапазон ограничений
для столбца используется операция
сравнения или конструкция
BETWEEN <минимальное значение> AND <макс.знач.>
Пример:
CREATE TABLE Test
Name VARCHAR (20) NOT NULL, - - - - - - - > 1 опр.
Price FLOAT CHECK (Price>0), - - - - - - - - - > 2 опр.
Number INTEGER CHECK (Number BETWEEN 1 AND 1000);- - - >3опр.
12. Создание представления
Представления (просмотр) является логической таблицей записи в которую отобраны с помощью оператора SELECT.
Преимущество заключается в том, что можно один раз отобрать записи и использовать их в дальнейшем без повторного выполнения оператора SELECT.
Создание представления:
CREATE VIEW < имя просмотра> [список столбцов]
AS <конструкция SELECT >
[WITH CHECK OPTION]
Имя просмотра после его создания можно использовать как имя физической таблицы.
13. Удаление представления
Синтаксис удаления представления из базы данных подобен синтаксису удаления базовых таблиц:
DROP VIEW <имя представления>
В этом нет необходимости,
потому что содержимое представления
не является созданным и сохраняется
на период действия определенной команды.
Базовая таблица, из которой представление
выводится, не задействуется, когда
представление удалено. Помните, вы
должны являться владельцем представления,
чтобы иметь возможность
14. Хранимые процедуры
Хранимая процедура
сервере и вызываемую из приложения клиента. Использование этих объектов увеличивает скорость доступа к БД по следующим причинам:
вместо текста запроса, который может быть достаточно длинным, серверу передается по сети относительно короткое обращение к хранимой процедуре;
хранимая процедура, в отличие от запроса, не требует предварительной синтаксической проверки.
Язык хранимых процедур
Для написания хранимых процедур и триггеров используется язык храни-
мых процедур. Язык хранимых процедур сервера InterBase представляет со-
бой процедурный алгоритмический язык. Он включает операторы, позво-
ляющие управлять ходом вычислительного процесса (условный оператор и
оператор цикла). Кроме того, язык хранимых процедур обладает рядом воз-
можностей языка SQL.
Пример:
CREATE PROCEDURE add_predmet
(id_predmet smallint, name char(30), FIO_prepod char(30))
AS
BEGIN
INSERT INTO Predmets(Predmets.id_predmet, Predmets.name, Predmets.FIO_prepod)
VALUES (:id_predmet, :name, :FIO_prepod);
SUSPEND;
END
Пример:
CREATE PROCEDURE del_stud(Propiska char(30))
AS
BEGIN
DELETE FROM Student WHERE Student.Propiska=:Propiska;
SUSPEND;
END
15. Генераторы
Генератор - это специальный объект базы данных, который генерирует уникальные последовательные числа. Эти числа могут быть использованы в качестве идентификаторов (например код клиента, номер счета и т.п.). Для создания генератора необходимо использовать оператор DDL
CREATE GENERATOR generatorname;
При выполнении такой команды
происходит 2 действия:
1. На специальной странице БД отводится
4 байта для хранения значения генератора
2. В системной таблице RDB$GENERATORS заводится
запись, куда помещается имя генератора
и его номер (фактически смещение на странице
генераторов).
После создания генератора его значения можно получать при помощи функции
GEN_ID(generatorname, inc_value)
где inc_value - число, на которое необходимо прирастить значение генератора.
Генераторы возвращают значения (и сохраняют свои значения на диске) вне контекста транзакции пользователя. Это означает, что если генератора было увеличено с 10 до 11 (инкремент 1), то даже при откате транзакции (ROLLBACK) значение генератора не вернется к предыдущему. Вместе с этим гарантируется что каждому пользователю будет возвращено уникальное значение генератора.
Информация о работе Создание удаленной базы данных InterBase