Материал: !Лабораторный практикум ТБД (задание)

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

2 from u;

COUNT(L)

----------

3

SQL> select count(*) 2 from u;

COUNT(*)

----------

4

*SUM – арифметическая сумма всех выбранных значений данного поля.

*AVG – усредненное значение всех выбранных значений данного поля.

*MAX - наибольшее из всех выбранных значений данного поля.

*MIN - производит наименьшее из всех выбранных значений данного поля.

Только числовые поля могут использоваться с SUM и AVG.

С COUNT, MAX, и MIN, могут использоваться и числовые или символьные поля. Когда они используются с символьными полями, MAX и MIN будут транслировать их в эквивалент ASCII, который должен сообщать, что MIN будет означать первое, а MAX последнее значение в алфавитном порядке

ПРИМЕР:

Посчитать на какую сумму куплены детали с кодом 31 за все время:

select Sum((KOLVO)*(PRICED)) from zakupkad where koddz=31;

SUM((KOLVO)*(PRICED))

---------------------

480

Использование скалярных выражений:

21

SELECT MAX ( blnc + (amt) ) FROM Orders;

Пример 9. Having:

Нельзя использовать агрегатную функцию в предложении WHERE (если вы не используется подзапрос), потому что предикаты оцениваются в терминах одиночной строки, а агрегатные функции оцениваются в терминах групп строк. Это означает, что нельзя сделать что-нибудь подобно следующему:

SELECT snum, odate, MAX (amt) FROM Oreders

WHERE MAX ((amt)) > 3000.00 GROUP BY snum, odate;

Это будет отклонением от строгой интерпретации ANSI. Чтобы увидеть максимальную стоимость приобретений свыше $3000.00, вы можете использовать предложение HAVING. Предложение HAVING определяет критерии используемые чтобы удалять определенные группы из вывода, точно также как предложение WHERE делает это для индивидуальных строк. Правильной командой будет следующая:

SELECT snum, odate, MAX ((amt)) FROM Orders

GROUP BY snum, odate HAVING MAX ((amt)) > 3000.00;

Создание представлений.

Представление (view) – это один из объектов БД, представляющий собой хранимый запрос, с которым можно работать, как с таблицей, т.е. добавлять, редактировать, удалять данные. Это удобно, т.к. чаще всего используются данные многих таблиц. Обычно сначала создаются представления, а потом на их основе выводятся данные для пользователя в клиентском приложении. В таком случае, пользователю можно дать полный доступ на какое-то представление, не давая доступа на таблицу.

Общий синтаксис:

22

create view имя_представления as

текст

[атрибуты]

Пример:

CREATE VIEW US AS select l , p

from u WITH READ ONLY;

Выборка:

Select * from us;

23

Лабораторная работа №3-4

Цель. Разработка основных объектов базы данных и связей между ними.

Задачи. Освоить способы создания первичного ключа; суррогатного ключа, с помощью последовательностей; отработать ввод данных, создание связей и индексов, изменение структуры таблицы с контрольными ограничениями, создание представлений.

Описание предметной области.

Для магазина торгующего картинами разрабатывается база данных.

После системного анализа предметной области, была разработана инфологическая модель, на основании которой была создана даталогическая модель, содержащая пять отношений.

Таблица CUSTOMER содержит данные о покупателях Таблица ARTIST содержит данные о художниках Таблица WORK содержит данные о картинах Таблица TRANSACTION содержит данные о сделках

Таблица CUSTOMER_ARTIST_INT содержит данные о предпочтениях покупателя к определенному художнику.

Последовательность выполнения.

Создание первичного ключа двумя способами

Создать таблицы CUSTOMER, ARTIST и CUSTOMER_ARTIST_INT

Замечание! В листинге есть ОШИБКИ, поэтому не советую «не глядя» копировать этот текст в SQL* Plus!!! (Л.И.)

CREATE TABLE CUSTOMER( CustomerID int NOT NULL, Name varchar(25) NOT NULL, Street varchar(30) NULL, City varchar(35) NULL,

24

State varchar(2) NULL, Zip varchar(5) NULL,

Area_Code varchar(3) NULL, Phone Number varchar(S) NULL;

ALTER TABLE CUSTOMER

ADD CONSTRAINTЕ CustomerPK PRIMARY KEY (CustomerID); CREATE INDEX CustonerNameIndex ON CUSTOMER(Name);

CREATE TABLE ARTIST(

ArfistID int PRIMARY KEY, Name varchar(25) NOT NULL, Nationality varchar(30) NULL, Birthdate date NULL, DeceasedDate date NULL);

CREATE UNIQUE INDEX Artist NameIndex ON ARTIST(Name);

CREATE TABLE CUSTOMER_ARTIST_INT( ArtistID int NOT NULL,

CustomerID int NOT NULL);

ALTER TABLE CUSTOMER)_ARTIST_INT

ADD CONSTRAINT CustomerArtistPK PRIMARY KEY ( ArttstID, CustomerID ),

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

!!!Для создания композитного первичного ключа можно использовать только первый(?) метод, поскольку в CREATE TABLE можно указывать свойство PRIMARY KEY только для одного столбца.

Для упрощения работы создайте файл Createl.sql для его запуска с помощью

Start Createl

Отобразите структуру всех трех таблиц на экране.

Создание суррогатных ключей с помощью последовательностей

Create Sequence CustID Increment by 1 start with 100:

25

Источник: https://studfile.net/preview/16527141/