Разделы презентаций


SQL ( Structured Query Language )- Структурированный Язык Запросов. -

Содержание

Стандарты SQLSQL89 – ANSI SQL – SQL1SQL 92 (окончательная формулировка 1995) – SQL2SQL99 – SQL3Большинство серверов поддерживают в настоящий момент SQL2

Слайды и текст этой презентации

Слайд 1SQL (Structured Query Language)- Структурированный Язык Запросов. - стандартный язык

запросов по работе с реляционными БД
Карпова Татьяна Сергеевна, к.т.н., профессор

МБИ
SQL (Structured Query Language)- Структурированный Язык Запросов. - стандартный язык запросов по работе с реляционными БДКарпова Татьяна

Слайд 2Стандарты SQL
SQL89 – ANSI SQL – SQL1
SQL 92 (окончательная формулировка

1995) – SQL2
SQL99 – SQL3
Большинство серверов
поддерживают в
настоящий момент

SQL2
Стандарты SQLSQL89 – ANSI SQL – SQL1SQL 92 (окончательная формулировка 1995) – SQL2SQL99 – SQL3Большинство серверов поддерживают

Слайд 3Структура языка SQL

Структура языка SQL

Слайд 4   Язык запросов Data Query Language (DQL)
Оператор

SELECT
Означает: выбрать строки
Действие: выбирает строки из одной или нескольких таблиц

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

  Язык запросов  Data Query Language (DQL)  Оператор SELECTОзначает: выбрать строкиДействие: выбирает строки из

Слайд 5Синтаксис оператора SELECT
SELECT
FROM
WHERE

соединения>
GROUP BY
HAVING
ORDER BY

столбцов упорядочения>

Синтаксис оператора SELECT	SELECT 	FROM WHERE GROUP BY HAVING ORDER BY

Слайд 6Список вывода
Фактически список столбцов результирующей таблицы
В список могут входить

столбцы исходных таблиц
Агрегатные функции
Выражения из столбцов и функций
*
Список может

предваряться ключевыми словами ALL или DISTINCT
Список вывода Фактически список столбцов результирующей таблицыВ список могут входить столбцы исходных таблицАгрегатные функцииВыражения из столбцов и

Слайд 7Смысл ключевых слов в списке вывода
ALL означает, что в результирующий

набор строк включаются все строки, удовлетворяющие условиям запроса
DISTINCT означает,

что в результирующий набор включаются только различные строки, т.е. дубликаты строк результата не включаются в результирующий набор
* означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса
Смысл ключевых слов в списке выводаALL означает, что в результирующий набор строк включаются все строки, удовлетворяющие условиям

Слайд 8Смысл остальных ключевых слов оператора SELECT
В части FROM задается перечень

исходных отношений (таблиц) запроса.
В части WHERE задаются условия отбора срок

результата или условия соединения кортежей исходных таблиц.
В части GROUP BY задается список полей группировки.
В части HAVING задаются предикаты-условия, накладываемые на каждую группу.
В части ORDER BY задается список полей упорядочения результата.
Смысл остальных ключевых слов оператора SELECT В части FROM задается перечень исходных отношений (таблиц) запроса.В части WHERE

Слайд 9Пример учебной БД

Пример учебной БД

Слайд 10Примеры простейших запросов
Вывести содержимое таблицы Cityes
Select * from Cityes
Вывести список

названий городов, которые присутствуют в нашей БД
Select City from Cityes
Вывести

список городов, из которых у нас есть клиенты
Select Distinct City from Cityes, Clients
Where Cityes.kod = Clients. kod


Примеры простейших запросовВывести содержимое таблицы CityesSelect * from CityesВывести список названий городов, которые присутствуют в нашей БДSelect

Слайд 11Примеры простейших запросов
Вывести список клиентов из города «Санкт-Петербург»
Select Name from

Cityes, Clients
Where Cityes.kod = Clients. kod and
City=‘Санкт-Петербург’
Вывести список счетов клиента

«Петров А.А.»
Select bill from Clients,Biils
Where Clients.Id_ckients=Biils.ID_ckients and name=‘Петров А.А.’




Примеры простейших запросовВывести список клиентов из города «Санкт-Петербург»Select Name from Cityes, ClientsWhere Cityes.kod = Clients. kod andCity=‘Санкт-Петербург’Вывести

Слайд 12Обработка неопределенных значений
Неопределенные значения обозначаются при визуализации содержимого БД как

NULL
Нельзя напрямую сравнивать одно неопределенное значение с другим неопределенным значением
NULL

<> NULL
Для выявления неопределенных значений используются специальные предикаты
A Is NULL – истинен тогда, когда значение атрибута А неопределено
A Is Not Null -истинен тогда, когда значение атрибута А определено

Обработка неопределенных значенийНеопределенные значения обозначаются при визуализации содержимого БД как NULLНельзя напрямую сравнивать одно неопределенное значение с

Слайд 13В части WHERE используются:
предикаты сравнения { =, , >,=,

предикат Between, предикат IN, NOT IN, предикат сравнения с образцом

LIKE и NOT LIKE, предикат EXIST и NOT EXIST.
предикат Between - принимает значение между а1 и а2 включительно.
предикат Not Between - не принимает значение между а1 и а2
В части WHERE используются: предикаты сравнения { =, , >,=,

Слайд 14Смысл предикатов
предикат IN - входит в множество / Not IN

- не входит в множество.
предикат LIKE - включает (подобен) шаблону
Шаблон

может содержать символы _ подчеркивания для обозначения любого одиночного символа;
% символ процента - для обозначения любой произвольной последовательности символов.
Предикат LIKE истинен тогда, когда значение атрибута, заданного именем столбца в текущем кортеже включает в себя заданный <шаблон>.
Предикат NOT LIKE – истинен тогда, когда значение атрибута в текущем кортеже не включает в себя заданный <шаблон>.
Предикат IS NULL - неизвестно, неопределено
предикат EXISTS - существует что-то , истинен тогда, когда подзапрос к которому применяется предикат содержит хотя бы одну строку, т.е. не пуст.

Смысл предикатовпредикат IN - входит в множество / Not IN - не входит в множество.предикат LIKE -

Слайд 15Предикаты работы с множествами
Предикат IN – входит в множество
A IN

(1,3,6,9) – истинен, если значение атрибута A входит в множество

значений, заключенное в скобки
Предикат NOT IN – не входит в множество, истинен, если значение атрибута не входит в множество

Предикаты работы с множествамиПредикат IN – входит в множествоA IN (1,3,6,9) – истинен, если значение атрибута A

Слайд 16Предикаты работы с множествами
Предикат EXIST () – истинен тогда, когда

множество, заключенное в скобках не пусто
Предикат NOT EXIST () –

истинен тогда, когда множество, заключенное в скобках пусто
Предикаты работы с множествамиПредикат EXIST () – истинен тогда, когда множество, заключенное в скобках не пустоПредикат NOT

Слайд 17Предикат сравнения с образцом
Предикат LIKE – подобен – истинен, когда

сравниваемое значение соответствует образцу
Предикат NOT LIKE – не подобен –

истинен, когда сравниваемое значение НЕ соответствует образцу

Предикат сравнения с образцомПредикат LIKE – подобен – истинен, когда сравниваемое значение соответствует образцуПредикат NOT LIKE –

Слайд 18Во всех предикатах
в качестве проверяемого выражения может выступать
имя

атрибута одного из исходных отношений (имя столбца исходной таблицы)
выражение,

в котором используется имена атрибутов исходных отношений.

Во всех предикатах в качестве проверяемого выражения может выступать имя атрибута одного из исходных отношений (имя столбца

Слайд 19Таблица Clients
Вывести список клиентов
Select Name From Clients
Вывести список клиентов из

города с кодом 2
Select Name From Clients where kod=2


Таблица ClientsВывести список клиентовSelect Name From ClientsВывести список клиентов из города с кодом 2Select Name From Clients

Слайд 20Примеры запросов с неопределенными значениями
Вывести список незакрытых счетов
Select N_bill,N_filial from

Bills
where Data_close Is Null
Вывести список закрытых счетов
Select N_bill,N_filial from Bills
where

Data_close Is Not Null

Примеры запросов с неопределенными значениямиВывести список незакрытых счетовSelect N_bill,N_filial from Bills	where Data_close Is NullВывести список закрытых счетовSelect

Слайд 21Группировка
Группировка – это механизм обработки записей в запросе, который предполагаем

компоновку множества записей с одинаковыми значениями столбцов группировки в одну

группу с последующей обработкой группы с использованием агрегатных функций.
ГруппировкаГруппировка – это механизм обработки записей в запросе, который предполагаем компоновку множества записей с одинаковыми значениями столбцов

Слайд 22Таблица Clients
Сгруппируем таблицу по коду города (это атрибут kod)
Сколько групп

получим?
А сколько строчек в каждой группе?

Таблица ClientsСгруппируем таблицу по коду города (это атрибут kod)Сколько групп получим?А сколько строчек в каждой группе?

Слайд 23Таблица Students
Студентов 19
Сгруппируем
по полю N_groop
Получилось
5 групп

Таблица StudentsСтудентов 19Сгруппируемпо полю N_groopПолучилось5 групп

Слайд 24Агрегатные функции

Агрегатные функции

Слайд 25Сосчитаем количество студентов в каждой группе

Сосчитаем количество студентов в каждой группе

Слайд 26Примеры запросов с группировкой
Для каждого города сосчитать количество клиентов банка,

проживающих в нем
Select City , count(*)
from cityes,clients
Where cityes.kod =Clients.kod
Group by

City

Примеры запросов с группировкойДля каждого города сосчитать количество клиентов банка, проживающих в немSelect City , count(*)	from cityes,clients	Where

Слайд 27Особенности интерпретации функции COUNT
Count(*) – количество строк в группе
COUNT(имя столбца)

– количество определенных значений данного столбца в группе (т.е.NULL значения

не считаются)
COUNT(Distinct имя столбца)- количество различных значений данного атрибута в группе
Особенности интерпретации функции COUNTCount(*) – количество строк в группеCOUNT(имя столбца) – количество определенных значений данного столбца в

Слайд 28Сколько студентов учится у нас?

Сколько студентов учится у нас?

Слайд 29Сколько студентов сдавало Сессию?

Сколько студентов сдавало Сессию?

Слайд 31Примеры запросов
Сколько типов счетов поддерживается в нашем банке
Select count(*)
from

Type_bills
Сколько клиентов в нашем банке
Select count(*)
From Clients

Примеры запросовСколько типов счетов поддерживается в нашем банкеSelect count(*) 	from Type_billsСколько клиентов в нашем банкеSelect count(*)From Clients

Слайд 32Примеры
Вывести список клиентов с указанием количества счетов, открытых каждым клиентом
Select

bills.Id_ckient, Name, count(*)
From Clients, Bills
Where Clients.ID_Ckient=Bills.ID_ckient
Group by bills.Id_ckient, Name

ПримерыВывести список клиентов с указанием количества счетов, открытых каждым клиентомSelect bills.Id_ckient, Name, count(*)From Clients, BillsWhere Clients.ID_Ckient=Bills.ID_ckientGroup by

Слайд 33Самостоятельно:
Для каждого клиента указать количество филиалов, с которым работает данный

клиент (в каком количестве филиалов у него открыты счета)
Для каждого

филиала сосчитать количество клиентов, которые в нем открыли счета
Для каждого филиала вывести количество открытых в нем счетов
Для каждого филиала сосчитать число закрытых счетов на текущий момент –
Текущая дата GetDate()
Самостоятельно:Для каждого клиента указать количество филиалов, с которым работает данный клиент (в каком количестве филиалов у него

Слайд 34 Правила обработки значений NULL в агрегатных функциях
Если какие-либо

значения в столбце равны NULL при вычислении результата функции они

исключаются
Если все значения в столбце равны NULL то Max Min Sum Avg = NULL, count = 0 (ноль)
Если таблица пуста count(*) =0

Правила обработки  значений NULL в агрегатных функциях Если какие-либо значения в столбце равны NULL при

Слайд 35Правила интерпретации агрегатных функций
Нельзя одновременно в списке вывода использовать значения

столбцов и агрегатные функции, без операции группировки!!!
Если в список вывода

включены агрегатные функции без других объектов и операций группировки, то они применимы ко всей таблице
В список вывода включается подсписок столбцов группировки и возможно значение агрегатных функций.
Не допустимо включать в список вывода столбцы, не входящие в список группировки !!!!!!!!!!
Правила интерпретации агрегатных функцийНельзя одновременно в списке вывода использовать значения столбцов и агрегатные функции, без операции группировки!!!Если

Слайд 36Применение агрегатных функций
Агрегатная функция не может быть аргументом другой агрегатной

функции!!!
Поэтому нельзя вкладывать агрегатные функции !!!
В список вывода могут включаться

арифметические выражения, аргументами которых являются агрегатные функции
Применение агрегатных функцийАгрегатная функция не может быть аргументом другой агрегатной функции!!!Поэтому нельзя вкладывать агрегатные функции !!!В список

Слайд 37Использование подзапросов
Предикаты сравнения:
IN – входит в множество
NOT IN –

не входит в множество


Использование подзапросовПредикаты сравнения: IN – входит в множествоNOT IN – не входит в множество

Слайд 38Пример использования подзапросов
Вывести список городов, из которых нет ни

одного клиента нашего банка
Select distinct City from Cityes
Where kod

NOT IN
(Select kod
from Clients)
Пример использования подзапросов Вывести список городов, из которых нет ни одного клиента нашего банкаSelect distinct City from

Слайд 39Использование подзапросов при анализе групп

Использование подзапросов при анализе групп

Слайд 40Пример подзапроса на уровне групп
Выбрать клиентов, у которых есть счета

во всех филиалов нашего банка

Select Name from Clients, Bills
Where Clients.ID_ckients=Bills.ID_Ckients
Group

BY Name
HAVING count(Distinct N_Filial)= (Select count(*)
from Filials)
Пример подзапроса на уровне группВыбрать клиентов, у которых есть счета во всех филиалов нашего банкаSelect Name from

Слайд 41Стандарт SQL92 – SQL2
Добавил понятие многократного сравнения
Ввел понятие внешнего объединения
Предложил

новый синтаксис оператора Select
Определил понятие встроенного SQL – связь с

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

Стандарт SQL92 – SQL2Добавил понятие многократного сравненияВвел понятие внешнего объединенияПредложил новый синтаксис оператора SelectОпределил понятие встроенного SQL

Слайд 42Место использования операций многократного сравнения на уровне фильтрации строк
Select

вывода>
From
Where

ANY (Select <список значений> from … )
Select <список вывода>
From <список исходных таблиц>
Where
<имя столбца> <Операция Сравнения> ALL
Select <список значений>
from … )
 

Место использования операций многократного сравнения на уровне фильтрации строкSelect From Where     ANY 						(Select

Слайд 43Операции многократного сравнения (правила интерпретации)
Операция многократного сравнения ANY истинна (TRUE)

тогда, когда хотя бы одно сравнение истинно (TRUE)
В противном случае

она дает результат ложь FALSE.
Операция многократного сравнения ALL истинна (TRUE) тогда, когда ВСЕ элементарные сравнения истинны (TRUE)
В противном случае она дает результат ложь FALSE.

Операции многократного сравнения (правила интерпретации)Операция многократного сравнения ANY истинна (TRUE) тогда, когда хотя бы одно сравнение истинно

Слайд 44Применение многократного сравнения на уровне групп
Select
From

таблиц>
Group by
Having ALL

(Select <список значений>
from … )
Select <список вывода>
From <список исходных таблиц>
Group by <список столбцов>
Having <агрегатная функция><Операция Сравнения> ANY (Select <список значений>
from … )

Применение многократного сравнения на уровне группSelect From Group by  Having  ALL

Слайд 45Пример запроса с многократным сравнением
Вывести список филиалов, в которых открыто

максимальное количество счетов
Select N_Filial from Bills
Group by N_Filial
Having count(*) >=ALL

(Select COUNT(*)
From Bills
Group By N_filial)
Пример запроса с многократным сравнениемВывести список филиалов, в которых открыто максимальное количество счетовSelect N_Filial from BillsGroup by

Слайд 46Пример
Запрос: вывести список счетов, на которые были произведены максимальные

поступления средств.
select N_bill
from Operations
Where Type_oper

= 'занесение'
Group by N_bill
having SUM(SUM_Oper)>= All (Select SUM(SUM_Oper)
from Operations
Where Type_oper = 'занесение'
Group by N_bill)

ПримерЗапрос:  вывести список счетов, на которые были произведены максимальные поступления средств. select N_bill  from Operations

Слайд 47Арифметические операции над агрегатными функциями
Пример
Вывести список счетов с указанием

остатка средств на каждом счету

select N_bill,N_filial, SUM(SUM_Oper) - (Select

SUM(SUM_Oper)
from Operations O
Where Type_oper = 'снятие' and
O.N_bill=Operations.N_bill and
O.N_filial = Operations.N_Filial)
from Operations
Where Type_oper = 'занесение'
group by N_bill,N_filial
Арифметические операции над агрегатными функциямиПример Вывести список счетов с указанием остатка средств на каждом счету select N_bill,N_filial,

Слайд 48Внешнее объединение
Ранее условием было соединение только по сравнимым значениям.
Внешнее
Левое left
Правое

Right
Полное Full

Внешнее объединениеРанее условием было соединение только по сравнимым значениям.ВнешнееЛевое leftПравое RightПолное Full

Слайд 49Левое внешнее
Из левой (первой таблицы в запросе) выбираются все строки,

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

таблице оставшиеся значения столбцов заполняются неопределенными значениями
Левое внешнееИз левой (первой таблицы в запросе) выбираются все строки, а для тех у которых нет соответствующих

Слайд 50Левое внешнее объединение

Левое внешнее объединение

Слайд 51Синтаксис
Select
From INNER JOIN < таб2>

Left

Right
Full
Cross
ON <условие> | USING <имя столбца>
СинтаксисSelect From INNER   JOIN	< таб2>       		Left

Слайд 52Примеры
Select Name From Client
Inner JOIN Bills
where Clients.ID_ckient=Bills.ID_ckient
And N_filial =1

ПримерыSelect Name From Client Inner JOIN Billswhere Clients.ID_ckient=Bills.ID_ckientAnd N_filial =1

Слайд 53Интерпретация
Cross JOIN – перекрестное объединение – расширенное декартово произведение
Добавилась операция

UNION – аналог теоретико-множественного объединения
SELECT — запрос
UNION
SELECT — запрос
UNION
SELECT — запрос

ИнтерпретацияCross JOIN – перекрестное объединение – расширенное декартово произведениеДобавилась операция UNION – аналог теоретико-множественного объединения		SELECT — запрос		UNION		SELECT — запрос		UNION		SELECT —

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика