Создание удаленной базы данных InterBase

Автор работы: Пользователь скрыл имя, 28 Апреля 2012 в 14:12, лабораторная работа

Описание

Можно задать также одно или несколько ограничений для таблицы. Ограничения, указанные в описании после определения столбца, относятся к столбцу. Эти ограничения не применяются к таблице целиком, а распространяются только на столбцы таблицы. В стандарте SQL-92 (для любого уровня соответствия) ограничения должны иметь имена, хотя эти имена (внутренние) могут быть сгенерированы исполнительным механизмом СУБД, а не определены явно создателем таблицы. Ниже дан обзор типов ограничений. Подробная информация приводится в главе III в разделе "Сравнения". Возможны следующие ограничения:

Работа состоит из  1 файл

Poliklinika.docx

— 1.02 Мб (Скачать документ)

Отчет по лабораторной работе №2

Тема «Создание удаленной базы данных InterBase»

 

 

 

 

 

 

 

 

 

Проверил: Великая Я.Г

Оценка_________

Подпись_________

Выполнил: ст. гр.  141004

Калайда А.К

 

 

 

 

 

 

 

 

 

 

г.Белгород 2012

Ответы на контрольные  вопросы

 

  1. Конструкция INNER JOIN

 

Объединяет две таблицы, где каждая строка обеих таблиц в  точности соответствует условию. Если для строки одной таблицы не найдено  соответствия в другой таблице, строка не включается в набор.

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

Москва


Выбор по первичному ключу  и индексу положительно сказывается  на скорости выборки.

 

  1. Конструкция OUTER JOIN

 

Присоединение таблицы с  необязательным присутствием записи в  таблице. Также как и в случае с 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

 

  1. Конструкция FULL JOIN

 

К левой таблице присоединяются все записи из правой, соответствующие  условию (по правилам 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| 
REFERENCES

 

Ограничение FOREIGN KEY используется для таблицы, а ограничение REFERENCES — для столбцов. При определении  ограничения для таблицы после  ключевого слова FOREIGN KEY в круглых  скобках следует список имен колонок  таблицы, входящих в FOREIGN KEY. Последующий  синтаксис обоих вариантов ограничений  совпадает. За ключевым словом REFERENCES следует  имя таблицы, которая содержит родительский ключ, и далее в скобках указан список столбцов, относящихся к ключу. Это ограничение задает столбцы, входящие во внешний ключ, который  ссылается на родительский ключ той  же самой или (обычно) другой таблицы. Родительский ключ должен иметь ограничение  типа PRIMARY KEY или UNIQUE. При этом имена  его столбцов могут отсутствовать  в ограничениях FOREIGN KEY или REFERENCES. Заметим, что можно определить те действия, которые будут происходить при  изменении или удалении родительского  ключа, а также задать полное или  частичное совпадение внешнего и  родительского ключей, которые ведут  себя по-разному, когда присутствует NULL. Более подробная информация содержится в главе III в разделе "Ограничения".


 

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:

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)

 

 

  1. Ограничения домена

 

Домен-представляет собой  именованное описание столбца. После  определения домена его имя можно  использовать при описании других столбцов.

Перед использованием домена его нужно создать с помощью  оператора:

 

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 указывается гл. табл. Описание столбцов главной и подчинённой таблицы должны полностью совпадать.

Ограничение ссылочной целостности-именуемое  имя должно быть задано в операнде CONSTRAINT.

 

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