Презентация Язык SQL. (Лекция 2) онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Язык SQL. (Лекция 2) абсолютно бесплатно. Урок-презентация на эту тему содержит всего 18 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Информатика » Язык SQL. (Лекция 2)
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:18 слайдов
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:256.50 kB
- Просмотров:84
- Скачиваний:1
- Автор:неизвестен
Слайды и текст к этой презентации:
№2 слайд
![II. Отбор данных из](/documents_6/400e1f8216722930282c4dc9642254ae/img1.jpg)
Содержание слайда: II. Отбор данных из нескольких таблиц
II. Отбор данных из нескольких таблиц
1) Естественное соединение таблиц (способ 1 - явное указание условий соединения):
SELECT
P.PNUM,
P.PNAME,
PD.DNUM,
PD.VOLUME
FROM P, PD
WHERE P.PNUM = PD.PNUM;
2) Естественное соединение таблиц (способ 2 - ключевые слова JOIN… USING…):
SELECT P.PNUM, P.PNAME, PD.DNUM,PD.VOLUME
FROM P JOIN PD USING PNUM;
Замечание. Ключевое слово USING позволяет явно указать, по каким из общих колонок таблиц будет производиться соединение.
№3 слайд
![Естественное соединение](/documents_6/400e1f8216722930282c4dc9642254ae/img2.jpg)
Содержание слайда: 3) Естественное соединение таблиц (способ 3 - ключевое слово NATURAL JOIN):
3) Естественное соединение таблиц (способ 3 - ключевое слово NATURAL JOIN):
SELECT P.PNUM, P.PNAME, PD.DNUM, PD.VOLUME
FROM P NATURAL JOIN PD;
Замечание. В разделе FROM не указано, по каким полям производится соединение. NATURAL JOIN автоматически соединяет по всем одинаковым полям в таблицах.
4) Естественное соединение трех таблиц:
SELECT
P.PNAME,
D.DNAME,
PD.VOLUME
FROM
P NATURAL JOIN PD NATURAL JOIN D;
№4 слайд
![Прямое произведение таблиц](/documents_6/400e1f8216722930282c4dc9642254ae/img3.jpg)
Содержание слайда: 5) Прямое произведение таблиц:
5) Прямое произведение таблиц:
SELECT
P.PNUM,
P.PNAME,
D.DNUM,
D.DNAME
FROM P, D;
6) Соединение таблиц по произвольному условию. Ответ на вопрос "какие поставщики имеют право поставлять какие детали?" дает запрос:
SELECT P.PNUM,P.PNAME,P.PSTATUS,
D.DNUM,D.DNAME,D.DSTATUS
FROM P, D
WHERE P.PSTATUS >= D.DSTATUS;
№5 слайд
![III. Использование имен](/documents_6/400e1f8216722930282c4dc9642254ae/img4.jpg)
Содержание слайда: III. Использование имен корреляции (алиасов, псевдонимов)
III. Использование имен корреляции (алиасов, псевдонимов)
Существуют запросы, в которых таблица соединяется сама с собой, или одна таблица соединяется дважды с другой таблицей. В этих случаях используются имена корреляции (алиасы, псевдонимы), которые позволяют различать соединяемые копии таблиц.
Имена корреляции вводятся в разделе FROM и идут через пробел после имени таблицы.
Имена корреляции должны использоваться в качестве префикса перед именем столбца и отделяются от имени столбца точкой.
Если в запросе указываются одни и те же поля из разных экземпляров одной таблицы, они должны быть переименованы для устранения неоднозначности в именованиях колонок результирующей таблицы.
Определение имени корреляции действует только во время выполнения запроса.
№6 слайд
![Отобрать все пары поставщиков](/documents_6/400e1f8216722930282c4dc9642254ae/img5.jpg)
Содержание слайда: 1) Отобрать все пары поставщиков таким образом, чтобы первый поставщик в паре имел статус, больший статуса второго поставщика:
1) Отобрать все пары поставщиков таким образом, чтобы первый поставщик в паре имел статус, больший статуса второго поставщика:
SELECT
P1.PNAME AS PNAME1,
P1.PSTATUS AS PSTATUS1,
P2.PNAME AS PNAME2,
P2.PSTATUS AS PSTATUS2
FROM
P P1, P P2
WHERE P1.PSTATUS1 > P2.PSTATUS2;
№7 слайд
![Пусть некоторые поставщики](/documents_6/400e1f8216722930282c4dc9642254ae/img6.jpg)
Содержание слайда: 2) Пусть некоторые поставщики (назовем их контрагенты) могут выступать как в качестве поставщиков деталей, так и в качестве получателей.
2) Пусть некоторые поставщики (назовем их контрагенты) могут выступать как в качестве поставщиков деталей, так и в качестве получателей.
№8 слайд
![Запрос quot кто кому какие](/documents_6/400e1f8216722930282c4dc9642254ae/img7.jpg)
Содержание слайда: Запрос "кто кому какие детали в каком количестве поставляет".
Запрос "кто кому какие детали в каком количестве поставляет".
SELECT
P.NAME AS PNAME,
C.NAME AS CNAME,
DETAILS.DNAME,
CD.VOLUME
FROM
CONTRAGENTS P,
CONTRAGENTS C,
DETAILS,
CD
WHERE
P.NUM = CD.PNUM AND
C.NUM = CD.CNUM AND
D.DNUM = CD.DNUM;
Замечание. Этот запрос может быть выражен большим количеством способов.
№9 слайд
![IV. Использование в запросах](/documents_6/400e1f8216722930282c4dc9642254ae/img8.jpg)
Содержание слайда: IV. Использование в запросах агрегатных функций
IV. Использование в запросах агрегатных функций
1) Получить общее количество поставщиков (ключевое слово COUNT):
SELECT COUNT(*) AS N
FROM P;
2) Получить общее, максимальное, минимальное и среднее количества поставляемых деталей (ключевые слова SUM, MAX, MIN, AVG):
SELECT
SUM(PD.VOLUME) AS SM,
MAX(PD.VOLUME) AS MX,
MIN(PD.VOLUME) AS MN,
AVG(PD.VOLUME) AS AV
FROM PD;
№10 слайд
![V. Использование агрегатных](/documents_6/400e1f8216722930282c4dc9642254ae/img9.jpg)
Содержание слайда: V. Использование агрегатных функций с группировками
V. Использование агрегатных функций с группировками
1) Для каждой детали получить суммарное поставляемое количество (ключевые слова GROUP BY…):
SELECT
PD.DNUM,
SUM(PD.VOLUME) AS SM
FROM PD
GROUP BY PD.DNUM;
Замечание. Этот запрос будет выполняться следующим образом.
Сначала строки исходной таблицы будут сгруппированы так, чтобы в каждую группу попали строки с одинаковыми значениями DNUM.
Потом внутри каждой группы будет просуммировано поле VOLUME.
От каждой группы в результирующую таблицу будет включена одна строка.
№11 слайд
![Замечание. В списке](/documents_6/400e1f8216722930282c4dc9642254ae/img10.jpg)
Содержание слайда: Замечание. В списке отбираемых полей оператора SELECT, содержащего раздел GROUP BY можно включать только агрегатные функции и поля, которые входят в условие группировки. Следующий запрос выдаст синтаксическую ошибку:
Замечание. В списке отбираемых полей оператора SELECT, содержащего раздел GROUP BY можно включать только агрегатные функции и поля, которые входят в условие группировки. Следующий запрос выдаст синтаксическую ошибку:
SELECT
PD.PNUM, PD.DNUM,
SUM(PD.VOLUME) AS SM
FROM PD
GROUP BY PD.DNUM;
Некоторые диалекты SQL не считают это за ошибку. Запрос будет выполнен, но предсказать, какие значения будут внесены в поле PNUM в результирующей таблице, невозможно (в каждую полученную группу строк может входить несколько строк с различными значениями поля PNUM).
№12 слайд
![Получить номера деталей,](/documents_6/400e1f8216722930282c4dc9642254ae/img11.jpg)
Содержание слайда: 2) Получить номера деталей, суммарное поставляемое количество которых превосходит 400 (ключевое слово HAVING…- условие отбора групп).
2) Получить номера деталей, суммарное поставляемое количество которых превосходит 400 (ключевое слово HAVING…- условие отбора групп).
SELECT
PD.DNUM, SUM(PD.VOLUME) AS SM
FROM PD
GROUP BY PD.DNUM
HAVING SUM(PD.VOLUME) > 400;
Замечание. Условие, что суммарное поставляемое количество должно быть больше 400, не может быть сформулировано в разделе WHERE, т.к. в этом разделе нельзя использовать агрегатные функции.
Условия, использующие агрегатные функции, должны быть размещены в специальном разделе HAVING.
№13 слайд
![Замечание. В одном запросе](/documents_6/400e1f8216722930282c4dc9642254ae/img12.jpg)
Содержание слайда: Замечание. В одном запросе могут встретиться как условия отбора строк в разделе WHERE, так и условия отбора групп в разделе HAVING. Условия отбора групп нельзя перенести из раздела HAVING в раздел WHERE. Аналогично и условия отбора строк нельзя перенести из раздела WHERE в раздел HAVING, за исключением условий, включающих поля из списка группировки GROUP BY.
Замечание. В одном запросе могут встретиться как условия отбора строк в разделе WHERE, так и условия отбора групп в разделе HAVING. Условия отбора групп нельзя перенести из раздела HAVING в раздел WHERE. Аналогично и условия отбора строк нельзя перенести из раздела WHERE в раздел HAVING, за исключением условий, включающих поля из списка группировки GROUP BY.
Замечание. В MySQL допускается в HAVING использовать вместо агрегатной функции ее алиас.
SELECT
PD.DNUM,
SUM(PD.VOLUME) AS SM
FROM PD
GROUP BY PD.DNUM
HAVING SM > 400;
№14 слайд
![VI. Использование подзапросов](/documents_6/400e1f8216722930282c4dc9642254ae/img13.jpg)
Содержание слайда: VI. Использование подзапросов
VI. Использование подзапросов
Удобным средством, позволяющим формулировать запросы более понятным образом, является возможность использования подзапросов, вложенных в основной запрос.
1) Получить список поставщиков, статус которых меньше максимального статуса в таблице поставщиков (сравнение с подзапросом).
SELECT *
FROM P
WHERE P.STATUS <
(SELECT MAX(P.STATUS)
FROM P);
№15 слайд
![Замечание. Т.к. поле P.STATUS](/documents_6/400e1f8216722930282c4dc9642254ae/img14.jpg)
Содержание слайда: Замечание. Т.к. поле P.STATUS сравнивается с результатом подзапроса, то подзапрос должен быть сформулирован так, чтобы возвращать таблицу, состоящую ровно из одной строки и одной колонки.
Замечание. Т.к. поле P.STATUS сравнивается с результатом подзапроса, то подзапрос должен быть сформулирован так, чтобы возвращать таблицу, состоящую ровно из одной строки и одной колонки.
Замечание. Результат выполнения запроса будет эквивалентен результату следующей последовательности действий:
Выполнить один раз вложенный подзапрос и получить максимальное значение статуса.
Просканировать таблицу поставщиков P, каждый раз сравнивая значение статуса поставщика с результатом подзапроса, и отобрать только те строки, в которых статус меньше максимального.
№16 слайд
![Использование предиката IN.](/documents_6/400e1f8216722930282c4dc9642254ae/img15.jpg)
Содержание слайда: 2) Использование предиката IN. Получить список поставщиков, поставляющих деталь номер 2.
2) Использование предиката IN. Получить список поставщиков, поставляющих деталь номер 2.
SELECT *
FROM P
WHERE P.PNUM IN
(SELECT DISTINCT PD.PNUM
FROM PD
WHERE PD.DNUM = 2);
Замечание. В данном случае вложенный подзапрос может возвращать таблицу, содержащую несколько строк (но один столбец).
№17 слайд
![Замечание. Результат](/documents_6/400e1f8216722930282c4dc9642254ae/img16.jpg)
Содержание слайда: Замечание. Результат выполнения запроса будет эквивалентен результату следующей последовательности действий:
Замечание. Результат выполнения запроса будет эквивалентен результату следующей последовательности действий:
Выполнить один раз вложенный подзапрос и получить список номеров поставщиков, поставляющих деталь номер 2.
Просканировать таблицу поставщиков P, каждый раз проверяя, содержится ли номер поставщика в результате подзапроса.
№18 слайд
![Использование подзапросов в](/documents_6/400e1f8216722930282c4dc9642254ae/img17.jpg)
Содержание слайда: 3) Использование подзапросов в качестве вычисляемых полей. Для каждого поставщика подсчитать количество поставляемых им видов деталей.
3) Использование подзапросов в качестве вычисляемых полей. Для каждого поставщика подсчитать количество поставляемых им видов деталей.
SELECT P.PNUM, P.PNAME,
(SELECT COUNT(*)
FROM PD
WHERE PD.PNUM=P.PNUM) AS NUMBER0FDET
FROM P
ORDER BY P.PNUM;
Замечание. Вложенный запрос выполняется многократно для каждого значения P.PNUM из таблицы P. Для каждого значения P.PNUM из таблицы P в таблице PD выбираются строки с текущим значением PNUM из внешнего запроса и подсчитывается их количество.
Скачать все slide презентации Язык SQL. (Лекция 2) одним архивом:
Похожие презентации
-
Язык SQL. (Лекция 1)
-
Язык запросов SQL. Лекция 10
-
PL/SQL. Процедурное расширение языка SQL. (Лекция 7)
-
Язык SQL. DML. (Лекция 12)
-
Язык SQL. SET операторы. (Лекция 11)
-
Язык SQL. Подзапросы. (Лекция 10)
-
Язык SQL. Соединение таблиц. (Лекция 9)
-
Язык SQL. (Лекция 8)
-
История и стандарты языка SQL. (Лекция 7)
-
Oracle 12с. Характеристика языка PL/SQL (PL/SQL, лекция 9)