Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
языки БД.doc
Скачиваний:
4
Добавлен:
26.11.2018
Размер:
153.6 Кб
Скачать

Создание таблицы

Для создания таблицы используется оператор CREATE TABLE, определяет новую таблицу и подготавливает к приему данных, относится к языку определения данных DDL и имеет в стандарте SQL92 следующее формальное описание:

CREATE TABLE имя таблицы

(определение поля [,определение поля, … n],

ограничение на таблицу [,…n]);

Где: имя таблицы – имя создаваемой таблицы

Определение поля имеет вид: имя поля тип [(размер)] [ограничение на поле]

Существуют следующие ограничения, накладываемые на поле: NULL, NOT NULL, PRIMARY KEY, FOREIGN KEY, UNIQUE, DEFAULT

NULLможет содержать неопределенные значения

NOT NULLстолбец не может содержать неопределенные значения

PRIMARY KEYзадает первичный ключ отношения

UNIQUEзадается уникальность значений в столбце, такому столбцу автоматически устанавливается NOT NULL

FOREIGN KEY – внешний ключ

DEFAULTограничение по умолчанию

Допустимые имена в Access: названия таблиц, полей, включающих пробелы, а также символы национальных кодировок, заключаются в прямоугольные скобки. Допустимые имена имеют длину до 64 символов, не содержат «.», «!», символы «[]», и не начинаются с пробелов.

Ограничения для таблицы (table constraint) и ограничения для столбца (column constraint), называемые также ограничениями целостности, накладывают определенные условия на вводимые в таблицу данные.

Ограничения для столбца указываются непосредственно после описания столбца, а ограничения для таблицы - через запятую после описания любого столбца.

Первичный ключ таблицы – столбец (или столбцы), который уникально идентифицирует каждую строку в таблице. Кроме того первичный ключ обеспечивает ссылочную целостность данных в нескольких таблицах при наличии внешних ключей.

Можно создать первичный ключ с помощью отдельного предложения – это ограничение на таблицу

Примеры 1

CREATE TABLE T(

AА COUNTER NOT NULL,

ВА CHAR(1) UNIQUE,

СА CHAR(20) UNIQUE,

PRIMARY KEY (AA));

Если первичный ключ строится по столбцу, то столбцу приписывается атрибут PRIMARY KEY.

Примеры 2

CREATE TABLE T1(

A1 COUNTER NOT NULL PRIMARY KEY,

A2 CHAR(1) UNIQUE,

A3 CHAR(20) UNIQUE);

Таблица Т1 с полями А1,А2,А3, поле А1 – поле с первичным ключом.

Т1

А1

А2

А3

1

A

100

2

B

200

3

C

300

4

D

300


Внешний ключ

Ссылочную целостность - в реляционной базе данных – это согласованность между связанными таблицами. Ссылочная целостность обычно поддерживается путем комбинирования первичного ключа и внешнего ключа. Для соблюдения ссылочной целостности требуется, чтобы любое поле в таблице, объявленное внешним ключом, могло содержать только значения из поля первичного ключа родительской таблицы …» Следует отметить, что типы данных столбцов, используемых в этом ограничении, должны совпадать, а типы таблиц (постоянная базовая таблица, глобальная временная таблица, локальная временная таблица) родительского и внешнего ключа - соответствовать друг другу

FOREIGN KEY (имя поля внешнего ключа) REFERENCTS имя родительской таблицы

REFERENCES table (fields list) - ограничение требует совпадения значений столбцов данной таблицы с указанными столбцами родительской таблицы (Пример 3).

FOREIGN KEY (fields list) - это ограничение по внешнему ключу аналогично ограничению REFERENCES для столбцов и гарантирует, что все значения, указанные во внешнем ключе, будут соответствовать значениям родительского ключа, обеспечивая ссылочную целостность.

Пример 3

Рассмотрим создание в таблице внешних ключей.

T2

C1

C2

A1

C3

1

123

1

ff

2

456

2

gg

3

789

3

hh

4

101

4

ii

CREATE TABLE T2 (

C1 COUNTER NOT NULL PRIMARY KEY,

C2 CHAR(3) UNIQUE,

A1 INT NOT NULL

FOREIGN KEY (A1) REFERENCES T1,

C3 CHAR(2) NOT NULL);

В этой таблице поле А1 является внешним ключом и связывается с помощью предложения REFERENCES с одноименным полем таблицы Т1, которое является первичным ключом.

Изменение структуры таблицы

Для изменения таблицы предназначена команда ALTER TABLE имя таблицы (

{ADD, MODIFY, DROP} имя поля [тип] [NOT NULL]

[,ADD, MODIFY, DROP} имя поля [тип] [NOT NULL]]…)

Изменение структуры таблицы может состоять в добавлении (ADD), изменении (MODIFY), и удалении (DROP) одного или нескольких столбцов таблицы. Правила записи такие же, как для создания

Пример 4

В созданной ранее таблице Т1 необходимо добавит еще одно поле.

ALTER TABLE T1 ADD A4 int;

Для изменения типа данных поля используется команда ALTER COLUMN

ALTER TABLE имя таблицы

ALTER COLUMN имя поля тип

Пример 5

ALTER TABLE T1

ALTER COLUMN A4 char(5)

При удалении столбца из таблицы удаляются все данные, при этом столбец не должен быть единственным в таблице.

ALTER TABLE имя таблицы

DROP [COLUMN] имя поля

Пример 6

ALTER TABLE T2

DROP C3

Пример 7

ALTER TABLE T2

DROP A1

Ключевое поле не может быть удалено.

Удаление таблицы

Команда DROP TABLE имя-таблицы

При удалении таблицы существуют ограничения – операцию нельзя выполнить, если на таблицу с помощью ограничений целостности FOREIGN KEY ссылаются другие таблицы. Для выполнения операции такие ограничения целостности необходимо предварительно удалить.

DROP TABLE T2

Создание SQL-запросов

SQL-запрос – это структурированный язык выбора данных из одной или нескольких таблиц.

Команда SELECT

Для формирования запроса используется команда SELECT.

Обобщенный синтаксис:

SELECT [DISTINCT] Список Выбираемых Полей

FROM Список Таблиц

[WHERE Условие Выборки]

[GROUP BY Условие Группировки]

[HAVING Условие ограничения, накладываемое на группу]

[ORDER BY Условие Упорядочивания]

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

По умолчанию в выборку включаются все строки, опция DISTINCT (отличный от других) отображает только неповторяющиеся строки. Применяется в команде SELECT только один раз ко всему списку выбора.

Команда INTO направляет запрос в новую таблицу.

В списке выбираемых полей необходимо перечислить поля разделять запятой. В конце запроса ставится точка с запятой. При выборке всех полей ставится *.

Дано:

Таблица "Pokup" (Покупатели), с полями:

Фамилия Cfam

Код товара Nkod

Вид оплаты Cvid

Стоимость товара Ntov

Стоимость доставки Ndos

Дата поступления заявки Dpos

Дата и время выполнения Tvip

Pokup

Cfam

Nkod

Cvid

Ntov

Ndos

Dpos

Tvip

Гребенев А. Н.

441

безналичный

389.00

12.00

12/04/98

13/04/98 10:40:00

Гребенев А. Н.

910

безналичный

500.00

56.00

12/04/98

12/04/98 03:10:00

Акимченко В. Г.

310

безналичный

560.00

20.00

13/04/98

15/04/98 02:50:00

Звягинцев Р. Т.

910

безналичный

125.00

23.00

15/04/98

15/04/98 09:30:00

Скрынников Е. В.

321

безналичный

498.00

19.00

12/04/98

13/04/98 10:25:00

Степанова Е. Д.

321

наличный

124.00

8.00

11/04/98

13/04/98 09:15:00

Шараева Е. Н.

315

наличный

875.00

100.00

10/04/98

12/04/98 10:10:00

Денисов А. В.

360

наличный

1200.00

267.00

14/04/98

15/04/98 09:30:00

Таблица "Tovary" (Товары):

Код товара Nkod

Наименование товара Cnaim

Цена Nzena

Сорт Nsort

Tovary

Nkod

Cnaim

Nzena

Nsort

441

Лак паркетный

38.90

1

321

Кафель отделочный

124.00

1

910

Обои

23.00

2

310

Зеркало

560.00

1

315

Краска

25

3

360

Натяжной потолок

200

1

520

Клеенка

24

1

Импортировать заданные таблицы в новую базу данных.

Создать запросы к таблицам Pokup и Tovary, используя команду SELECT

  1. Выбрать поля "Фамилия" и "Дата поступления заявки" из таблицы "Pokup".

SELECT Cfam, Dpos

FROM Pokup;

  1. Выбрать все поля таблицы "Pokup".

SELECT Pokup.*

FROM Pokup;