Язык SQL. Базы данных № 3-4

Содержание

Слайд 2

Литература

Королева О.Н. Базы данных [Электронный ресурс]: курс лекций/ Королева О.Н., Мажукин А.В.,

Литература Королева О.Н. Базы данных [Электронный ресурс]: курс лекций/ Королева О.Н., Мажукин
Королева Т.В.— Электрон. текстовые данные.— М.: Московский гуманитарный университет, 2012.— 66 c.
Основы современных баз данных [Электронный ресурс]: методическая разработка к выполнению лабораторных работ (№1-3)/ — Электрон. текстовые данные.— Липецк: Липецкий государственный технический университет, ЭБС АСВ, 2013.— 37 c.
Темирова Л.Г. Базы данных [Электронный ресурс]: учебно-методическое пособие для выполнения лабораторных работ для студентов III курса обучающихся по направлению подготовки 231300.62 Прикладная математика/ Темирова Л.Г.— Электрон. текстовые данные.— Черкесск: Северо-Кавказская государственная гуманитарно-технологическая академия, 2014.— 57 c.
Швецов В.И. Базы данных [Электронный ресурс]/ Швецов В.И.— Электрон. текстовые данные.— М.: Интернет-Университет Информационных Технологий (ИНТУИТ), 2016.— 218 c.

Слайд 3

Выполнение запросов
Язык SQL
Проектирование, разработка и обслуживание баз данных

Выполнение запросов Язык SQL Проектирование, разработка и обслуживание баз данных

Слайд 4

Основные преимущества SQL

Его поддерживают многие СУБД
Не зависит от физического размещение данных
Реляционная основа

Основные преимущества SQL Его поддерживают многие СУБД Не зависит от физического размещение
языка
Дает возможность динамически менять и расширять базу данных
Поддерживает архитектуру клиент-сервер.

Слайд 5

Пять основных частей SQL

DDL – язык определения данных. Позволяет создавать, изменять, удалять

Пять основных частей SQL DDL – язык определения данных. Позволяет создавать, изменять,
объекты: таблицы, связи между таблицами. Операторы: CREATE, ALTER, DROP.
DML – язык манипулирования данными. Позволяет добавлять, изменять, удалять записи в таблицах: INSERT, DELETE, UPDATE
DQL – язык запросов. Позволяет получать данные из таблиц с помощью оператора SELECT.
DCL – язык управления доступом. GRANT и REVOKE
Transaction Control - язык управления транзакциями: COMMIT, ROLLBACK.

Слайд 6

SQL (англ. Structured [English] Query Language — «[английский] язык структурированных запросов») —

SQL (англ. Structured [English] Query Language — «[английский] язык структурированных запросов») —
универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL основывается на теории множеств, но не является реляционным.
Разработан в начале 70-х. Первый стандарт SQL-86.
SQL – информационно-логический язык.
Преимущества:
независимость от конкретной СУБД;
наличие стандартов (SQL:2003 Core – 1300 стр.);
декларативность – «что», а не «как».

Язык SQL

Слайд 7

SQL – Structured Query Language

SQL – это структурированный язык запросов к реляционным

SQL – Structured Query Language SQL – это структурированный язык запросов к
базам данных (БД).
SQL – декларативный язык, основанный на операциях реляционной алгебры.
Стандарты SQL, определённые Американским национальным институтом стандартов (ANSI):
SQL-1 (SQL/89) – первый вариант стандарта.
SQL-2 (SQL/92) – основной расширенный стандарт.
SQL-3 (SQL/1999, SQL/2003) – относится к объектно-реляционной модели данных.
Подмножества языка SQL:
DDL (Data Definition Language) – команды создания/изменения/удаления объектов базы данных (create/alter/drop);
DML (Data Manipulation Language) – команды добавления/модификации/удаления данных (insert/update/delete), а также команда извлечения данных select;
DCL (Data Control Language) – команды управления данными (установка/снятие ограничений целостности). Входит в подмножество DDL.

Слайд 8

Работа с SQL

Особенности синтаксиса:
В командах SQL не различаются прописные и строчные буквы

Работа с SQL Особенности синтаксиса: В командах SQL не различаются прописные и
(кроме содержимого символьных строк).
Каждая команда может занимать несколько строк и заканчивается символом ';'.
Символ и символьная строка заключается в одинарные кавычки:
'А', '2' , 'строка', 'другая строка'
Однострочный комментарий начинается с символов '--'.
Многострочный комментарий заключается в символы /* ... */.

Слайд 9

Команды DDL

CREATE – создание объекта.
ALTER – изменения структуры объекта.
DROP – удаление объекта.
Общий

Команды DDL CREATE – создание объекта. ALTER – изменения структуры объекта. DROP
вид синтаксиса команд DDL:
create
alter тип_объекта имя_объекта [параметры];
drop

Слайд 10

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

CREATE TABLE [имя_схемы.]имя_таблицы
( имя_поля тип_данных [(размер)] [NOT NULL]
[DEFAULT выражение]
[ограничения_целостности_поля…]
.,..
[,

Создание таблиц CREATE TABLE [имя_схемы.]имя_таблицы ( имя_поля тип_данных [(размер)] [NOT NULL] [DEFAULT
ограничения_целостности_таблицы .,..]
)
[ параметры ];
ограничения_целостности (ОЦ):
[CONSTRAINT имя_ОЦ ] название_ОЦ [параметры]

Слайд 11

Типы данных

Символьные типы:
CHAR [(длина)] – строка фиксированной длины.
Длина по умолчанию – 1,

Типы данных Символьные типы: CHAR [(длина)] – строка фиксированной длины. Длина по
максимальная длина 2000 б.
Строка дописывается до указанной длины пробелами.
VARCHAR2 (длина) – строка переменной длины.
Максимальная длина 4000 б. Хранятся только значащие символы.
Числовой тип:
NUMBER [(точность[, масштаб])] – используется для представления
чисел с заданной точностью.
Точность по умолчанию 38, масштаб по умолчанию – 0.
number(4) – числа от -999 до 9999
number(8,2) – числа от -99999.99 до 999999.99
DATE – дата и время с точностью до секунды. Занимает 7 байт.
sysdate – функция получения текущих даты и времени.
Тип date поддерживает арифметику дат:
sysdate+1 – завтра
(дата1 – дата2) – количество дней, прошедших между двумя датами
(sysdate – 0.5) – 12 часов назад

Слайд 12

Ограничения целостности

В СУБД Oracle поддерживаются следующие ограничения целостности:
уникальность (значений атрибута или

Ограничения целостности В СУБД Oracle поддерживаются следующие ограничения целостности: уникальность (значений атрибута
комбинации значений атрибутов):
UNIQUE (имя_атрибута1 [, имя_атрибута2,...])
обязательность / необязательность:
NOT NULL / NULL
первичный ключ:
PRIMARY KEY(имя_атрибута1 [, имя_атрибута2,...])
внешний ключ:
FOREIGN KEY(имя_атрибута1 [, имя_атрибута2,...]) REFERENCES имя_таблицы [(имя_атрибута1 [, имя_атрибута2,...])]
условие на значение поля:
CHECK (условие)
Например: check (salary>=4500), check (date2 > date1)

Слайд 13

Пример БД: проектная организация

Departs – отделы, Project – проекты,
Emp – сотрудники, Job – участие

Пример БД: проектная организация Departs – отделы, Project – проекты, Emp –
в проектах.

Слайд 14

Пример БД: проектная организация

Emp – сотрудники:
tabno – табельный номер сотрудника, первичный ключ;
name

Пример БД: проектная организация Emp – сотрудники: tabno – табельный номер сотрудника,
– ФИО сотрудника, обязательное поле;
born – дата рождения сотрудника, обязательное поле;
gender – пол сотрудника, обязательное поле;
depno – номер отдела, обязательное поле, внешний ключ;
post – должность сотрудника;
salary – оклад, больше МРОТ;
passport – серия и номер паспорта, уникальный обязательный атрибут;
pass_date – дата выдачи паспорта, обязательное поле;
pass_get – кем выдан паспорт, обязательное поле;
born_seat – место рождения сотрудника;
edu – образование сотрудника;
special – специальность по образованию;
diplom – номер диплома;
phone – телефоны сотрудника;
adr – адрес сотрудника;
edate – дата вступления в должность, обязательное поле.

Слайд 15

Пример БД: проектная организация

Departs – отделы:
did – номер отдела, первичный ключ;

Пример БД: проектная организация Departs – отделы: did – номер отдела, первичный
name – название отдела, обязательное поле.
Project – проекты:
No – номер проекта, первичный ключ;
title – название проекта, обязательное поле;
pro – краткое название проекта, обязательное уникальное поле;
client – заказчик, обязательное поле;
dbegin – дата начала выполнения проекта, обязательное поле;
dend – дата завершения проекта, обязательное поле;
cost – стоимость проекта, обязательное поле.
Job – участие в проектах:
pro – краткое название проекта, внешний ключ;
tabNo – номер сотрудника, участвующего в проекте, внешний ключ;
rel – роль сотрудника в проекте; может принимать одно из трех значений: 'исполнитель', 'руководитель', 'консультант'.
Первичный ключ – комбинация полей pro и tabNo.

Слайд 16

Создание таблиц БД проектной организации

Таблица «Отделы» (Depart):
create table depart (did number(4) constraint

Создание таблиц БД проектной организации Таблица «Отделы» (Depart): create table depart (did
pk_depart PRIMARY KEY,
name varchar2(100) not null
);
Таблица «Сотрудники» (Emp):
create table emp ( tabno number(6) constraint pk_emp PRIMARY KEY,
name varchar2(100) not null,
born date not null,
gender char not null,
depno number(4) not null constraint fk_depart REFERENCES depart,
post varchar(50) not null,
salary number(8,2) not null constraint check_sal check (salary > 4630),
passport char(10) not null constraint passp_uniq UNIQUE,
pass_date date not null, pass_get varchar2(100) not null,
born_seat varchar2(100), edu varchar2(30),
special varchar2(100), diplom varchar2(40),
phone varchar2(30), adr varchar2(80),
edate date not null default trunc(sysdate),
chief number(6) constraint fk_emp REFERENCES emp
);

Слайд 17

Создание таблиц БД проектной организации

Таблица «Проекты» (Project):
create table project (No number(5) constraint

Создание таблиц БД проектной организации Таблица «Проекты» (Project): create table project (No
pk_project primary key,
title varchar2(200) not null,
pro varchar(15) not null constraint pro_uniq unique,
client varchar(100) not null,
dbegin date not null,
dend date not null,
cost number(9)
);
Таблица «Участие в проектах» (Job):
create table job ( pro varchar(15) not null references project (abbr),
tabNo number(6) not null references emp,
rel varchar(20) default 'исполнитель',
primary key (tabno, pro),
check ( rel IN ('исполнитель', 'руководитель', 'консультант') )
);

Слайд 18

Подмножество команд DML

INSERT – добавление строк в таблицу.
Добавляет одну или несколько строк

Подмножество команд DML INSERT – добавление строк в таблицу. Добавляет одну или
в указанную таблицу.
UPDATE – изменение данных.
Изменяет значения одного или нескольких полей в записях указанной таблицы.
Можно указать условие, по которому выбираются обновляемые строки.
Если условие не указано, обновляются все строки таблицы.
Если ни одна строка не удовлетворяет условию, ни одна строка не будет обновлена.
DELETE – удаление строк из таблицы.
Удаляет одну или несколько строк из таблицы.
Можно указать условие, по которому выбираются удаляемые строки.
Если условие не указано, удаляются все строки таблицы.
Если ни одна строка не удовлетворяет условию, ни одна строка не будет удалена.

Слайд 19

Добавление данных

INSERT – добавление строк в таблицу:
INSERT INTO имя_таблицы [(список_полей_таблицы)]
{ VALUES

Добавление данных INSERT – добавление строк в таблицу: INSERT INTO имя_таблицы [(список_полей_таблицы)]
(список_выражений) | запрос };
Примеры:
-- Добавить в таблицу "Отделы" новую запись (все поля):
insert into depart
values(7, 'Договорной отдел');
-- Добавить в таблицу "Сотрудники" новую запись (не все поля):
insert into emp (tabno, name, born, gender, depno, passport, pass_date_pass_get,
post, salary, phone)
values( 301, 'САВИН АНДРЕЙ ПАВЛОВИЧ', to_date('11.07.1969', 'dd.mm.yyyy'),
'М', 5, '4405092876', to_date('15.02.1999', 'dd.mm.yyyy'),
'ОВД "Митино" г.Москвы', 'программист', 38050, '121-34-11');
Замечание: значение по умолчанию используется только тогда, когда значение поля не вводится в явном виде.

Слайд 20

Изменение данных

UPDATE – изменение данных:
UPDATE имя_таблицы
SET имя_поля1 = выражение1 [, имя_поля2

Изменение данных UPDATE – изменение данных: UPDATE имя_таблицы SET имя_поля1 = выражение1
= выражение2,…]
[WHERE условие];
Примеры:
-- Изменить статус сотрудника Бобкова Л.П., табельный номер 74, по отношению к проекту 30."Система автоматизированного управления предприятием":
update job
set rel = 'консультант'
where tabno = 74 and pro = 30;
-- Перевести сотрудника Жаринова А.В., табельный номер 68, на должность ведущего программиста и повысить оклад на три тысячи рублей:
update emp
set post = 'ведущий программист', salary = salary+3000
where tabno = 68;

Слайд 21

Удаление данных

DELETE – удаление строк из таблицы:
DELETE FROM имя_таблицы
[ WHERE условие ];
Примеры.
--

Удаление данных DELETE – удаление строк из таблицы: DELETE FROM имя_таблицы [
Удалить сведения о том, что сотрудник Афонасьев В.Н., табельный номер 147, участвует в проектах:
delete from job
where tabno=147;
-- Удалить сведения о сотруднике Афонасьеве В.Н., табельный номер 147:
delete from emp
where tabno = 147;
Замечание: отменить удаление данных можно командой
ROLLBACK;

Слайд 22


SQL

DML
Data Manipulation Language

TCL
Transaction Control Language

DDL
Data Definition Language

DCL
Data Control Language

Подмножества языка

SQL DML Data Manipulation Language TCL Transaction Control Language DDL Data Definition
SQL

Слайд 23

TCL-операторы используются для обработки транзакций.

Transaction Control Language

BEGIN [ DISTRIBUTED ] { TRAN

TCL-операторы используются для обработки транзакций. Transaction Control Language BEGIN [ DISTRIBUTED ]
| TRANSACTION } [ { trn_name | @trn_name_var } [ WITH MARK [ 'description' ] ] ] [;]
начать транзакцию (START);
COMMIT { [ WORK ] | [ { TRAN | TRANSACTION } [ trn_name | @trn_name_var ] ] } [;]
подтвердить транзакцию;
SAVE { TRAN | TRANSACTION } { save_name | @save_name_var } [;]
установить точку отката (SAVEPOINT);
ROLLBACK { [ WORK ] | [ { TRAN | TRANSACTION } [ trn_name | @trn_name_var | save_name | @save_name_var ] ] [;]
откатить все изменения, сделанные в контексте транзакции;
@@TRANCOUNT, XACT_ABORT, XACT_STATE()
системные переменные, параметры и функции.

Слайд 24

Transaction Control Language

Пример управления транзакцией:
USE AdventureWorks2008R2;
CREATE TABLE Test(id INT);
BEGIN TRANSACTION;
INSERT INTO

Transaction Control Language Пример управления транзакцией: USE AdventureWorks2008R2; CREATE TABLE Test(id INT);
Test(id) VALUES(1);
INSERT INTO Test(id) VALUES(2);
UPDATE Test SET id=200 WHERE id=1;
SAVE TRANSACTION s_name;
UPDATE Test SET id=1000 WHERE id=2;
ROLLBACK TRANSACTION s_name;
SELECT id FROM Test;
DROP TABLE Test;

Слайд 25

Transaction Control Language

Проблемы параллельного доступа к данным:
потерянное обновление;
«грязное» чтение;
неповторяющееся чтение;
фантомное чтение –

Transaction Control Language Проблемы параллельного доступа к данным: потерянное обновление; «грязное» чтение;
отличается от предыдущего тем, что данные не изменяются/удаляются, а добавляются новые (фантомные) записи.
Уровни изоляции транзакций:
неподтверждённое чтение (read uncommitted, dirty read) — чтение незафиксированных всех транзакций – гарантирует только отсутствие потерянных обновлений;
подтверждённое чтение (read committed) — чтение зафиксированных изменений параллельных транзакций;
повторяемое чтение (repeatable read, snapshot) — все изменения параллельных транзакций после начала своей недоступны;
упорядоченный (serializable) — все транзакции выполняются строго последовательно.

Слайд 26

Transaction Control Language

Типы транзакций:
явная (explicit) – транзакция начинается оператором начала транзакции или

Transaction Control Language Типы транзакций: явная (explicit) – транзакция начинается оператором начала
вызовом API-функции;
автоматическая (autocommitted) – режим по-умолчанию – каждый оператор автоматически начинает транзакцию и подтверждает ее;
пакетная (batch-scoped) – в режиме MARS.
Примечание: технологию MARS следует использовать с осторожностью, т.к. при переключении транзакций в явный режим с помощью API, операторы COMMIT и ROLLBACK приведут к откату всего пакета.
Требования к транзакциям (ACID):
атомарность (atomicity);
согласованность (consistency);
изолированность (isolation);
долговечность (durability).

Слайд 27

DCL-операторы используются управления доступом к объектам СУБД, базы данных и к отдельным

DCL-операторы используются управления доступом к объектам СУБД, базы данных и к отдельным
операторам SQL.

Data Control Language

GRANT { [ ALL [ PRIVILEGES ] ] | permission [ ( column [ ,...n ] ) ] [ ,...n ] } [ ON [ class :: ] securable ] TO principal [ ,...n ] [ WITH GRANT OPTION ] [ AS principal ]
предоставление разрешения на определенное действие с объектом;
DENY { [ ALL [ PRIVILEGES ] ] | permission [ ( column [ ,...n ] ) ] [ ,...n ] } [ ON [ class :: ] securable ] TO principal [ ,...n ] [ CASCADE] [ AS principal ]
устанавливает запрет на действие с объектом;
REVOKE [ GRANT OPTION FOR ] { [ ALL [ PRIVILEGES ] ] | permission [ ( column [ ,...n ] ) ] [ ,...n ] } [ ON [ class :: ] securable ] { TO | FROM } principal [ ,...n ] [ CASCADE] [ AS principal ]
удаляет разрешение или запрет;
Примечание: DENY превалирует над GRANT (в большинстве случаев).

Слайд 28

Data Control Language

Примеры управления разрешениями:
USE AdventureWorks2008R2;
GRANT SELECT ON OBJECT::Person.Address TO RosaQdM;
GRANT REFERENCES

Data Control Language Примеры управления разрешениями: USE AdventureWorks2008R2; GRANT SELECT ON OBJECT::Person.Address
(BusinessEntityID) ON OBJECT::HumanResources.vEmployee TO Wanida WITH GRANT OPTION;
DENY EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
TO Recruiting11;
DENY EXECUTE ON XML SCHEMA COLLECTION::Sales.Invoices4 TO Wanida;
REVOKE IMPERSONATE ON LOGIN::WanidaBenshoof FROM [AdvWorks\YoonM];
REVOKE VIEW DEFINITION ON ENDPOINT::Mirror7 FROM ZArifin;

Слайд 29

DDL-операторы используются для создания, изменения и удаления объектов СУБД или базы данных.

Data

DDL-операторы используются для создания, изменения и удаления объектов СУБД или базы данных.
Definition Language

CREATE – создает объект;
ALTER – изменяет существующий объект или составные части его;
DROP – удаляет объект;
TRUNCATE – очищает таблицу.
Стандарт SQL-92 определяет команду CREATE в вариантах: ASSERTION, CHARACTER SET, COLLATION, DOMAIN, SCHEMA, TABLE, TRANSLATION, VIEW.
В MySQL 5.1 – 12 вариантов, в SQL Server 2008 R2 – 59 вариантов.
Примечание: с помощью системных объектов следует проверять существование объектов СУБД или базы данных.

Слайд 30

Data Definition Language

Пример оператора создания таблицы:
USE AdventureWorks2008R2;
CREATE TABLE dbo.PurchaseOrderDetail
(
PurchaseOrderID int NOT

Data Definition Language Пример оператора создания таблицы: USE AdventureWorks2008R2; CREATE TABLE dbo.PurchaseOrderDetail
NULL
REFERENCES Purchasing.PurchaseOrderHeader(PurchaseOrderID),
LineNumber smallint NOT NULL,
ProductID int NULL
REFERENCES Production.Product(ProductID),
UnitPrice money NULL,
OrderQty smallint NULL,
ReceivedQty float NULL,
RejectedQty float NULL,
DueDate datetime NULL,
rowguid uniqueidentifier ROWGUIDCOL NOT NULL
CONSTRAINT DF_PurchaseOrderDetail_rowguid DEFAULT (newid()),
ModifiedDate datetime NOT NULL
CONSTRAINT DF_PurchaseOrderDetail_ModifiedDate DEFAULT (getdate()),
LineTotal AS ((UnitPrice*OrderQty)),
StockedQty AS ((ReceivedQty-RejectedQty)),
CONSTRAINT PK_PurchaseOrderDetail_PurchaseOrderID_LineNumber
PRIMARY KEY CLUSTERED (PurchaseOrderID, LineNumber)
WITH (IGNORE_DUP_KEY = OFF)
)
ON PRIMARY WITH (DATA_COMPRESSION = PAGE);

Слайд 31

DML-операторы используются для манипулирования данными: выборки, вставки, удаления или изменения данных.

Data Manipulation

DML-операторы используются для манипулирования данными: выборки, вставки, удаления или изменения данных. Data
Language

SELECT – возвращает набор данных;
UPDATE – изменяет существующие данные;
INSERT – добавляет новые данные;
MERGE – слияние наборов данных;
DELETE – удаляет данные.
CRUD-операции: create, read (retrieve), update (modify) and delete (destroy). Часто используется совместно с термином «DML-операторы», а иногда и подменяет его.
CRUD – термин компьютерной науки, и определяется как минимальный достаточный набор функций постоянного хранилища данных.

Слайд 32

Пользователь
• устанавливает соединение с БД;
• вводит команду SQL;
• инициирует выполнение команды.

СУБД
• выполняет синтаксический анализ запроса;
• проверяет наличие

Пользователь • устанавливает соединение с БД; • вводит команду SQL; • инициирует
прав на выполнение этого запрос;
• выбирает план выполнения запроса;
• выполняет запрос;
• результат выполнения отсылает пользователю.

Выполнение запросов

Слайд 33

Оператор SELECT

Полный синтаксис оператора SELECT очень сложный, однако в нем можно выделить

Оператор SELECT Полный синтаксис оператора SELECT очень сложный, однако в нем можно
следующие блоки:
WITH – блок задания общего табличного выражения;
SELECT select_list – блок задания столбцов результирующего набора;
FROM table_source – блок задания источников данных;
WHERE search_condition – блок условий отбора;
GROUP BY group_by_expression – блок задания столбцов группировки / агрегирования данных;
HAVING search_condition – блок условий отбора агрегированных;
ORDER BY order_expression [ ASC | DESC ] – блок сортировки набора данных;
{ UNION | EXCEPT | INTERSECT } select_query – блок множественных операций нескольких наборов данных.

Слайд 34

Оператор SELECT

Демонстрация соединения таблиц

Оператор SELECT Демонстрация соединения таблиц

Слайд 35

Оператор SELECT

Демонстрация примеров SELECT

Оператор SELECT Демонстрация примеров SELECT

Слайд 36

Оператор UPDATE

UPDATE Sales.SalesPerson
SET SalesYTD = SalesYTD + SubTotal
FROM Sales.SalesPerson AS sp
JOIN Sales.SalesOrderHeader

Оператор UPDATE UPDATE Sales.SalesPerson SET SalesYTD = SalesYTD + SubTotal FROM Sales.SalesPerson
AS so
ON sp.BusinessEntityID = so.SalesPersonID
AND so.OrderDate = (SELECT MAX(OrderDate)
FROM Sales.SalesOrderHeader
WHERE SalesPersonID = sp.BusinessEntityID);
UPDATE Sales.SalesPerson
SET SalesYTD = SalesYTD +
(SELECT SUM(so.SubTotal)
FROM Sales.SalesOrderHeader AS so
WHERE so.OrderDate = (SELECT MAX(OrderDate)
FROM Sales.SalesOrderHeader AS so2
WHERE so2.SalesPersonID = so.SalesPersonID)
AND Sales.SalesPerson.BusinessEntityID = so.SalesPersonID
GROUP BY so.SalesPersonID);

Слайд 37

Оператор UPDATE

Демонстрация примеров UPDATE, INSERT, MERGE, DELETE

Оператор UPDATE Демонстрация примеров UPDATE, INSERT, MERGE, DELETE

Слайд 38

Проектирование, разработка и обслуживание баз данных

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

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

Слайд 39

СУБД - совокупность программного обеспечения, обеспечивающего создание и использование БД, хранение, чтение

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

СУБД

Слайд 40

Функции СУБД

- Управление данными на внешних носителях (жесткие диски, ленты и др.).
-

Функции СУБД - Управление данными на внешних носителях (жесткие диски, ленты и
Управление данными в оперативной памяти.
- Журналирование изменений, резервное копирование и восстановление БД после аварий.
- Поддержка лингвистических средств определения и манипулирования данными.

Слайд 41

По способу доступа к данным
Файл-серверные. Сервер лишь место хранения, обработка на

По способу доступа к данным Файл-серверные. Сервер лишь место хранения, обработка на
клиенте, файловые блокировки, нагрузка на сеть, мощные пользовательские ПК, сбой клиента ведет к краху.
MS Access, Paradox, dBase, FoxPro
Клиент-серверные. Обработка на сервере, централизаций управления, слабые пользовательские ПК.
MS SQL Server, Oracle Database, MySQL.
Встраиваемые. Часть готового продукта, мобильные устройства, единое пространство с приложением.
MS SQL Server Compact, OpenEdge, SQLite, Firebird Embedded, InterBase SMP

Классификация СУБД

Слайд 42

Классификация СУБД

По масштабам задач
Настольные. Файл-серверный доступ, ограниченный функционал, до 20 пользователей,

Классификация СУБД По масштабам задач Настольные. Файл-серверный доступ, ограниченный функционал, до 20
малый бизнес.
dBase, FoxPro, MS Access.
Серверные. Клиент-сервер(n-звеньев), высокие нагрузки, крупный бизнес, обработка на сервере, централизаций управления, слабые пользовательские ПК.
MS SQL Server, Oracle Database, DB2.

По модели данных (как БД)
Реляционные: MS SQL Server, Oracle Database, MySQL.
Объектные: Cache, GemStone.
Иерархические:  IMS от IBM, System 2000 от SAS-Institute.
Сетевые: Cerebrum, dbVista.

Слайд 43

Установка СУБД

Выбор аппаратной платформы.
Установка необходимого системного ПО.
Выбор требующихся для

Установка СУБД Выбор аппаратной платформы. Установка необходимого системного ПО. Выбор требующихся для
установки компонент СУБД.
Выбор размещения каталогов файлов БД, журналов, системного каталога.
Конфигурация запуска служб СУБД.
Конфигурация сетевой доступности.

Слайд 44

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

Настройка требуется не всегда. Прежде чем настраивать, нужно определить цель. Виды настроек:
(резервное копирование, импорт данных, сбор статистики, переиндексация, событийная активность, права доступа).
Настройка производительности (время отклика, время выполнения, выравнивание загрузки сервера).
Средства настройки:
Переписывание кода «тяжелых» запросов.
Настройка инфраструктуры (размещение данных, индексы, кэширование, директивы оптимизатору).
Наращивание аппаратной мощи (коэффициент < 1).

Настройка СУБД

Слайд 45

Колоночные СУБД

Хранят данные не построчно, а по столбцам.
Эффективны в аналитических системах с

Колоночные СУБД Хранят данные не построчно, а по столбцам. Эффективны в аналитических

преобладающими операциями чтения.

Колоночные СУБД

Слайд 46

Проектирование, разработка и обслуживание баз данных

Обеспечение безопасности и контроль доступа к

Проектирование, разработка и обслуживание баз данных Обеспечение безопасности и контроль доступа к базе данных.
базе данных.

Слайд 47

Абсолютно безопасное ПО – недостижимая цель.
ПО должно быть достаточно безопасным.
Нет одного регламента

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

Безопасность ПО

Слайд 48

Организационные меры

Пользователь должен иметь только одну учетную запись. Нет обезличенным учеткам,

Организационные меры Пользователь должен иметь только одну учетную запись. Нет обезличенным учеткам,
нет передаче паролей, подменяешь – получи временные права.
Смена пароля каждые 3 - 6 месяцев.
Длина пароля должна быть не менее 6 символов. Вариантов 4*1012
Количество попыток входа в систему не должно превышать 5. Блокировка узла, блокировка учетки, временное ограничение активности.

Слайд 49

Встроенные средства. Создается отдельная учетка на MS SQL, он всё и контролирует.

Встроенные средства. Создается отдельная учетка на MS SQL, он всё и контролирует.
Web-сервисы.
CREATE LOGIN BillGates
WITH
PASSWORD = 'iHateRipeApples' MUST_CHANGE,
DEFAULT_DATABASE = AdventureWorks,
DEFAULT_LANGUAGE = Russian,
CHECK_EXPIRATION = ON,
CHECK_POLICY = ON

Безопасность в MS SQL Server

Интеграция с учетными данными Windows.
Учетные данные берутся из домена Windows: из пользователей и из групп. Корпоративные приложения.
CREATE LOGIN [Microsoft\BillGates]
FROM WINDOWS
WITH DEFAULT_DATABASE = AdventureWorks,
DEFAULT_LANGUAGE = Russian

Слайд 50

Управление именами входа на сервер

ALTER LOGIN
ALTER LOGIN
[ { ENABLE |

Управление именами входа на сервер ALTER LOGIN ALTER LOGIN [ { ENABLE
DISABLE } ]
[ { WITH
PASSWORD = ''
[{[UNLOCK ] [MUST_CHANGE]}
DEFAULT_DATABAS E =
DEFAULT_LANGUAGE =
NAME =
CHECK_EXPIRATION ={ON|OFF}
CHECK_POLIСY
={ON|OFF}}]

Слайд 51

Управление пользователями БД

Управление доступом пользователей к БД начинается когда уже имеется имя

Управление пользователями БД Управление доступом пользователей к БД начинается когда уже имеется
входа на сервер. Включает в себя создание пользователя базы данных (USER) и предоставление ему прав на выполнение определенных действии над определенными объектами БД.
Создание пользователя базы данных выполняется из программы Management Studio или с помощью команды «CREATE USER»

CREATE USER [Microsoft\BillGates]
FOR LOGIN [Microsoft\BillGates]
WITH DEFAULT_SCHEMA = [sales]

Слайд 52

Без тонкой настройки прав доступа на выполнение конкретных операций над конкретными объектами

Без тонкой настройки прав доступа на выполнение конкретных операций над конкретными объектами
БД невозможно обеспечить гибкую систему безопасности. Deny сильнее GRANT.

Доступ к объектам БД

GRANT * SELECT ON [Product] TO [MyBDUser]
DENY ** INSERT
REVOKE UPDATE
DELETE
EXECUTE

* [WITH GRANT OPTION]
** [CASCADE]

Слайд 53

Доступ на выполнение операторов

Разрешения могут быть даны не только на объекты базы

Доступ на выполнение операторов Разрешения могут быть даны не только на объекты
данных, но и на операторы, которые не связаны с конкретными объектами БД. Такие операторы обеспечивают управление безопасностью на уровне сервера.

Колоночные СУБД

CREATE DATABASE – право создавать базы данных.
CREATE TABLE - право создавать таблицы.
CREATE VIEW – право создавать представления.
CREATE PROCEDURE – право создавать хранимые процедуры.
BACKUP DATABASE – право создавать резервные копии БД.

Слайд 54

Доступ на основе ролей

Роль — это совокупность прав доступа, которые можно сразу

Доступ на основе ролей Роль — это совокупность прав доступа, которые можно
же назначить пользователю, определив его как члена этой роли.

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

Слайд 55

Роли сервера

Роль sysadmin - любые действия. Win Administrators по умолчанию члены.
Роль

Роли сервера Роль sysadmin - любые действия. Win Administrators по умолчанию члены.
serveradmin - конфигурировать сервер, останавливать работу сервера.
Роль setupadmin ограничивается управлением связанными серверами и процедурами запуска.
Роль processadmin предоставляет возможность управлять процессами, уничтожать процессы.
Роль dbcreator – создание и модификацией баз данных
Роль diskadmin позволяет управлять файлами, присоединять и отсоединять базы данных.
Роль bulkadmin - выполнение оператора массовой вставки «BULK INSERT», но не дает прав на оычный «INSERT»

Слайд 56

Роли базы данных

Роль db_owner - владелец БД, обычно полные права.
Роль db_accessadmin

Роли базы данных Роль db_owner - владелец БД, обычно полные права. Роль
- добавление пользователей БД.
Роль db_datareader - доступ к выборке из всех таблиц БД.
Роль db_datawriter - изменение данных всех таблиц БД.
Роль db_ddladmin - разрешено выполнение DDL операторов.
Роль db_securityadmin – не создает пользователей в БД, но позволяет управлять ролями и членами ролей, определять права на выполнение операторов и права доступа к объектам.
Роль db_backupoperator - выполнять резервное копирование.
Роль db_denydatareader - эквивалентно оператору «DENY SELECT», применительно к каждой таблице и представлению в базе данных.
Роль db_denydatawriter аналогична роли db_denydatareader, но распространяется только на операторы «INSERT», «UPDATE», «DELETE»

Слайд 57

Пользовательские роли БД

Являются реальной основой системы обеспечения безопасности базы данных . При создании

Пользовательские роли БД Являются реальной основой системы обеспечения безопасности базы данных .
этих ролей необходимо принять решение о том, какие права они должны включать.
Дают возможность классифицировать пользователей по категориям доступа, поскольку роли позволяют вносить изменения в одном месте, а затем экстраполировать эти изменения по всем членам роли.

CREATE ROLE [TestRole]
GRANT SELECT ON [Product] TO [TestRole]
EXECUTE sp_addrolemember
@rolename = [TestRole],
@membername = [MyAccount]

Слайд 58

Рекомендации по безопасности

Настройте порты TCP\IP
О стандартном порте 1433 знают все –

Рекомендации по безопасности Настройте порты TCP\IP О стандартном порте 1433 знают все
замените.
- Держите sa под замком
Создайте невообразимый пароль, не давайте его пользователям.
Используйте представления, хранимые процедуры и функции для обеспечения безопасности.
Это скрывает структуру БД. Представления и табличные функции скрывают ширину и глубину данных. Хранимые процедуры скрывают логику и позволяют манипулировать данными, не предоставляя на них доступ.

Слайд 59

Microsoft Access

Технология создания реляционной базы данных (РБД)

Microsoft Access Технология создания реляционной базы данных (РБД)

Слайд 60

Этапы проектирования РБД

Построение информационно-логической модели данных предметной области
Определение структуры РБД
Конструирование таблиц БД

Этапы проектирования РБД Построение информационно-логической модели данных предметной области Определение структуры РБД
в Access
Создание схемы данных в Access
Ввод данных в таблицы (создание записей)

Слайд 61

Информационно-логическая модель данных

Информационно-логическая модель (ИЛМ) отображает данные предметной области в виде совокупности

Информационно-логическая модель данных Информационно-логическая модель (ИЛМ) отображает данные предметной области в виде
информационных объектов и связей между ними.
Примерами информационных объектов могут быть: ТОВАР, ПОСТАВЩИК, ЗАКАЗЧИК, СОТРУДНИК, ПОСТАВКА

Слайд 62

Виды информационных объектов РБД

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

Виды информационных объектов РБД Справочные (список сотрудников, прайс-лист, список категорий изделий, нормативы)
сведения о заказах, выполненных работах, произведенной продукции)

Слайд 63

Связи информационных объектов

Связь устанавливается между двумя логически взаимосвязанными информационными объектами, например:
Поставщик

Связи информационных объектов Связь устанавливается между двумя логически взаимосвязанными информационными объектами, например:
- товар
Склад - готовая продукция
Группа - студент

Слайд 64

Виды информационных связей между объектами РБД

Одно-однозначные 1:1(каждому экземпляру первого объекта соответствует один

Виды информационных связей между объектами РБД Одно-однозначные 1:1(каждому экземпляру первого объекта соответствует
экземпляр второго)
Одно-многозначные 1:М (каждому экземпляру первого объекта соответствует несколько экземпляров второго)
Много-многозначные М:N (каждому экземпляру первого объекта соответствует несколько экземпляров второго и наоборот, (каждому экземпляру второго объекта соответствует несколько экземпляров первого) )

Слайд 65

Подчиненность связанных объектов

В паре связанных объектов 1:1 и 1:М
один объект является

Подчиненность связанных объектов В паре связанных объектов 1:1 и 1:М один объект
главным, а другой –
подчиненным.
Главный объект обычно содержит
справочную информацию, а подчиненный
- учетно- отчетную.

Слайд 66

Логическая структура РБД

Каждый объект информационно-логической модели отображается реляционной таблицей. Каждый столбец (поле)

Логическая структура РБД Каждый объект информационно-логической модели отображается реляционной таблицей. Каждый столбец
реляционной таблицы соответствует одному из реквизитов объекта. Одно из полей определяется как КЛЮЧЕВОЕ. В каждой паре реляционных таблиц должно быть хотя бы одно одинаковое поле для связи.

Слайд 67

Пример связей 1:1 и 1:М между таблицами РБД

Пример связей 1:1 и 1:М между таблицами РБД

Слайд 68

Пример связи М:М между таблицами РБД

Связь М:М между таблицами Авторы и Книги

Пример связи М:М между таблицами РБД Связь М:М между таблицами Авторы и
реализуется в РБД с помощью таблицы-связки Книги/Авторы

Слайд 69

Порядок создания РБД

Создать таблицы в режиме Конструктор
Установить связи между таблицами
Создать формы для

Порядок создания РБД Создать таблицы в режиме Конструктор Установить связи между таблицами
таблиц
Заполнить таблицы РБД через формы

Слайд 70

Роль связей между таблицами РБД

Позволяют иерархически просматривать связанные записи из всех таблиц
Дают

Роль связей между таблицами РБД Позволяют иерархически просматривать связанные записи из всех
возможность автоматической выборки данных, относящихся к одному объекту, из всех таблиц
Позволяют контролировать правильность действий пользователя при добавлении и удалении записей

Слайд 71

Просмотр связанных записей

Просмотр связанных записей

Слайд 72

Организация связи между таблицами

Устанавливать связь между одноименными полями двух реляционных таблиц, проводя

Организация связи между таблицами Устанавливать связь между одноименными полями двух реляционных таблиц,
линию связи от КЛЮЧЕВОГО поля ГЛАВНОЙ таблицы к одноименному полю ПОДЧИНЕННОЙ Какая из таблиц главная должен определять пользователь. В процессе создания связей 1:1 и 1:М необходимо задавать ОБЕСПЕЧЕНИЕ ЦЕЛОСТНОСТИ ДАННЫХ

Слайд 73

Обеспечение целостности данных в РБД

Обеспечение целостности данных означает выполнение для взаимосвязанных таблиц

Обеспечение целостности данных в РБД Обеспечение целостности данных означает выполнение для взаимосвязанных
следующих условий корректировки БД:
∙         1. В подчиненную таблицу не может быть добавлена запись с не существующим в главной таблице значением ключевого поля;
2. В главной таблице нельзя удалить запись, если не удалены связанные с ней записи в подчиненной таблице;
∙         3. Изменение значений ключа связи главной таблицы должны приводить к изменению соответствующих значений в записях подчиненной таблицы.
Если установлен только параметр "Обеспечение целостности данных", то при попытке нарушить это условие Access выдает предупреждение. Если установлены параметры каскадного обновления и удаления записей, то Access будет автоматически производить корректировку данных в связанных таблицах.

Слайд 74

Обеспечение целостности данных. Пример

В таблицу Сессия нельзя ввести запись со значением поля

Обеспечение целостности данных. Пример В таблицу Сессия нельзя ввести запись со значением
НОМЕР, которого нет в главной таблице Студент. Удаление записи в главной таблице Студент приведет к автоматическому удалению связанной записи в таблице Сессия.

Слайд 75

Курсовая работа

РАЗРАБОТКА БАЗЫ ДАННЫХ ДЛЯ РЕШЕНИЯ ЗАДАЧ НАЧИСЛЕНИЯ ЗАРАБОТНОЙ ПЛАТЫ С ИСПОЛЬЗОВАНИЕМ

Курсовая работа РАЗРАБОТКА БАЗЫ ДАННЫХ ДЛЯ РЕШЕНИЯ ЗАДАЧ НАЧИСЛЕНИЯ ЗАРАБОТНОЙ ПЛАТЫ С
СУБД ACCESS

Выполнил: студент группы 08-ПИ
Проверил доцент
Лобова О.Е.

г.Сочи, 2010

Слайд 76

Цель создания БД

Разработка средствами приложения MS Access автоматизированной системы «Начисление зарплаты» для

Цель создания БД Разработка средствами приложения MS Access автоматизированной системы «Начисление зарплаты» для малого предприятия.
малого предприятия.

Слайд 77

Для реализации поставленной цели надо решить следующие задачи:

Изучить предметную область
Выбрать СУБД.
Построить информационно-логическую

Для реализации поставленной цели надо решить следующие задачи: Изучить предметную область Выбрать
модель.
Реализовать информационно-логическую модель с использованием СУБД. (Создать БД по информационно-логической модели)
Создать пользовательский интерфейс.
Создать инструкцию пользователя

Слайд 78

Актуальность

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

Актуальность Расчет заработной платы сотрудникам малых предприятий производиться бухгалтерами либо с помощью
«1С-бухгалтерия», либо вручную. Так как программа «1С-бухгалтерия» очень сложна в применении, и ее может освоить не каждый бухгалтер, то расчет заработной платы производится с помощью электронных таблиц Excel.. В данной работе будут рассмотрены принципы создания информационной системы «Начисление заработной платы» для малого предприятия с помощью СУБД MS Access, ориентированной на комфортную работу бухгалтеров.

Слайд 79

Структура БД

Сведения о сотрудниках: Ф.И.О., подразделение, должность, оклад, количество детей и т.п.
Сведения

Структура БД Сведения о сотрудниках: Ф.И.О., подразделение, должность, оклад, количество детей и
о премиях, надбавках и мат. помощи.
Табель учета рабочего времени.

Слайд 80

Пример входного документа

Пример входного документа

Слайд 81

ER-диаграмма «Начисление зарплаты»

ER-диаграмма «Начисление зарплаты»

Слайд 82

ИЛМ предметной области

ИЛМ предметной области

Слайд 83

Схема структуры БД

Схема структуры БД

Слайд 84

Интерфейс системы Окно кнопочной формы

Интерфейс системы Окно кнопочной формы

Слайд 85

Окно формы «Табель»

Окно формы «Табель»

Слайд 86

Окно формы «Зарплата»

Окно формы «Зарплата»

Слайд 87

Пример выходного документа

Изучена предметная область
Создано техническое задание
Разработана логическая и физическая модель БД
БД

Пример выходного документа Изучена предметная область Создано техническое задание Разработана логическая и
реализована В MS Access

Слайд 88

База данных «Ж/Д вокзал»

База данных «Ж/Д вокзал»

Слайд 89

Цель создания базы данных

Повышение эффективности системы пассажирских Ж/Д перевозок на основе

Цель создания базы данных Повышение эффективности системы пассажирских Ж/Д перевозок на основе использования современных информационных технологий.
использования современных информационных технологий.

Слайд 90

Задачи решаемые Ж/Д вокзалом

Управление Ж/Д потоком
Предоставление информации о проходящих рейсах
Продажа билетов на

Задачи решаемые Ж/Д вокзалом Управление Ж/Д потоком Предоставление информации о проходящих рейсах Продажа билетов на поезда
поезда

Слайд 91

Входные документы Расписание

Входные документы Расписание

Слайд 92

Выходной документ

Выходной документ

Слайд 93

ER –диаграмма (диаграмма сущность – связь)

ER –диаграмма (диаграмма сущность – связь)

Слайд 94

Логическая схема базы данных

Логическая схема базы данных

Слайд 95

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

Станция

Места

Поезд

Пример описания физической модели Представим физическую модель в виде таблиц Станция Места Поезд

Слайд 96

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

Для создания таблиц воспользуемся конструктором, создадим 8 таблиц

Реализация базы данных Создание таблиц Для создания таблиц воспользуемся конструктором, создадим 8
в соответствии с физической моделью БД

Слайд 97

Схема данных

Схема данных

Слайд 98

Интерфейс системы Окно кнопочной формы

Интерфейс системы Окно кнопочной формы

Слайд 99

Форма заказа билета

Форма заказа билета

Слайд 100

Возврат билета осуществляется через окно возврат билета

Возврат билета осуществляется через окно возврат билета