Презентация "Базы данных и язык SQL"
Подписи к слайдам:
- <number>
- ® 2005. EPAM Systems. All rights reserved.
- EPAM POWER POINT TITLE
- Sub Topic
- ® 2007. EPAM Systems. All rights reserved.
- Delivering Excellence in Software Engineering
- Базы данных и язык SQL
- <number>
- Базы данных
- База данных (БД) - некий организованный набор информации.
- Система управления базами данных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.
- <number>
- Пример БД
- <number>
- Базовые свойства СУБД
- скорость;
- разграничение доступа;
- гибкость;
- целостность;
- отказоустойчивость.
- <number>
- Базовые функции СУБД
- интерпретация запросов пользователя, сформированных на специальном языке;
- определение данных (создание и поддержка специальных объектов, хранящих поступающие от пользователя данные, ведение внутреннего реестра объектов и их характеристик – так называемого словаря данных);
- исполнение запросов по выбору, изменению или удалению существующих данных или добавлению новых данных;
- <number>
- Базовые функции СУБД
- безопасность (контроль запросов пользователя на предмет попытки нарушения правил безопасности и целостности, задаваемых при определении данных);
- производительность (поддержка специальных структур для обеспечения максимально быстрого поиска нужных данных);
- архивирование и восстановление данных.
- <number>
- Модель данных в реляционных СУБД
- По типу модели данных СУБД делятся на сетевые, иерархические, реляционные, объектно-ориентированные, объектно-реляционные.
- Реляционная СУБД представляет собой совокупность именованных двумерных таблиц данных, логически связанных (находящихся в отношении) между собой.
- <number>
- Реляционная БД
- Таблицы состоят из строк и именованных столбцов, строки представляют собой экземпляры информационного объекта, столбцы – атрибуты объекта. Строки иногда называют записями, а столбцы – полями записи.
- Таким образом, в реляционной модели все данные представлены для пользователя в виде таблиц значений данных, и все операции над базой сводятся к манипулированию таблицами.
- <number>
- Реляционная БД
- <number>
- Связь в реляционной БД
- Связи между отдельными таблицами в реляционной модели в явном виде могут не описываться.
- Они устанавливаются пользователем при написании запроса на выборку данных и представляют собой условия равенства значений соответствующих полей.
- <number>
- Связь в реляционной БД
- Первичный ключ (главный ключ, primary key, PK). Представляет собой столбец или совокупность столбцов, значения которых однозначно идентифицируют строки.
- Вторичный ключ (внешний, foreign key, FK) - Столбец или совокупность столбцов, которые в данной таблице не являются первичными ключами, но являются первичными ключами в другой таблице.
- <number>
- Связь в реляционной БД
- <number>
- Ограничения целостности
- Целостность базы данных (database integrity) — соответствие имеющейся в базе данных информации её внутренней логике, структуре и всем явно заданным правилам.
- Каждое правило, налагающее некоторое ограничение на возможное состояние базы данных, называется ограничением целостности (integrity constraint).
- Ограничения целостности могут относиться к разным информационным объектам: атрибутам, кортежам, отношениям, связям между ними и т.д.
- <number>
- Ограничения целостности
- Для полей (атрибутов) используются следующие виды ограничений:
- • Тип и формат поля .
- • Задание диапазона значений.
- • Недопустимость пустого поля.
- • Задание домена.
- • Проверка на уникальность значения какого-либо поля. Ограничение позволяет избежать записей-дубликатов.
- <number>
- Ограничения целостности
- Ограничения таблицы : PRIMARY KEY (Имя столбца.,..)
- UNIQUE (Имя столбца.,..) FOREIGN KEY (Имя столбца.,..) REFERENCES Имя таблицы [(Имя столбца.,..)] [Ссылочная спецификация] CHECK Предикат
- DEFAULT = <Значение по умолчанию>
- NOT NULL
- Ссылочная спецификация:
- [ON UPDATE {CASCADE | SET NULL | SET DEFAULT | RESTRICTED| NO ACTION}] [ON DELETE {CASCADE | SET NULL | SET DEFAULT | RESTRICTED| NO ACTION}]
- <number>
- Нормализация
- Основная цель нормализации – устранение избыточности данных.
- Первая нормальная форма (1НФ, 1NF)
- Вторая нормальная форма (2НФ, 2NF)
- Третья нормальная форма (3НФ, 3NF)
- Нормальная форма Бойса — Кодда (НФБК, BCNF)
- Четвёртая нормальная форма (4НФ, 4NF)
- Пятая нормальная форма (5НФ, 5NF)
- Доменно-ключевая нормальная форма (ДКНФ, DKNF).
- <number>
- Нормализация модели данных
- Первая нормальная форма:
- информация в каждом поле таблицы является неделимой и не может быть разбита на подгруппы.
- <number>
- Нормализация модели данных
- Вторая нормальная форма:
- таблица соответствует 1НФ и в таблице нет неключевых атрибутов, зависящих от части сложного (состоящего из нескольких столбцов) первичного ключа.
- <number>
- Нормализация модели данных
- Третья нормальная форма:
- таблица соответствует первым двум НФ и все неключевые атрибуты зависят только от первичного ключа и не зависят друг от друга.
- <number>
- Язык SQL
- SQL (Structured Query Language) – непроцедурный язык взаимодействия приложений и пользователей с реляционными СУБД, состоящий из набора стандартных команд на английском языке.
- Отдельные команды изначально никак логически не связаны друг с другом.
- <number>
- Язык SQL
- SQL может использоваться как интерактивный (для выполнения запросов) и как встроенный (для построения прикладных программ).
- Базовый вариант SQL содержит порядка 40 команд (часто еще называемых запросами или операторами) для выполнения различных действий внутри СУБД.
- <number>
- Операторы SQL
- Выделяют следующие группы операторов SQL:
- операторы определения объектов базы данных (Data Definition Language - DDL;
- операторы манипулирования данными (Data Manipulation Language - DML);
- команды управления транзакциями (Transaction Control Language – TCL);
- операторы защиты и управления данными (Data Control Language – DCL).
- <number>
- Операторы SQL
- Операторы DDL - определения объектов базы данных :
- CREATE DATABASE - создать базу данных
- DROP DATABASE - удалить базы данных
- CREATE TABLE - создать таблицу
- ALTER TABLE - изменить таблицу
- DROP TABLE - удалить таблицу
- CREATE DOMAIN - создать домен
- ALTER DOMAIN - изменить домен
- DROP DOMAIN - удалить домен
- CREATE VIEW - создать представление
- DROP VIEW - удалить представление
- <number>
- Операторы SQL
- Операторы DML - манипулирования данными
- SELECT - отобрать строки из таблиц
- INSERT - добавить строки в таблицу
- UPDATE - изменить строки в таблице
- DELETE - удалить строки в таблице
- <number>
- Операторы SQL
- Команды управления транзакциями TCL
- Используются для управления изменениями данных, производимыми DML-командами. С их помощью несколько DML-команд могут быть объединены в единое логическое целое, называемое транзакцией.
- COMMIT - завершить транзакцию и зафиксировать все изменения в БД
- ROLLBACK - отменить транзакцию и отменить все изменения в БД
- SET TRANSACTION - установить некоторые условия выполнения транзакции
- <number>
- Операторы SQL
- Операторы защиты и управления данными – DCL
- GRANT - предоставить привилегии пользователю или приложению на манипулирование объектами
- REVOKE - отменить привилегии пользователя или приложения
- <number>
- Язык SQL
- звездочка (*) - для обозначения "все";
- квадратные скобки ([]) – конструкции, заключенные в эти скобки, являются необязательными (т.е. могут быть опущены);
- фигурные скобки ({}) –конструкции, заключенные в эти скобки, должны рассматриваться как целые синтаксические единицы;
- многоточие (...) – указывает на то, что непосредственно предшествующая ему синтаксическая единица факультативно может повторяться один или более раз;
- прямая черта (|) – означает наличие выбора из двух или более возможностей.
- <number>
- Язык SQL
- точка с запятой (;) – завершающий элемент предложений SQL;
- запятая (,) – используется для разделения элементов списков;
- пробелы ( ) – могут вводиться для повышения наглядности между любыми синтаксическими конструкциями предложений SQL;
- прописные жирные латинские буквы и символы – используются для написания конструкций языка SQL;
- строчные буквы – используются для написания конструкций, которые должны заменяться конкретными значениями, выбранными пользователем;
- <number>
- SELECT
- Для выборки данных используется команда SELECT.
- SELECT [DISTINCT] <список столбцов>
- FROM <имя таблицы> [JOIN <имя таблицы> ON <условия связывания>]
- [WHERE <условия выборки>]
- [GROUP BY <список столбцов для группировки> [HAVING <условия выборки групп>] ]
- [ORDER BY <список столбцов для сортировки>]
- <number>
- Секция DISTINCT
- Если в результирующем наборе данных встречаются одинаковые строки (значения всех полей совпадают), можно от них избавиться, указав ключевое слово DISTINCT перед списком столбцов.
- SELECT DISTINCT Position FROM Employees
- <number>
- Секция FROM
- Перечень таблиц, из которых производится выборка данных, указывается в секции FROM. Выборка возможна как из одной таблицы, так и из нескольких логически взаимосвязанных.
- Логическая взаимосвязь осуществляется с помощью подсекции JOIN.
- На каждую логическую связь пишется отдельная подсекция.
- Внутри подсекции указывается условие связи двух таблиц (обычно по условию равенства первичных и вторичных ключей).
- <number>
- Пример выборки
- <number>
- Пример выборки
- SELECT Employees.TabNum, Employees.Name, Departments.Name
- FROM Employees
- JOIN Departments ON Employees.DeptNum =
- Departments.DeptNum
- <number>
- Пример выборки
- SELECT Employees.TabNum, Employees.Name, Departments.Name,
- Cities.Name
- FROM Employees
- JOIN Departments ON Employees.DeptNum = Departments.
- DeptNum
- JOIN Cities ON Departments.City = Cities.City
- <number>
- Секция JOIN
- SELECT Table1.Field1, Table2.Field2
- FROM Table1
- JOIN Table2
- ON Table2.ID1 =Table1.ID1
- AND Table2.ID2 =Table1.ID2
- AND ….
- <number>
- Секция JOIN
|
|
|
|
|
|
|
|
|
|
|
|
- <number>
- Секция JOIN
- SELECT Table1.Field1, Table2.Field2
- FROM Table1
- JOIN Table2 ON Table1.Key1 = Table2.Key2
- <number>
- Секция JOIN
- SELECT Table1.Field1, Table2.Field2
- FROM Table1
- LEFT JOIN Table2 ON Table1.Key1 = Table2.Key2
- SELECT Table1.Field1, Table2.Field2
- FROM Table1
- RIGHT JOIN Table2 ON Table1.Key1 = Table2.Key2
- <number>
- Секция JOIN
- SELECT Table1.Field1, Table2.Field2
- FROM Table1
- FULL JOIN Table2 ON Table1.Key1 = Table2.Key2
- SELECT Table1.Field1, Table2.Field2
- FROM Table1
- CROSS JOIN Table2
- <number>
- Секция WHERE
- WHERE [NOT] <условие1> [ AND | OR <условие2>]
- Условие представляет собой конструкцию вида:
- <столбец таблицы, константа или выражение>
- <оператор сравнения> <столбец таблицы, константа или выражение>
- или
- IS [NOT] NULL
- или
- [NOT] LIKE <шаблон>
- или
- [NOT] IN (<список значений>)
- или
- [NOT] BETWEEN <нижняя граница> AND <верхняя граница>
- <number>
- Операторы сравнения
- Примеры запросов с операторами сравнения:
- SELECT * FROM Table WHERE Field > 100
- SELECT * FROM Table WHERE Field1 <= (Field2 + 25)
- Выражение IS [NOT] NULL проверяет данные на [не]пустые значения:
- SELECT * FROM Table WHERE Field IS NOT NULL
- SELECT * FROM Table WHERE Field IS NULL
- <number>
- Операторы сравнения
- [NOT] LIKE - используется при проверке текстовых данных на [не]соответствие заданному шаблону. Символ ‘%’ (процент) в шаблоне заменяет собой любую последовательность символов, а символ ‘_’ (подчеркивание) – один любой символ.
- SELECT * FROM Employees WHERE Name LIKE ‘Иван%’
- SELECT * FROM Employees WHERE Name LIKE ‘__д%’
- <number>
- Операторы сравнения
- [NOT] IN проверяет значения на [не]вхождение в определенный список.
- SELECT * FROM Employees WHERE Position IN (‘Начальник’, ‘Менеджер’)
- [NOT] BETWEEN проверяет значения на [не]попадание в некоторый диапазон:
- SELECT * FROM Employees WHERE Salary BETWEEN 200 AND 500
- <number>
- Операторы сравнения
- SELECT *
- FROM Employees
- WHERE Position IN (‘Начальник’, ‘Менеджер’)
- AND Salary BETWEEN 200 AND 500
- SELECT *
- FROM Employees
- WHERE (Position = ‘Начальник’ OR Position = ‘Менеджер’)
- AND Salary BETWEEN 200 AND 500
- SELECT *
- FROM Employees
- WHERE NOT (Position = ‘Начальник’ OR Position =
- ‘Менеджер’)
- <number>
- Секция ORDER BY
- ORDER BY - предназначена для сортировки строк результирующего набора данных.
- ORDER BY Field1 [ASC | DESC] [, Field2 [ASC | DESC] ] [, …]
- ASC (по умолчанию) предписывает производить сортировку по возрастанию, а DESC – по убыванию.
- SELECT * SELECT *
- FROM Employees FROM Employees
- WHERE Position = ‘Начальник’ ORDER BY DeptNum, Salary DESC
- ORDER BY Salary DESC
- SELECT *
- FROM Employees
- ORDER BY DeptNum ASC, Salary DESC
- <number>
- Групповые функции
- SELECT MAX(SALARY)
- FROM Employees
- SELECT COUNT(*)
- FROM Employees
- <number>
- Секция GROUP BY
- GROUP BY - разбивает итоговую выборку на подгруппы.
- GROUP BY Field1 [, Field2] [, …]
- SELECT DeptNum, MAX(SALARY)
- FROM Employees
- GROUP BY DeptNum
- В этом случае функция MAX будет считаться отдельно для всех записей с одинаковым значением поля DeptNum.
- <number>
- Секция HAVING
- SELECT DeptNum, MAX(SALARY)
- FROM Employees
- GROUP BY DeptNum
- HAVING MAX(SALARY) > 1000
- Секции HAVING и WHERE взаимно дополняют друг друга. Сначала с помощью ограничений WHERE формируется итоговая выборка, затем выполняется разбивка на группы по значениям полей, заданных в GROUP BY. Далее по каждой группе вычисляется групповая функция и в заключение накладывается условие HAVING.
- <number>
- INSERT
- INSERT INTO <имя таблицы> [(<список имен колонок>)]
- VALUES(<список констант>)
- INSERT INTO Employees(TabNum, Name, Position, DeptNum, Salary)
- VALUES (5, ‘Сергеев’, ‘Старший менеджер’, 15, 850)
- <number>
- INSERT
- INSERT INTO Employees(TabNum, Name, DeptNum, Salary)
- VALUES (45, ‘Сергеев’, 15, 850)
- INSERT INTO Employees
- VALUES (45, ‘Сергеев’, ‘Старший менеджер’, 15, 850)
- INSERT INTO Employees
- VALUES (45, ‘Сергеев’, NULL, 15, 850)
- <number>
- INSERT
- INSERT INTO <имя таблицы> [(<список имен колонок>)]
- <команда SELECT>
- INSERT INTO Table1(Field1, Field2)
- SELECT Field3, (Field4 + 5) FROM Table2
- <number>
- DELETE
- DELETE FROM <имя таблицы> [WHERE <условия поиска>]
- Если опустить секцию условий поиска WHERE, из таблицы будут удалены все записи. Иначе – только записи, удовлетворяющие критериям поиска. Форматы секций WHERE команд SELECT и DELETE аналогичны.
- DELETE FROM Employees
- DELETE FROM Employees WHERE TabNum = 45
- <number>
- UPDATE
- UPDATE < имя таблицы>
- SET <имя колонки> = <новое значение> , <имя колонки> = <новое значение>, …
- WHERE <условия поиска>]
- UPDATE Employees
- SET Salary = Salary + 100
- UPDATE Employees
- SET Position = ‘Старший менеджер’, Salary = 1000
- WHERE TabNum = 45 AND Position IS NULL
- <number>
- CREATE TABLE
- CREATE TABLE <имя таблицы>
- (
- <имя колонки> <тип колонки>[(<размер колонки>)] [<ограничение целостности уровня колонки>]
- [, <имя колонки> <тип колонки>[(<размер колонки>)] [<ограничение целостности уровня колонки>]]
- [, …]
- [<ограничение целостности уровня таблицы>]
- [,<ограничение целостности уровня таблицы>]
- [, …]
- )
- <number>
- CREATE TABLE
- CREATE TABLE Departments
- (
- DeptNum int NOT NULL PRIMARY KEY,
- Name varchar(80) NOT NULL
- )
- CREATE TABLE Employees
- (
- TabNum int NOT NULL PRIMARY KEY,
- Name varchar(100) NOT NULL,
- Position varchar(200),
- DeptNum int,
- Salary decimal(10, 2) DEFAULT 0,
- CONSTRAINT FK_DEPARTMENT FOREIGN KEY (DeptNum)
- REFERENCES Departments(DeptNum)
- )
- <number>
- ALTER TABLE
- Команда ALTER TABLE позволяет добавлять новые колонки и ограничения целостности, удалять их, менять типы колонок, переименовывать колонки.
- ALTER TABLE Departments ADD COLUMN City int
- ALTER TABLE Departments DROP COLUMN City
- ALTER TABLE Departments ADD
- CONSTRAINT FK_City
- FOREIGN KEY (City)
- REFERENCES Cities(City)
- ALTER TABLE Departments DROP CONSTRAINT FK_City
- <number>
- DROP TABLE
- Удаление ранее созданной таблицы производится командой DROP TABLE:
- DROP TABLE <Название таблицы>
- <number>
- ® 2005. EPAM Systems. All rights reserved.
- EPAM POWER POINT TITLE
- Sub Topic
- ® 2007. EPAM Systems. All rights reserved.
- Delivering Excellence in Software Engineering
- Вопросы?