Распределенные базы данных
Этапы развития СУБД. Основные функции стандартного интерактивного приложения. Расписание транзакций, отдельные элементы кортежей. Модель с блокировками для записи. Встроенный язык, команды для работы с файлами. Защита от удаления содержимого базы данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курс лекций |
Язык | русский |
Дата добавления | 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