- •Семей 2013г
- •Выборка данных из базы данных с использованием языка sql
- •Порядок выполнения работы
- •Оператор select
- •Лабораторные задания.
- •Создание таблицы
- •Определение столбца
- •Изменение таблиц
- •Создание представлений
- •Операторы, связанные с курсором
- •Заключение Создания базы на sql по стандарту создание таблиц с первичными и вторичными ключами и создание таблиц.
Лабораторные задания.
Дать содержательную интерпретацию SQL-запросам, выполнить их на SQL-сервере с использованием клиентских утилит ISQL/w или SQL-EM, дать содержательную интерпретацию результатам выполнения SQL-запросов.
6) Выбрать все идентификаторы и цены книг по современной и традиционной кулинарии и по бизнесу. В запросе использовать предикат IN.
18) SELECT title_id, price
FROM titles
WHERE type IN ("mod_cook", "trad_cook", "business")
13) Выбрать информацию о книгах, упорядоченную по возрастанию объема продаж (по стоимости). Информация о книгах должна включать идентификатор, цену, объем продаж (по количеству) и объем продаж (по стоимости),только по убыванию.
SELECT type, AVG(price)
FROM titles
WHERE price>$11
GROUP BY type
HAVING AVG(price)>$19.7
20) Определить среднюю цену и сумму цен на книги по бизнесу и современной кулинарии для каждой комбинации типа книги и идентификатора издателя.
20) SELECT AVG(price) "avg" SUM(price) "sum"
FROM titles
WHERE type IN ("business", "mod_cook")
27) То же, что и 26, но в разделе FROM запроса использовать операцию соединения JOIN.
27) SELECT pub_name, AVG(price) "avg",
COUNT(DISTINCT title_id) "count"
FROM titles t JOIN publishers p ON t.pub_id=p.pub_id
GROUP BY pub_name
34) Выбрать всех издателей литературы по бизнесу. В запросе использовать подзапрос, формирующий промежуточную таблицу, в которую включаются те строки из таблицы titles, которые могут “экви-соединиться” по идентификатору издателя со строками из таблицы publishers и которые представляют тип книг по бизнесу. В условии поиска основного запроса использовать предикат EXISTS. В выбираемые данные включить имя издателя.
34) SELECT pub_name
FROM publishers p
WHERE EXISTS
(SELECT *
FROM titles t
WHERE p.pub_id=t.pub_id
AND type="popular_comp")
41) Определить все города, в которых проживают авторы. Названия городов в результирующей таблице не должны повторяться. Вывести названия городов в порядке убывания.
41) SELECT DISTINCT city
FROM authors
ORDER BY city DESC
48) Определить города и штаты нахождения издательств, в которых не проживают авторы. (В запросе неявно реализуется операция разности).
48) SELECT DISTINCT state
FROM authors
ORDER BY state
55) Определить, какие авторы в каких издательствах опубликовали сколько книг.
55) SELECT au_lname, au_fname, title
FROM authors a, titles t, titleauthor ta, publishers p
WHERE ta.title_id=t.title_id AND a.au_id=ta.au_id
AND t.pub_id=p.pub_id
AND ((p.country= ‘USA’ AND t.type=’popular_comp’)
OR (p.country=’France’ AND t.type=’psychology’))
62) Найти цену самой дорогой книги (книг), вышедшей в США. В запросе использовать подзапрос.
62) SELECT title, price
FROM titles t JOIN publishers p ON t.pub_id=p.pub_id
WHERE p.country= "USA" AND t.price=
(SELECT MAX(price)
FROM titles tt JOIN publishers pp
ON tt.pub_id=pp.pub_id
WHERE country= "USA")
69) Определить местонахождение издательств, цена каждой книги которых меньше 22 долларов. В запросе использовать подзапросы и предикат с квантором.
69) SELECT state, COUNT(*)
FROM publishers p
WHERE EXISTS
(SELECT *
FROM titles t
WHERE p.pub_id=t.pub_id)
AND $22>ALL
(SELECT price
FROM titles t
WHERE p.pub_id=t.pub_id
AND price IS NOT NULL)
GROUP BY state
ORDER BY state ASC
76) Определить авторов, хотя бы одна книга которых была опубликована в штате Массачусетс. В запросе использовать подзапросы и предикат с квантором.
76) SELECT state, SUM(price)
FROM titles t, publishers p
WHERE t.pub_id=p.pub_id
GROUP BY state
HAVING state NOT IN ("TN", "MA", "TX")
AND SUM(price)>
(SELECT SUM(price)
FROM titles tt, publishers pp
WHERE tt.pub.id=pp.pub_id
AND pp.city= "Masschusets")
83) Определить минимальную и максимальную цену книг, выпущенных издательствами.
83) SELECT type, MIN(price), MAX(price)
FROM titles
GROUP BY type
HAVING MAX(price)-MIN(price)>=3
90) Определить издательства, не выпустившие книг.
90) SELECT state
FROM authors
UNION SELECT state
FROM publishers.
Варианты лабораторных заданий
Номер варианта |
Задание типа A |
Задание типа B |
1 |
1,13,25,32,49,73,81,96 |
9,25,29,31,42,53,66,77 |
2 |
2,14,26,38,50,62,63,86 |
8,28,30,41,48,49,52,60 |
3 |
3,15,27,39,51,61,64,90 |
7,20,26,40,45,47,61,85 |
4 |
4,16,28,37,46,59,65,91 |
17,27,54,56,70,72,75,86 |
5 |
5,17,29,41,57,66,84,92 |
15,18,24,38,73,74,87,90 |
6 |
6,18,30,42,58,67,83,93 |
16,22,37,43,51,62,76,91 |
7 |
8,19,31,52,53,70,80,94 |
3,11,33,78,84,88,92,96 |