Распределенные базы данных

Этапы развития СУБД. Основные функции стандартного интерактивного приложения. Расписание транзакций, отдельные элементы кортежей. Модель с блокировками для записи. Встроенный язык, команды для работы с файлами. Защита от удаления содержимого базы данных.

Рубрика Программирование, компьютеры и кибернетика
Вид курс лекций
Язык русский
Дата добавления 06.12.2011
Размер файла 55,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Лекция №1. Введение

Этапы развития СУБД.

1) Большие машины, IBM 360, ЕС ЭВМ. СУБД IMS, OKA.

2) Перф. ЭВМ - Персональные СУБД. FoxbaseII, FoxProVisualFoxPro, Dbase.

3) Распределенные базы данных - реляционные модели. Архитектура клиент-сервер, многопользовательский режим, многоплатформенные системы.

4) Интернет-интранет. Браузер.

Типы баз данных:

1) Клиентские: FoxPro, Access

2) Серверные: MS SQL, Oracle

3) Программные средства для работы с БД: Delphi, VisualBasic

Режимы работы с БД:

1)Однопользовательские

2)Многопользовательские ->

2a) Последовательные;

2б)Параллельные ->

2б1)С центр.БД(к ней имеют доступ неск. юзеров);

2б2) С РБД (БД разбита на фрагменты в неск. узлх сети)

Факторы стимулирующие распределенные обработка данных:

1)Снижение стоимости процессоров;

2)Повышение квалификации конечного пользователя

3)Творчество пользователя;

4)Развитие сетевого программного обеспечения;

5)Теледоступ к БД;

6)Секретность;

7)Перегрузка центрального процессора при работе с центр. БД

Классификация систем по способу обработки данных:

Разделенные системы (тот же рис, но подписей нет) - в отличие от пред. СУБД, эта имеет равную структуру и ее фрагменты создаются разными программистами).

Реплицированные системы (тот же рис., но подписи X,Y,Z) - дублированные БД для повышения надежности

Гетерогенные системы (тот же рис(только надпись глоб. сеть), но подписи Универ СУБД, Аптечная СУБД...) - создавались разное время независимо друг от друга

ODBC - Open Database Connectity

BDE - Borland Database Engine

CGI - Common Gateway Interface

СУРБД Функции:

1)Автоматическое определение машины, на которой хранятся требуемые запросу данные;

2)Декомпозиция общего запроса на частные подзапросы;

3)Планирование обработки запросов;

4)Передача частных подзапросов и их исполнение на удаленных ЭВМ;

5)Поддержание копий дублированных данных;

6)Управление параллельным доступом к базе данных многих пользователей;

7)Обеспечение целостности распределенной базы данных.

Лекция №2. Архитектура клиент сервер

Основные функции стандартного интерактивного приложения:

1) Функции ввода вывода (Presentationlogic, чтение запись экранной формы, управление экраном, обработка движений мыши и нажатий клавиш клавиатуры);

2) Функция решения задач приложения (Businesslogic, алгоритмы решения конкретных задач приложения);

3) Обработка данных внутри приложения (Databaselogic);

4) Функция управления информационными ресурсами (DBMS - DataBase Manager System);

5) Служебные функции(предназначены для связывания предыдущих составляющих)

Модель удаленного доступа

1) Модель файлового сервера (FileServer). В данной модели все 5 функций выполняются на клиенте. Нед-к - медленная работа из-за вып-ия всех функций на клиенте. БМД - база метаданных (данных о данных).

2)Модель Remote DataAccess (RDA) - система с толстым клиентом. Нед-к - медленная работа из-за перегрузки сервера дублированием SQL-запросов

3)Модель Сервера БД- система с тонким клиентом

Многоуровневые модели. Модель Сервера приложений. Более гибкая модель, но требует 3 ЭВМ а не 2

Эволюция появления архитектуры-сервер

Нулевой этап - управление данными и взаимодействие с пользователями

Один-к-одному (1 сервер обслуживает 1 клиента)

Архитектура с выделенным сервером (многопотоковая односерверная, на всех пользователей один процесс на сервере)

Размещено на http://www.allbest.ru/

С исп-ием диспетчера(многоплатформенная система)

Размещено на http://www.allbest.ru/

Архитектура распределенных СУБД

Пример: допустим есть три отношения

Студент (номер, фио, факультет,стипендия)

Факультеты (номер, наименование)

Дисциплины(номер, наименование, количество часов, номер фака)

Студенты

100 катя 1 +

101 петя 1 -

102 Саша 2 +

Факультеты

самолетостроение

двигатели

Дисциплины

1 Летат аппараты 1 100

2 ТММ 2 120

3 Двигатели 2 100

Лекция №3. Параллельные процессы

Транзакции - единица взаимодействия с БД. Транзакция переводит БД из одного согласованного состояние в другое. В промежутке транзакция представляет собой некоторое множество операций.

В случае успешном окончании операции в журнале делается запись «Commit», иначе транзакция будет аннулирована и запись будет - «Rollback».

Начала транзакции может быть из любого оператора языка sql (select, update, insert, delete).

Свойства транзакций:

1) атомарность - выполняется все, или ничего;

2) согласованность - перевод базы данных из одного согласованного состояния в другое;

3) изоляция - транзакции отделены одна от другой;

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

Проблемы параллельных процессов(конфликты транзакций):

1)потеря результатов обновления(запись/запись);

2)незафиксированная зависимость;

3)чтение «грязных» данных (запись/чтение);

4)несовместимый анализ(чтение/запись). Проблем не возникает,когда происходит чтение/чтение.

Способы решения конфликтов:

1) предоставлять конкурирующим транзакциям разные копии БД;

2)Притормаживать транзакции блокировками LOCK-UNLOCK

Проблемы блокировок:

1)Бесконечное ожидание;

2)Тупики

Расписание транзакций - последовательность элементарных шагов выполняемых транзакций. Виды графиков:

1)Последовательный - транзакции вып-ся строго по очереди;

2)Чередующийся (возникают 4 проблемы выше).

Черед. график наз-ся сериализуемым, если его рез-т не будет отличаться от рез-тов послед. графика.

Модель транзакций - это последовательность операций LOCK-UNLOCK в виде ф-ции f (LOCK-UNLOCK)

Блокирование базы данных

Блокирование всей бд

Отношения (таблицы)

Кортеж (строка)

Отдельные элементы кортежей

Лекция №4. Расписание транзакций

T=(q1,q2,…qn); P = (T1,T2,…,Tn)

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

Модель транзакций Lock - unlock

Схема блокировок разблокировок

Расписание

A

B

C

1

T1:LOCK A

A0

B0

C0

2

T2:LOCK B

A0

B0

C0

3

T2:LOCK C

A0

B0

C0

4

T2:UNLOCK B

A0

F3(B0)

C0

5

T1:LOCK B

A0

F3(B0)

C0

6

T1:UNLOCK A

F1(A0)

F3(B0)

C0

7

T2:LOCK A

F1(A0)

F3(B0)

C0

8

T2:UNLOCK C

F1(A0)

F3(B0)

F4(C0)

9

T2:UNLOCK A

F5(F1(A0))

F3(B0)

F4(C0)

10

T3:LOCK A

F5(F1(A0))

F3(B0)

F4(C0)

11

T2:LOCK C

F5(F1(A0))

F3(B0)

F4(C0)

12

T1:UNLOCK B

F5(F1(A0))

F2(F3(B0))

F4(C0)

13

T3:UNLOCK C

F5(F1(A0))

F2(F3(B0))

F7(F4(C0))

14

T3:UNLOCK A

F6(F5(F1(A0)))

F2(F3(B0))

F7(F4(C0))

Это несереализуемое ибо есть циклы (5-7 шаги)

Если сериализуемо то значит не может быть циклов блокировки.

Протокол, гарантирующий сериализуемость: в расписании все операции блокирования для всех эл-тов должны предшествовать всем операциям разблокирования.

Модель с блокировками для чтения и записи

RLOCK - READ LOCk

WLOCK - WRITE LOCK

Есть X-блокировка eXclusiveLock - блокировка без взаимного доступа

S - блокировка SharedLock - блокировка с взаимным доступом.

1

T3:WLOCK A

2

T4:RLOCK B

3

T3:UNLOCK A

4

T1:RLOCK A

5

T4:UNLOCK B

6

T2:UNLOCK B

7

T2:RLOCK A

8

T3:UNLOCK B

9

T1:WLOCK B

10

T2:UNLOCK A

11

T1:UNLOCK A

12

T4:WLOCK A

13

T1:UNLOCK B

14

T2:RLOCK B

15

T4:UNLOCK A

16

T2:UNLOCK B

Лекция №5. Язык запросов SQL

1989 - SQL1

1992 - SQL2

1998 - SQL3

Основныеоператоры

Определение данных

Create table

Drop table

Alter table

Create table

Drop view

Create view

Drop index

Операции манипуляции данными

Insert

Update

Delete

Select

Управление транзакциями

Commit

Rollback

Save_Point

Программный SQL

Declare - объявить курсор

Open - открыть курсор

Fetch - передать поля таблицы в переменную

Close- закрыть

Prepare - подготовить

Execute - выполнить

STUD (NS,FIO,GR,SPEC,STIP)

DISC (ND,NameD,GR)

SD(NS,ND,OC)

Select* From STUD Order by fio

Select ns,fio from stud where gr = 4407 Order by fio

Лекция №6. Язык SQL. Встроенный язык SQL

Однострочный запрос

SELECT <>INTO <> FROM <> WHERE <>

STUD (NS,FIO,GR,…)

Declare p1 INT

DECLARE p2 char(20), p3 char(6)

SET p1 = 205

SELECT * INTO з2бз3бз4 FROM STUD WHERE NS = p1

Многострочный запрос

DECLAREqCURSOR

FROM (SELECT * FROM STUD WHERE SPEC = 230102)

OPEN q

WHILE .T.

FETCH q INTO A,B,C,D

DO PROC

END WHILE

CLOSE q

Описание таблиц

S (NП, ФИО, Состояние)

P ( ND, Наимен, цвет, вес, город)

J (NИ, Название, город)

SPJ (NП, NDNИ, город)

Программа с курсорами

MAIN

DEFINEPS * LIKES.*

DEFINEPJ * LIKEJ.*

DECLARE CS CURSOR FOR

SELECT NП, ФИО, Сост, Гор

From S

ORDER BY NП

DECLARE CJ CURSOR FOR

SELECTNИ, Название, Гор

From J

WHERE NИ in (select NИ from SPJ WHERE NП = s. NП)

ORDER BY NИ

OPEN CS

LET V=1 B

LET R=1 B

WHILE V

IF STATUS = NOTEFOUND

THEN MESSAGE

“NO ROW FOUND”

EXIT WHILE

END IF

FETCH CS INTO PS.NП, PS.ФИО, PS. Сост, PS. Город

DISPLAY PS.NП, PS.ФИО, PS. Сост, PS. Город

OPEN CJ

WHILE К

FETCHCJINTOPJ.NU, PJ.НАЗВАНИЕ, PJ.Город

DISPLAYPJ.NU, PJ.НАЗВАНИЕ, PJ.Город

END WHILE

CLOSE СО

END WHILE

CLOSE CS

END MAIN

Динамический SQL

PREPARE = подготовить

EXECUTE = выполнить

DEFINE = исходный код sql

PREPARE объект FRO Mисходный код EXECUTE объект sql

SELECTГ.НГ, Г.Город, Дата, температура

«ВЗЯТЬ ОДЕЖДУ» =

CASE

WHENC. Температура < 0 THEN«Зимняя одежда»

WHENC.ТемператураBETWEEN 0 AND 10THEN «Весенняя одежда»

WHENC. Температура BETWEEN 11 AND 30THEN «Летняя одежда»

ELSE

THEN«Погода не определена»

END

FROMГ,С

WHEREГ.НГ = С.НГ

ORACLE

Файлы:

1) Файлы данных;

2) Управляющие;

3) Файл журнала повторов.

Фоновые процессы: smon (системюмонитор), PMON(монитор процессов), dbwr (процесс записи в БД), lgwr (процесс записи в журнал), ckpt (генератор контр. точек)

PGA - область памяти выделяемая для каждого серверного процесса содержащего данные и управляющую информацию этого процесса. Структура памяти = PGA+SGA

Серверный процесс - процесс обрабатывающий запросы клиентов

Табличное пространство - набор состоящий из одного или нескольких файлов данных:

System (хранит служ. данные и нах-ся всегда в опер. сост-ии) и SYS (вспомогательное, содержит компоненты БД)

Логические структуры:

1)БД;

2)Схема;

3)Табл.пространство;

4)Сегмент;

5)Экстент;

6)Блок oracle.

Физические структуры:

1)Файлы данных;

2)Файлы параметров;

3)Журналы;

4)Блоки ОС

Отношения для примера:

Customers - инфа о покупателях

Product-types - типы товаров

Products - инфа о товарах

Employees - инфа о служащих

Purchases - какие товары куплены какими покупателями

Salary-grades - информация о разрядной сетке заработной платы сотрудников

CREATE TABLE CUSTOMERS (

Customer_id integer constraint costumers_pk primary key,

First_namevarchar (20) not null

Last_namevarchar (20) not null

);

Лекция №7. СУБД ORACLE

Покупатели, продукты, трипы продуктов, покупки, служащие

Create table product_type (

product_type_id integer

constraint product_type_pk PRIMARY KEY,

name varchar2 (10) NOT NULL

);

Create table products (

product _id integerconstraint product _pk PRIMARY KEY,

product_type_id integer constraint product _fk_product_type REFERENS product_types (product_type_id),

name varchar2 (10) NOT NULL,

descriptionvarchar(50),

price number(5,2)

);

Create table purchases (

product _id integer constraint purchases_fk_products REFERENS products (product _id),

customer _id integerconstraint purchases_fk_customers REFERENS customer (customer_id),

quantity integer NOT NULL constraint purchases_pk PRIMARY KEY (product_id,cuistomer_id)

);

Можно сделать и арифметические операции и выражения

SELECT name, price+5 from products

Select 10*(12/3-1) from dual - dual спецтаблицаoracle

Есть операторы =, <>, !=, <,<=, >, >=, ANY, ALL

LIKE, IN, BETWEEN, IS NULL, IS MAN (проверка на не число), IS INFINITE (

Команды для работы с файлами

saveимя_файла

getимя_файла

startимя_файлаили @ имя_файла

EDITимя_файла

SPOOLимя_файла - журнал данных

Spool off

Spool cust_result.txt

Лекция №8. Подзапросы

Условия

CASE выражение поиска

Whenвыр1 Thenрез1

Whenвыр2 Thenрез2

ELSE рез по умолчанию

END

SELECT product_id, product_type_id

CASE product_type_id

WHEN 1 THEN “BOOK”

WHEN 2 THEN “Video”

WHEN 3 THEN “DVD”

WHEN 4 THEN “CD”

Else “магазин”

End

FROM products

или

SELECT product_id, product_type_id

CASE

WHEN 1 THEN “BOOK”

WHEN 2 THEN “Video”

WHEN 3 THEN “DVD”

WHEN 4 THEN “CD”

Else “магазин”

END

FROM products

Манипулированиеданными MERGE (ORACLE)

MERGE INTO products P

USING product_changes pc on (p.produc_id = pc.product_id ) when matched then

UPDATE SET p.product_type_id = pc.product_type_id, p.name = pc.name, p.description = pc.description, p.price = pc.price

INSERT (p.product_id, p.product_type_id, p.name, p.description, p.price) values (pc.product_id, pc.product_type_id, pc.name, pc.description, pc.price)

Транзакции

А - атомарность

С - согласованность

И - изоляция

Д - долговечность

Процедурный язык PL (sqloracle)

[DECLARE Операторы объявлений]

BEGIN

_команды SQL

_команды PLI/SQL

[EXCEPTION

Действия при возникновении ошибок

]

END

Блоки:

Анонимные - выполняется сразу и не сохраняется в бд

DECLARE

BEGIN

EXCEPTION

END

Процедурные - хранятся в бд, могут быть вызваны с любой точки

PROCEDURE

IS

BEGIN

EXCEPTION

END

Функции- хранятся в бд, могут быть вызваны с любой точки

FUNCTION

RETURN

IS

BEGIN

RETURN

EXCEPTION

END

Пример

DECLARE

Width integer;

Height integer := 2;

Area integer;

BEGIN

Area :=6;

Width :=area/height;

DBMS_OUTPUT.PUT_LINE(`width='||width);

EXCEPTION

WHEN ZERO_DIVIDE THEN

DBMS_OUTPUT.PUT_LINE(`DIVISION by ZERO');

END;

Типы данных

INTEGER

VARCHAR2

NUMBER

DATE

BOOLEAN

Установка

SET SERVEROUTPUT ON

Атрибут

% TYPE

Balance Number (min_balance Balance %TYPE :=)

Команды управления

Условный оператор IF(IFусловие1THENоператор1 ELSIFусловие2 THENоператор2 ELSEоператор3 ENDIF)

Оператор CASE

Оператор цикла

LOOP - простые циклы

LOOP

Команды

-EXIT [WHEN выражение]

END LOOP

COUNTER := 0;

LOOP

COUNTER := COUNTER +1;

EXIT WHEN COUNTER = 10;

END LOOP

WHILE

WHILE условие LOOP

Команды

END LOOP

COUNTER := 0;

WHILE COUNTER < 10 LOOP

COUNTER := COUNTER +1;

END LOOP

FOR

FOR переменная IN (REVERSE)

Нижняя граница … верхняя граница LOOP

LOOP

END LOOP

DECLARE

M NUMBER := 1

N NUMBER :=100;

BEFIN

FOR I IN M…N LOOP

END LOOP

END

Лекция №9. PLI/SQL

Пример

BEGIN

For I in 1 … 10

Loop

If I=3 OR I=8 THEN NULL

ELSE

INSERT INTO TABL (NUM)

VALUES (I);

End if

End loop

End

Select список INTO переменная FROM таблица[WHERE условие]

SET SERVEROUTPUT ON

DECLARE

Fnamevarchar2(30);

BEGIN

SELECT name INTO fname

FROM sotrud

WHERE ns=101;

DBMS_OUTPUT.PUTLINE (`Name is '||fname);

END

Курсоры

CURSOR имя_курсораIS команда SELECT

Products (product_id, product_type_id, name, description, price)

SET SERVEROUTPUT ON

DECLARE

v_product_id products.product_id%TYPE;

v_name products.name%TYPE;

v_priceproducts.product_id%TYPE;

v_product_id products.price%TYPE;

CURSOR cv_product_cursor is

SELECT product_id, name, price

FROM products

ORDERBY product_id

BEGIN

OPEN cv_product_cursor;

FETCH cv_product_cursorcv_product_cursor INTO v_product_id,v_name,v_price;

EXIT WHEN

cv_product_cursor%NOTFOUND

DBMS_OUTPUT.PUTLINE (v_product_id||v_name||v_price);

END LOOP

CLOSE cv_product_cursor

END

Процедуры

CREATE [OR REPLACE] PROCEDURE имя_проц [(имя_параметра [IN|OUT|[..])] IS|AS

BEGIN

Тело процедуры

END имя_процедуры

CREATEORREPLACEPROCEDUREupdate_product_price (p_product_id IN products.product_id%TYPE, p_factor in NUMBER ) AS v_product_count INTEGER;

BEGIN

SELECT COUNT (*)

INTO v_product

FROM products

WHERE product_id = p.product_id

IF v_product_count= 1 THEN

UPDATE products

SET price = price *p_factor

WHEREproduct_id = p_product_id

COMMIT

ENDIF

EXCEPTION WHEN OTHERS THEN ROLLBACK;

END update_product_price

END имя_процедуры

Функции

DROP procedure <имя> SHOW ERROR

CREATE OR REPLACE FUNCTION circle_area (

p_radius IN NUMBER

, RETURN BUMBER AS

v_pl NUMBER :=3.14

v_area NUMBER

BEGIN

V_area := v_pi * power(p_radius,2);

Return v_area;

END circle_area

SELECT circle_area(2) FROM dual;

Триггеры

INSERT, DELETE, UPDATE

CREATE OR REPLACE TRIGGER before_product_price

BEFORE UPDATE OF price

ON products

FOR EACH ROW WHEN (new.price<old.price*0.75)

BEGIN

DBMS_OUTPUT.PUT_LINE (`PRODUCT_id='||product_id);

INSERT INTO producy_price_audit (product_id,old_price, new_price) values ( old_product_id, old_price, new_price);

END before_price_product

Лекция №10. Безопасность БД

база данные интерактивное приложение

Безопасность БД - защита от случайного или преднамеренного раскрытия или удаления содержимого базы данных

Идентификация или установление подлинности

По паролям

По логинам паролям

По серверам

Предоставление полномочий

Распределение доступа к таблицам по учетным записям и правам (777) через оператор GRANTALLPRIVELEGES, отмена полномочий REVOKE ___ ONTABLE

Обеспечение целостности БД

С помощью создания представлений через CREATEVIEW

Кодирование

Шифрование данных CREATE DOMAIN sex_type AS…

Шифры простой подстановки (замена букв на другие буквы)

Шифр Цезаря С = З+S(modK) или С = З+2(mod27)

Шифры многоалфавитной подстановки С=(а*P+S) modK

Шифр

Целостность бд

Логические ограничения - механизм контролирования значений которые хранятся в базе данных

Внутренние ограничения - связаны со структурой данных, например количество столбцов < 250 или не может быть в таблице двух записей с одинаковым ключом

Явные ограничения

Лекция №11

Форматирование отказов в SQL.

Команды

Описание

Append

Добавляет текст к текущей строке

Change

Изменяет текст

CLEAК BUFFER

Очистка буфера

DEL

Удалить текущую строку

DEL X

Удалить заданную строку

LIST

Распечатать все строки

LIST X

Распечатать заданную строку

RUN

Выполнить строку хранящуюся в буфере

X

Делает строку x текущей

Пример

Sql>1

Sql> APPEND, DOB

Select customer_id, first_name, last_name, DOB

Sql> list

Select customer_id, first_name, last_name, DOB

From customer

Where customer_id=1

Sql>Change |customer_id=1|customer_id=2

Where customer_id=2

Sql>Run

Sql>1

Работа с файлами

Saveимя_файла [REPLACE|APPEND] - сохраняет файл

GET имя_файла - добавляет в буфер

START имя_файла - выбирает содержимое файла в буфер и делает попытку run

@имя_файла

@C:\SQ…

EDIT имя_файла - копирует содержимое буфера в файл и запускает используемый по умолчанию текстовый редактор операционной системы

SPOOL - копирует выходные данные в файл

SPOOL OFF - прекращает копирование

Примеры

Sql> Select customer_id, first_name, last_name

From customers

Where customer_id=1

Sql>Saveasd_.sql(сохраняет в подкаталоге bin)

Sql>GET asd_.sql

SELECT *

FROM customers

WHERE customer_id=1

Sql>START asd_.sqlNotePad FILE|EXIT

Sql>EDIT

DEFINE_EDITOR = `редактор'

Sql>SPOOL cust.txt

Sql>/

Sql>SPOOLOFF

Форматирование столбцов

COLUMNстолбец|псевдоним|опции

Опции

FORMAT

Задает тип данных

HEADING

Устанавливает текст заголовка

JUSTIFY

Выравнивание

WRAPPED

Перенос строки

WORD_WRAPPED

Перенос строк без переноса слов

CLEAR

Sql>COLUMN product_id FORMAT 99

Sql>COLUMN name HEADING product_name FORMAT A20

WORD WRAPPED

Sql>COLUMN description FORMAN A30 WORD_WRAPPED

Sql>COLUMN price FORMAT $99.99

Sql>SELECT product_id,name,description,price

FORM products

WHERE product_id< 10

Установка размера страниц

SETPAGESIZE - размер страницы

SET LINESIZE - размер строки

Sql>SET PAGESIZE 60

Sql>/

Sql>SET LINESIZE 50

Sql>CLEAR COLUMNS

Использование переменных

Временные

Определенные

Sql>SELECTproduct_id, name, price

FROM products

WHERE product_id = $product_id.var;

Sql>/

Введем значение, допустим: 5

Определенные - DEFINE

Sql>DEFINE product_id_value = 7

ACCEPT - для ввода переменных

ACCEPT имя_файла [FORMAT …][PROMPT …][HIDE]

Sql>ACCEPT pas_var CHAR PROMPT `ПАРОЛ'HIDE

Настройка отчетов

SETECHOOFF - удержание от вывода sql

SETVERIFYOFF - подавляет вывод сообщений подтверждения

SELECT product_id, name, price

FROM products

Sql>@ C:\sql\report.sql

Вводим цифру 2

SETECHOOFF

SETVERIFYOFF

ACCEPT product_id_value, NUMBER FORMAT 99 PROMPT `ENTER chtoto'

Select product_id, name, price

FROM products

Wherproduct_id = $product_id_value

TITLE `PRODUCT REPORT' - верхний заголовок

BTITLE `THANKS you' - нижнийзаголовок

SET ECHO OFF

Select product_id, name,description,price

FROM products

Sql>@ C:\SQL\rep.sql

Лекция №12. Функции в Oracle

INITCAP(строка) - первая буква прописная, остальные строчные.

SQL>Select INITCAP(`БаЗаДаНнЫх')from dual

Результат «База данных»

LOWER - все буквы в строчные

UPPER - все буквы в прописные

LTRIM -убрать пробелы слева

RTRIM -убрать пробелы справа

SUBCTR(строка, позиция [, длина подстроки])

SQL>Select SUBCTR (`ABCDEF',2,4)from dual

Результат «BCDE»

INSTR(Строка, строка поиска [, начало_поиска[, число вхождений]])

SQL>Select INSTR (`барабанэ,'ба',4)from dual

Результат «1» - позиция

LENGTH - возвращает длину строки

TO_CHAR(аргумент [, формат])

TO_NUMBER(симв_аргумент[, формат])

TO_DATE (симв_аргумент[, формат])

SQL>Select TO_NUMBER (`3.14')*TO_NUMBER (`2.78E+01')from dual

Результат «87.292»

EXP(X)

LN(X)

SQRT(x)

LOG(основание, аргумент)

SIN(x)

COS(x)

TAN(x)

ASIN(x)

ACOS(x)

ATAN(x)

Пример: натуральный логарифмы чисел 2 и 3

SQL>SET SERVEROUTPUT ON;

SQL>SET ECHO ON;

SQL>DECLARE

SQL>HEADER1 CONSTANT VARCHAR2(20):= `Логарифм 2= ';

SQL>HEADER2 CONSTANT VARCHAR2(20):= `Логарифм 3= ';

SQL>ArgNUMBER :=2;

SQL>DBMS_OUTPUT.PUT_LINE(HEADER1||LN(Arg));

SQL>Arg=Arg+1;

SQL>DBMS_OUTPUT.PUT_LINE(HEADER2||LN(Arg));

SQL>END;

Пример: программа выводит сообщение по классу извлечения в зависимости от длины волны (микроны)

Для ввода данных временная переменная.

SQL>DECLARE

SQL>LANDA NUMBER; -- Длинаволны

SQL>Text1 VARCHAR2(30):= `Инфракизлуч';

SQL>Text2VARCHAR2(30):= `Видимсвет';

SQL>Text3VARCHAR2(30):= `Ультрафиолет';

SQL>BEGIN

SQL>LANDA :=&INPUT_DATA;

SQL>DBMS_OUTPUT.PUT_LINE(` `);

SQL>IF (LANDA > 0.65)

SQL> THEN DBMS_OUTPUT.PUT_LINE(Text1);

SQL>ELSEIF (LANDA < 0.41)

SQL> THEN DBMS_OUTPUT.PUT_LINE(Text3);

SQL>ELSE

SQL> DBMS_OUTPUT.PUT_LINE(Text2);

SQL>END IF

SQL>END

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

SQL>DECLARE

SQL>ArgNUMBER; -- переменная для вычисления

SQL>I Number; -- счетчик

SQL>Limit Number := 1000000000; --Граница

SQL>Text1 VARCHAR2(50):= `Факториал счетчика впервые превышающий 1 000 00 000';

SQL>BEGIN

SQL>I:=0;

SQL>Arg:=1;

SQL>LOOP

SQL> EXIT WHEN Arg> Limit;

SQL> Arg:=Arg*(I+1);

SQL> I=I+1;

SQL>END LOOP;

SQL>DBMS_OUTPUT.PUT_LINE(Text1);

SQL>DBMS_OUTPUT.PUT_LINE(`Искомоечисло = `||TO_CHAR(Arg));

SQL>END

Пример: вывести все записи таблицы

SQL>DECLARE

SQL>CURSOR q1 IS select At1, At2 FROM Tab1

SQL>V1 VARCHAR2(40);

SQL>BEGIN

SQL>FORrecINq1 LOOP - необъявленной переменной присваивается единица

SQL> V1 := LTRIM(V1||' `||rec.At2);

SQL>END LOOP;

SQL>DBMS_OUTPUT.PUT_LINE(V1);

SQL>END;

ПАКЕТЫ

CREATE [ON REPLACE] PACKAGE имя_пакетаIS |AS

Спецификация пакета END имя_пакета;

Пример: вывести все записи таблицы

SQL>CREATE OR REPLACE PACKAGE PACAA AS

SQL>PACAA_CONST CONSTANT NUMBER := 1.2;

SQL>FUNCTION MUCONST (Arg1 NUMBER)

SQL> RETURN NUMBER IS

SQL>BEGIN;

SQL>AUDITMUL

SQL>RETURN Arg*PACAA.CONST;

SQL>PROCEDURE AUDITMUL IS

SQL>BEGIN

SQL>PACAA_COUNT := PACAA_COUNT +1;

SQL> INSERT INTO TABL_OUT VALUES(PACAA_COUNT, SYSDATE);

SQL> COMMIT;

SQL> END;

SQL>END; Размещено на Allbest.ru


Подобные документы

  • Базы данных с двумерными файлами и реляционные системы управления базами данных (СУБД). Создание базы данных и обработка запросов к ним с помощью СУБД. Основные типы баз данных. Базовые понятия реляционных баз данных. Фундаментальные свойства отношений.

    реферат [57,1 K], добавлен 20.12.2010

  • Использование приложения "IBExpert" для создания, удаления, регистрации, подключения, извлечения метаданных, резервного копирования и восстановления базы данных СУБД Firebird. Основные SQL-операторы для создания, подключения и удаления базы данных.

    лабораторная работа [280,1 K], добавлен 02.06.2015

  • Особенности написания базы данных на языках программирования C++, применимой для расписания занятий в университете. Этапы работы: ввод новой записи, изменение, просмотр базы данных, поиск данных. Алгоритмы, используемые в процессе выполнения проекта.

    практическая работа [16,6 K], добавлен 12.06.2010

  • Целостность БД как правильность и непротиворечивость ее содержимого на уровне отдельных объектов и операций и базы данных в целом. Понятие и содержание, выполнение и откат транзакции. Сервисные программные средства. Характерные свойства и черты ACID.

    презентация [49,8 K], добавлен 19.08.2013

  • Создание базы данных при помощи СУБД, разработка собственного приложения. Информационно-логическая модель рекламного агентства. Структура реляционной базы данных в Access. Заполнение таблиц информацией. Структура приложения и взаимодействия форм.

    курсовая работа [12,6 M], добавлен 17.06.2014

  • Система управления базами данных (СУБД). Программные средства, предназначенные для создания, наполнения, обновления и удаления базы данных. Структура, модели и классификация баз данных. Создание каталогов, псевдонимов, таблиц, шаблонов и форм СУБД.

    презентация [1,1 M], добавлен 09.01.2014

  • Особенности систем управления базами данных (СУБД): основные понятия, реляционные базы, основные этапы их проектирования. Концептуальная (логическая) модель БД "Экспресс поставки", её физическая модель, создание в Access и SQL запроса к БД при её работе.

    курсовая работа [1,2 M], добавлен 19.11.2012

  • Архитектура и функции СУБД. Инфологическая модель данных "Сущность-связь". Ограничения целостности. Характеристика связей и язык моделирования. Манипулирование реляционными данными. Написание сервера на Java.3 и приложения-клиента на ActoinScript 3.0.

    курсовая работа [935,3 K], добавлен 09.07.2013

  • Назначение базы данных для обеспечения работы автобусного парка. Основные возможности админпанели. Выполняемые базой данных и приложением функции. Инфологическое моделирование данных. Описание разработанного web-приложения. Проектирование базы данных.

    курсовая работа [2,2 M], добавлен 01.02.2013

  • Изучение основных понятий баз данных: структура простейшей базы данных, компоненты базы данных Microsoft Access. Проектирование базы данных "Туристическое агентство" в СУБД Access 2010, в которой хранятся данные о клиентах, которые хотят поехать отдыхать.

    курсовая работа [3,3 M], добавлен 20.09.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.