Upload
xena-lynch
View
56
Download
6
Embed Size (px)
DESCRIPTION
Защо бази от данни и необходим ли е език за работа с тях?. Файлово базиран подход Всяка програма дефинира и управлява свои данни Ограничения Разделяне и изолиране на данните Дублиране на данни Зависимост на данните Несъвместимост на файловете - PowerPoint PPT Presentation
Citation preview
Защо бази от данни и необходим ли е език за работа с тях?
Файлово базиран подход Всяка програма дефинира и управлява свои данни Ограничения
Разделяне и изолиране на данните Дублиране на данни Зависимост на данните Несъвместимост на файловете Фиксирани заявки фиксирани от приложната програма
Подход с бази от данни Споделена колекция от логически свързани данни,
предназначени да отговорят на потребностите от информация на една организация
Защо бази от данни и необходим ли е език за работа с тях?
Database Management System(DBMS) Софтуерна система, която позволява на
потребителите да дефинират, създават и управляват база от данни и осигурява контролиран достъп до нея.
Компоненти на средата на СУБД (DBMS)хардуер - софтуер - данни - процедури -
потребители
Защо бази от данни и необходим ли е език за работа с тях?
Предимства на СУБД (DBMS)- Управление на излишъците- Цялостност на данните- Балансиране на конфликтните ситуации- Повече информация от едно и също
количество данни- Споделяне на данните- Подобряване не достъпа и сигурността
на данните- Подобряване на продуктивността- Подобряване на сигурността- Подобряване на свързаността на
данните - Подобряване на управлението на
данните чрез тяхната независимост- Стандартизиране на работата с данните- Поддържане на резервни копия и услуги
по възстановяване на данните
Недостатъци - Сложност, размер, цени на СУБД,
допълнителни разходи за хардуер
Problem Statement Model
Application Software design
Real Word Abstract World
Problem
Solution
Analysis
Design
Implementation
Защо бази от данни и необходим ли е език за работа с тях?
Анализ на изискванията на реалната ситуация, която ще бъде представяна Дефиниране на концептуална схема, която дава описание на базата от
данни и изискванията, на които би трябвало да отговарят данните. Най-популярният начин за представяне на концептуалната схема е Entity-Relationship (ER) моделът, който представя реалността като съвкупност от обекти и връзки между тях
Дефиниране на логически модел, който може да бъде реализиран чрез избрана СУБД. Най-често се използва релационен модел – БД се представя като съвкупност от релации, като всяка релация е таблица със стойности. С цел създаване на релации без излишък на информация, без аномалии на данните, организирани по оптимален начин, така че при модифициране да се запазва цялостта и коректността на данните, се прилага процес на нормализация.
Дефиниране на физически модел, който представя начина на вътрешно съхранение на данните на физическо ниво.
Функции на СУБД
Функции на СУБД1. съхранение, достъп и обновяване на данните
2. Достъпен за потребителя каталог
3. Поддържане на транзакции
4. Управление на конкурентния достъп
5. Услуги за възстановяване
6. Функции за управление на достъпа
7. Поддръжка на комуникация на данните
8. Цялостност
9. Независимост на данните
10. Помощни функции
Компоненти на СУБД
Application
Programs
Application
ProgramsQueriesQueries
Database
Schema
Database
Schema
DML
preprocessor
DML
preprocessor
Query
processor
Query
processor
DDL
compiler
DDL
compiler
Program
object code
Program
object code
Database
manager
Database
manager
Dictionary
manager
Dictionary
manager
Access
methods
Access
methods
File
manager
File
manager
System
buffers
System
buffers
DBMS
Programmers Users DBA
Database and
system catalog
История на СУБД
История на СУБД 1960 – проекта за кацане на луната от Apollo - GUAM Средата на 1960те - Information Management Systems - IMS от IBM
(Йерархична СУБД) – свързана също с космическата програма и Apollo. Средата на 1960те - Integrated Data Store (IDS), първата комерсиална
СУБД, разработена от General Electric, (Мрежова СУБД – създател на модела е C. W. Bachman )
1965 – CODASYL (Committee on Data SYStems Language) – езика COBOL – използван за бизнес приложения през 60-те години
1967 – DBTG (Data Base Task Group) 1970 - E.F.Codd от IBM Research Lab. 1974 – започва проекта System R проект на IBM, създаден е SEQUEL
или Structured English Query Language 1976-1977 System R е пренаписана, поддържа многопотребителски достъп и
работа с повече от една таблица, езикът за работа става основа на SQL 1980те – комерсиални релационни СУБД (DB2, Oracle, Informix..) 1990те – навлизане на Интернет, web достъп днес - OODBMS, ORDBMS, SQL е стандарт за работа с БД
Въведение в SQL• SQL е съкращение от първите букви на Structured Query
Language (Език за структурирани заявки), и представлява непроцедурен език за работа с релационни бази от данни.
• Непроцедурен език?!
• Дефиниран формално през 1970 от Код (Codd), изследовател то IBM, в неговата статия A Relational Model of Data for Large Shared Data Banks
• 1974 - System/R (Donald Chamberlin) разработен е SEQUEL или Structured English Query Language
• 1976-1977 SEQUEL/2, преименуван на SQL
SQL и неговите предшественици
• SQL се базира на релационната алгебра и на релационните изчисления с променливи домейни и кортежи.
• Релационната алгебра е въведена през 1972 от E. F. Codd и представлява основните концепции, стоящи зад компютърния синтаксис на SQL.
• Релационната алгебра е процедурен метод за
конструиране на заявки и касае основно логиката КАК на структурните заявки, докато релационните изчисления използват декларативни изрази, касаещи КАКВО в логиката на структурираните заявки.
SQL – допълнителни възможности
• Поддържа добавяне, модифициране и изтриване на данни:Потребителите имат възможност да добавят, изтриват или модифицират съхранените записи от данни.
• Аритметични операцииДопустими са събиране, изваждане, умножение, деление (например,(value1 * 5) + value2), както и операции за сравнение (например, value3 >= value4).
• Визуализация на информацията / даннитеПотребителят може да визуализира генерирани чрез заявки връзки, както и съдържание на таблица (и).
• СъпоставянияПотребителят може да преименува релации, като новото име се преизчислява и обработва от самите заявки. В зависимост от заявката новите имена са имена на колони или имена на функции в зависимост от заявката.
• Обобщаващи функцииПотребителят има възможност да групира свързаните редове в едно и да изчислява различни групиращи функции като average, sum, count, maximum, и minimum.
SQL стандарти• American National Standards Institute (ANSI) стандартизира SQL
през 1986 (X3.135) а International Standards Organization (ISO) през 1987. През 1989, този стандарт се редактира и публикува като SQL89 или SQL1.
• SQL92 (SQL2) - Този стандарт отстранява слабите страни на стандарта от 89 и установява четвъртата група SQL характеристики, което по това време разширява значително възможностите на RDBMS от онова време. Като резултат SQL92 е 6 пъти по обемист от предходния стандарт.
• През 1999 ANSI/ISO представят и приемат SQL99 стандарта (наречен SQL3). Този стандарт касае някои от по-прогресивните и преди това недоразвити идеи на SQL като обектно-релационните концепции, нескаларни типове данни, управление на цялостта на данните, процедурни елементи, тригери и други
• 2003 (SQL2003) – Въвежда възможности за използване на XML, стандартизирани последователности (sequences), колони с автоматично генерирани стойности.
• 2006 - SQL2006 – стандартът SO/IEC 9075-14:2006 дефинира начина, по който SQL може да се използва за връзка с XML, начините за импортиране и съхранение на XML данни в SQL бази от данни, манипулирането им в базата от данни и публикуването заедно на XML и SQL-данни в XML формат. В допълнение, разрешава в SQL кода на приложенията да се интегрира XQuery, което е XML Query Language публикуван от World Wide Web Consortium (W3C), за едновременен достъп до обикновени SQL-данни и XML документи.
• 2008 – SQL2008 – легализира ORDER BY клаузата извън дефинициите на курсори. Добавя INSTEAD OF тригери. Добавя TRUNCATE оператор.
SQL стандарти
Раздели на SQL3 стандарта• част 1—SQL/Framework—определя основните изисквания за
съгласуване и дефинира фундаменталните концепции на SQL.• част 2—SQL/Foundation— дефинира синтаксиса и операциите
в SQL.• част 3—SQL/Call-Level Interface— дефинира интерфейса за
програмиране на приложения на SQL.• част 4—SQL/Persistent Stored Modules—дефинира
управляващите конструкции и модулите в SQL, съдържащи често повтарящи се последователности от действия.
• част 5—SQL/Host Language Bindings—дефинира как да се използват SQL операторите в приложените програми, написани на стандартни програмни езици от по-високо ниво.
MySQL Netezza NonStop SQL Openbase OpenLink Virtuoso (Open Source
Edition) OpenLink Virtuoso Universal
Server Oracle Oracle Rdb for OpenVMS Pervasive PostgreSQL Progress 4GL RDM Embedded RDM Server The SAS system Sav Zigzag ScimoreDB SmallSQL solidDB SQLBase SQLite Sybase Adaptive Server
Enterprise Sybase Adaptive Server IQ
4th Dimension Adabas D Alpha Five Apache Derby BlackRay CA-Datacom CSQL CUBRID Daffodil database DataEase Dataphor DB-Fast Derby aka Java DB ElevateDB EnterpriseDB EffiProz eXtremeDB fastDB FileMaker Pro Firebird FrontBase Gladius DB Greenplum H2 Helix database
HSQLDB
IBM DB2
WCE SQL Plus
IBM DB2 Express-C
Informix
Ingres
InterBase
InterSystems Caché
Kognitio
Linter
MaxDB
Mckoi SQL Database
Microsoft Access
Microsoft Jet Database Engine (part of Microsoft Access)
Microsoft SQL Server
Microsoft SQL Server Express
Microsoft Visual FoxPro
Mimer SQL
MonetDB
mSQL
Sybase SQL Anywhere (formerly known as Sybase Adaptive Server Anywhere and Watcom SQL) tdbengine Teradata TimesTen txtSQL Valentina (Database) Vertica VistaDB VMDS XSPRADA
Релационни СУБД
SQL - подезици
Data Manipulation Language (DML) - подезик за манипулиране с данните
UPDATE – обновява данните в таблиците в БДDELETE – изтрива данни от таблиците в БД INSERT INTO – добавя ред/редове в таблиците на БД
Data Definition Language (DDL) - подезик за описание на данните
CREATE TABLE – за създаване на нова таблица в БД ALTER TABLE – променя таблица от БД DROP TABLE – изтрива таблица от БД CREATE INDEX – създава индекс към таблица DROP INDEX - изтрива индекс
SQL - подезици
Data Query Language (DQL) – подезик за заявки
SELECT – за извличане на данни от таблиците в БД
•Проекция: Чрез SQL и операцията проекция могат да бъдат избрани една или повече колони от избрана таблица, съдържанието на които да бъде върнато като резултат от заявката
• Селекция: Чрез тази операция и SQL могат да бъдат избрани определени редове от избрана таблица. За отделяне на избраните редове могат да се използват различни условия.
• Съединение: Чрез тази операция и SQL може да бъде извлечена информация от различни таблици, като се създаде връзка между тези таблици.
SQL - подезици
Data administration commands – тази група команди дават възможност на потребителя да проверява и анализира операциите в базата от данни, а така също и да се анализира производителността на системата START AUDITSTOP AUDIT
Transactional control commands – съдържа командите за управление на транзакциите към базата от данни COMMIT ROLLBACK SAVEPOINT SET TRANSACTION
Data Control Language (DCL) – подезик за контрол на достъпа до даннитеALTER PASSWORDGRANTREVOKECREATE SYNONYM
Подезик за описание на данните DROP TABLE …
DROP TABLE - изтриване на таблица:
DROP TABLE <table name>
CREATE TABLE
CREATE TABLE <table name> (col-def, …, col-def, tab-constr, …, tab-constr);
Дефиниции на колони<column name> <data type> [default <expr>] [column constraints]
Дефиниции на ограничения<column name> - име на полето/колоната в таблицата<data type> - тип на данните в полето[default <expr>] – стойност по подразбиране[column constraints] –
[constraint <constraint name>] [not] null |
check (<condition>) | unique | primary key |
references <table name> [(<column name>)] [on delete cascade]
[constraint <constraint name>]unique (<column> {,<column>}) |primary key (<column> {,<column>}) |foreign key (<column> {,<column>})
references <table name> [(<column> {,<column>})][on delete cascade]
Тип данни Описание
char(n)
Последователност от символи с фиксирана дължина – n. Максималната дължина е 255, а ако не е зададена по подразбиране е 1. Ако в поле от този тип се съхранява последователност от символи с по-малка от зададената дължина, то остатъка до n се допълва от дясно с интервали. Константни стойности от този тип се задават в апострофи (‘асд’)
varchar2(n)Последователност от символи с променлива дължина – n. Максималната стойност на дължината е 2000
dateСлужи за съхранение на дати, обикновено са във формат на символен низ от типа: ’12-DEC-2000’, като може да се задава и променя формата на датата.
number Реални и цели числа, с не повече от 40 цифри.
number(n) Реални и цели числа, с не повече от n цифри.
number(n,d)Реални числа, с не повече от n позиции, като d от тях са след десетичната запетая.
integer Също като number, но не допуска дробни стойности
integer(n) Също като integer, но с не повече от n цифри
CREATE TABLE
CREATE TABLE
CREATE TABLECREATE TABLE PERSONS (FIRSTNAME VARCHAR2(15) NOT NULL,LASTNAME VARCHAR2(15) NOT NULL,ID VARCHAR2(2) PRIMARY KEY)
CREATE TABLECREATE TABLE PERSONS (FIRSTNAME VARCHAR2(15),LASTNAME VARCHAR2(15),ID VARCHAR2(2) PRIMARY KEY)
CREATE TABLECREATE TABLE PERSONS (FIRSTNAME VARCHAR2(15),LASTNAME VARCHAR2(15),REGDATE DATE DEFAULT SYSDATE,ID VARCHAR2(2) PRIMARY KEY)
CREATE TABLECREATE TABLE PERSONS (FIRSTNAME VARCHAR2(15),LASTNAME VARCHAR2(15),REGDATE DATE DEFAULT '01-JAN-01' NOT NULL,ID VARCHAR2(2) NOT NULL CHECK (ID>10))
CREATE TABLEINSERT INTO PERSONS VALUES('IVAN', 'IVANOV', '02-JAN-10', '4')
INSERT INTO PERSONS VALUES('IVAN', 'IVANOV', '02-JAN-10', ‘12')
ALTER TABLE•ALTER TABLE за добавяне на ново поле в таблица: ALTER TABLE <table name> ADD ( <column name> <data type> <[not]null> ) ;
•ALTER TABLE за промяна на типа на поле в съществуваща таблица: ALTER TABLE <table name> MODIFY ( <column name> <new data type> <[not]null> ) ;
•ALTER TABLE за дефиниране на ограничения:• PRIMARY KEY : ALTER TABLE <table name> ADD CONSTRAINT <constraint-name> PRIMARY KEY (<column-name>); •FOREIGN KEY : ALTER TABLE <table-name> ADD CONSTRAINT <constraint-name> FOREIGN KEY (<column-name>) REFERENCES <parent-table-name> (column-name);
ALTER TABLE
ALTER TABLE
ALTER TABLE
STUDENTS-DEPARTMENTS
INSERT INTO…
INSERT INTO <table name> [(column {, column})]VALUES (expression {, expression})
INSERT INTO DepartmentsVALUES (‘001’, ‘Computer Systems’)
INSERT INTO DepartmentsVALUES (‘001’)
INSERT INTO Departments(iddep, depname)VALUES (‘001’, ‘Computer Systems’)
INSERT INTO Departments(iddep)VALUES (‘001’)
INSERT INTO…
INSERT INTO…Освен структурата на таблиците в базата т данни с ALTER можем да променяме всички обекти, включително и настройките на текущата сесия. В случая се коригира формата на датата.
•Няма нужда от VALUES клаузата•Трябва да се съобрази броят на полетата в таблицата, в която добавяме, и броят на стойностите, избрани в SELECT заявката, да бъдат равни•В конкретния пример в таблицата STUDENT е имало два записа, които отговарят на условието IDDEP=‘002’ и затова са добавени два нови реда. Двете таблици имат една и съща структура и затова се използва *
INSERT INTO…
UPDATE
UPDATE STUDENTSSET BIRTHDATE='31-MAR-1986'WHERE FNUMBER='063312';
Синтаксис на UPDATE оператора:
UPDATE <table name>SET <column name>=<expression>[,<column name>=< expression >, …][WHERE <condition>];
•Условието в WHERE клаузата определя кои редове ще бъдат обновени;•Ако липсва WHERE клауза се обновяват всички редове.
UPDATE
Когато не е зададена WHERE клауза се обновяват всички записи в указаната таблица
UPDATE на чужд ключ
При опит да се коригира стойността на поле, което е външен (чужд) ключ за дадената таблица, със стойност, която не е въведена в таблицата, където това поле е ключ се появява съобщение за грешка и не се изпълнява обновяване на записа.
Липсва стойност ‘005’
DELETEСинтаксис на DELETE команда:
DELETE FROM <table name>[WHERE <condition>];
•Условието в WHERE клаузата определя кои редове ще бъдат изтрити;•Ако липсва WHERE клауза се изтриват всички редове от указаната таблица.
DELETE FROM STUDENTWHERE IDDEP='002';
DELETE FROM STUDENT;
При опит да се изтрие стойността на поле, което е външен (чужд) ключ в друга таблица, се появява съобщение за грешка и не се изпълнява изтриване на записа.
DELETE
DELETE
След като бъдат изтрити съответните записи от подчинената таблица, не е проблем да бъде изтрит и записът от главната
Създаване на таблица чрез подзаявка
DEPARTMENTS
DEPT