11415

Запросы выборки данных SQL

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа № 3. Запросы выборки данных SQL. Задание: Создать запросы: 1. На выборку всех кортежей отношения 2. На выборку всех значений нескольких атрибутов отношения. 3. Запрос на выборку значений нескольких атрибутов с назначением альтернативных име

Русский

2013-04-07

41.5 KB

19 чел.

Лабораторная работа № 3. Запросы выборки данных SQL.

Задание:

Создать запросы:

1. На выборку всех кортежей отношения

2. На выборку всех значений нескольких атрибутов отношения.

3. Запрос на выборку значений нескольких атрибутов с назначением альтернативных имен (AS).

4. С применением одного из операторов (IN, BETWEEN, LIKE), для случая вывода по убыванию одного из атрибутов.

5. На объединение 2 отношений с применением оператора WHERE.

6. С группировкой GROUP BY.

7. С дополнительной селекцией с применением оператора HAVING.

8. Вложенный запрос.

9. Выгрузки результатов запроса во внешний файл.

Инструкция SELECT позволяет производить выборку и вычисления над данными из одной или нескольких таблиц. Результатом выполнения инструкции является ответная таблица Простейшая ферма инструкции SELECT включает: фразы SELECT и FROM. Фраза SELECT определяет поля, подлежащие выводу в выходной набор, а фраза FROM определяет имена таблиц, включенных в запрос. Имена полей и таблиц отделяются запятыми, а предложение запроса заканчивается точкой с запятой. Если в запросе участвует несколько таблиц, то для исключения двусмысленности имена полей следует записывать в полной форме: <Таблица>.<Поле> (например, Клиенты.Адрес) Для повышения эффективности вначале указываются меньшие по размеру таблицы. Если имена полей и таблиц включают пробелы, то их необходимо заключать в квадратные скобки. Список полей следует задавать в той последовательности, в которой они должны быть представлены в выходном наборе. Например:

SELECT Фамилия, Имя, Отчество, [год рождения] FROM Клиенты;

Для выбора всех полей применяется шаблон *.

SELECT * FROM Клиенты;

Именам полей и таблиц можно назначать альтернативные имена (псевдонимы). Псевдонимы записываются через ключевое слово AS (<имя таблицы> или <имя поля> AS <псевдоним>). В большинстве случаев псевдонимы используются для сокращения набора длинных имен. Особенно это эффективно для замены длинных имен таблиц, поскольку в многотабличных запросах приходится включать имена таблиц в описание каждого поля. Псевдонимы также используются при создании рекурсивных запросов, когда приходится соединять записи из одной и той же таблицы. Тогда для различия копий таблиц им приходится назначать псевдонимы:

SELECT [Фамилия] & " " & [Имя] & " " & [Отчество] AS Полное_имя FROM Клиенты;

Фраза WHERE задает условия, которым должны удовлетворять записи в результирующей таблице. Выражение <условие отбора> является логическим. Его элементами могут быть имена полей, операции сравнения <, <=, >, >=, =, <>, арифметические операции, логические операторы (NOT, AND, OR, XOR), скобки, функции IN, BETWEEN,LIKE, IS(NOT) NULL и множество встроенных функций. Строки заключаются в кавычки, а константы типа Дата/Время - в символы #.

Функция IN проверяет на равенство любому значению из списка: поле1 IN ("Минск", "Москва", "Киев").

Функция BETWEEN задает диапазон значений. Границы диапазона разделяются оператором And: [поле2] BETWEEN 50 And 100 (эквивалентно выражению [поле2] <=100 AND [поле2] >=50).

Функция LIKE проверяет на соответствие заданному шаблону символов. В качестве символов шаблона используются:

  •  - любое число произвольных символов;
  •   ? - один произвольный символ;
  •  # - одна произвольная цифра;
  •  [] - диапазон допустимых символов.

Запрос может быть основан на нескольких таблицах. Простое включение полей из нескольких таблиц дает простой перебор всех их возможных значений. Для двух таблиц общее число записей будет равно произведению числа записей в первой и второй таблицах. Но так как реляционная база данных практически всегда состоит из таблиц, связанных между собой посредством совпадающих значений полей, участвующих в связи, то для правильного объединения данных необходимо включать в запрос явное определение соответствующих связей. Связь можно задать с помощью двух способов: с помощью оператора INNER|RIGHT|LEFT JOIN и с помощью дополнительного условия выборки во фразе WHERE. Причем в SQL объединение данных можно произвести даже по неравенству, т.е. поддерживаются операции сравнения -, <>, < <=, >, >=.

SELECT Товары.[Наименование товара], Заказы.Дата, Заказы.[Полная цена] FROM Товары INNER JOIN Заказы ОN Товары.Код_товара = Зака-зы.Код_товара,

Этот же запрос можно записать следующим образом (второй способ задания связи):

SELECT Товар и. [Наименование товара], Заказы.Дата. Заказы.[Полная цена] FROM Товары. Заказы WHERE Товары. Код _товара = Заказы.Код_товара;

Иногда интерес представляет не каждая строка таблицы в отдельности, а итоговые значения по группам данных. Например, может понадобиться общая сумма продаж для клиентов, проживающих в определенном районе, или интересно знать средний объем продаж но месяцам, чтобы выяснить, тенденции сбыта. Получить ответы на такие вопросы можно с помощью итоговых запросов (запросов с группировкой). Фраза GROUP BY позволяет выделять группы в результирующем множестве записей. Группой являются записи с совпадающими значениями в полях, перечисленных во фразе GROUP BY. Группирование записей само по себе ничего не дает. Обычно производятся вычисления для групп: Для этой цели имеется ряд групповых (иначе агрегатных) функции, производящих следующие действия над значениями заданного поля (аргумента функции) для каждой группы:

SUM - вычисляет сумму:

AVG - вычисляет среднее арифметическое;

STDEV – вычисляет стандартное отклонение;

VAR- вычнслнег дисперсию;

COUNT - вычисляет число записей, для которых значение заданного поля отлично от NULL. Для подсчета всех записей необходимо использовать операцию *. Например COUNT (*);

MIN - возвращает минимальное значение;

МАХ - возвращает максимальное значение;

FIRST - возвращает первое значение;

LAST - возвращает последнее значение.

SELECT Клиенты.Фамилия, SUM (Заказы.Цена) AS Стоимость FROM Клиенты INNER JOIN Заказы ON Клиенты.КодКлиента = Заказы.КодКлиента WHERE Клиенты.Город ="Минск" GROUP BY Клиенты.Фамилия; — подсчитает полную сумму цен по всем заказам для каждого клиента, проживающего в Минске.

Фраза HAVING используется для дополнительной селекции записей во время определения групп. Она выполняет те же функции, что и WHERE, но уже в рамках выходного набора. Фраза HAVING устанавливает, какие записи, сгруппированные посредством GROUP BY, должны отображаться и участвовать в групповых операциях. Правила записи <условия отбора> аналогичны правилам формирования <условия отбора> во фразе WHERE:

SELECT код_товара FROM Заказы GROUP BY код_товара HAVING COUNT (*) > 1; - отбирает коды товаров, заказываемых более чем одним покупателем.

Фраза ORDER BY замыкает инструкцию SELECT и задает порядок сортировки результирующего множества. Каждая спецификация сортировки представляет собой пару вида: <имя поля> [ASC/DESC]. Необязательный модификатор ASC задает сортировку по возрастанию, DESC - по убыванию. Большинство СУБД требуют, чтобы поле, участвующее в сортировке, было перечислено во фразе SELECT:

SELECT Товар, Цена FROM Товары ORDER BY Цена DESC;

Инструкции SELECT могут многократно вкладываться друг в друга. Вложенная инструкция SELECT записывается как часть фразы WHERE и служит для отбора записей основного запроса. SQL выполняет вложенный подзапрос и затем сравнивает каждую строку основного запроса с результатом вложенного. Вложенные запросы записываются внутри скобок. Например:

SELECT Фамилия, Имя FROM Клиенты WHERE Кредит < (SELECT AVG(Кредит) FROM Клиенты);

Чтобы результат запроса был сохранен в файл, добавьте в команду SELECT выражение

INTO OUTFILE ‘Путь и имя файла’ [FIELDS  ...] [LINES ...]

В этой команде нужно указать полный путь к файлу, в который будут выгружены данные (этот файл должен быть новым, не существующим на момент выгрузки). При задании пути к файлу необходимо использовать прямую косую черту вместо принятой в Windows обратной косой черты. Указанный файл создается на компьютере, на котором работает сервер MySQL. Данные выгружаются в той кодировке, В которой они хранятся в базе данных.

SELECT * FROM Customers INTO OUTFILE ‘С:/data/Customers.txt’;


 

А также другие работы, которые могут Вас заинтересовать

24344. Этические проблемы науки в конце 20 столетия (общечеловеческая и профессиональная этика, принцип «нейтральности» и ответственности ученого на примере биоэтики – клонирование и трансплантации органов) 175 KB
  197 Этика науки Как отмечалось ранее качественные изменения в развитии человечества в начале XXI века связанные с научнотехническим прогрессом отражаются на жизнедеятельности самого человека и приводят к последствиям глобального характера. Проблема взаимоотношения науки и этики решается в двух тесно связанных между собой аспектах: разработки профессиональной этики ученых и решения учеными вопроса о социальной ответственности научного сообщества за негативные последствия применения результатов научных исследований в практике....
24345. Экологическая этика и ее философские основания. Философия русского космизма. Учение о ноосфере 113.5 KB
  Что касается космистского мировоззрения то оно главным предметом своего познавательного и ценностного отношения делает взаимодействие человека и среды последняя понимается чаще всего как Космос. Спирин русский космизм как универсалистский тип миросозерцания отражающий бытие мира и человека в их единстве в нерасторжимой взаимосвязи микрокосма человека и микрокосма природы Казначеев В. Космопланетарный феномен человека: проблемы комплексного изучения. Хотя русский космизм внутренне исключительно разнообразен и включает полярные по...
24346. Сциентизм и антисциентизм как мировоззренческие позиции о роли науки в развитии общества. Наука и паранаука 95 KB
  В современной культуре отчетливо проявила себя дилемма: сциентизмантисциентизм что имеет непосредственное отношение к проблеме соотношения науки и искусства. Для сциентизма характерно преувеличение роли науки в познании окружающего мира и человека объявление ее вершиной развития культуры убеждение в ненужности других сфер культуры О. Противоположным сциентизму направлением мировозренческой ориентации является антисциентизм основанный на недоверии к возможностям науки и разума на критике научных методов познания.
24347. Роль науки в преодолении современных глобальных кризисов (экологический, энергетический, демографический, угроза локальных и ядерных воин) 141 KB
  Она представляет собой не просто окружающую среду которую можно рассматривать как поле для преобразующей деятельности человека а выступает единым целостным организмом в который включено человечество в качестве специфической подсистемы. Деятельность человека вносит постоянные изменения в динамику биосферы и на современном этапе развития техногенной цивилизации масштабы человеческой экспансии в природу таковы что они начинают разрушать биосферу как целостную экосистему. Третья проблема – это проблема сохранения человеческой личности...
24348. Развитие науки как социального института (признаки, функции). Научные сообщества и их исторические типы 105.5 KB
  175 184 Понятие науки как социального института Научноисследовательская деятельность в обществе носит упорядоченный организованный характер. Цель и назначение науки как социального института – производство и распространение знания разработка средств и методов исследования воспроизводство ученых и обеспечение выполнения ими своих социальных функций. В социологии в зависимости от методологических установок сформировались различные подходы к пониманию науки как социального института.
24349. Научные школы (функции, признаки, типы). Историческое развитие способов трансляции научных знаний (от рукописей до современного комп.) 142 KB
  Научные сообщества и их исторические типы: невидимый колледж научные школы. Другой распространенной формой неформального объединения ученых играющих заметную роль в развитии науки являются научные школы. В содержательном плане чаще всего для сторонников научной школы характерен особый подход к проблемам и методам познания.
24350. Наука и экономика (сущность научно-технического прогресса экономика как наука, экономика науки) 87 KB
  Инновационная экономика Одной из важных сфер функционирования науки как социального института является экономика. Термин экономика многозначен и включает в себя по крайней мере два класса явлений: а экономику как отрасль науки изучающую экономические отношения и народное хозяйство; б экономику как различные виды и отрасли производства народное хозяйство страны мирового сообщества отношения в этих сферах по поводу производства распределения и обмена. Непосредственная связь науки и экономики проявляется в экономике как научной...
24351. Наука и власть (политология, политизация науки и проблемы управления наукой) 122 KB
  При рассмотрении проблемы взаимоотношения науки и власти следует имеет в виду два вектора анализа: а воздействие государственной власти на науку; б влияние науки на власть государственную политику. Под научной политикой понимается деятельность государственных учреждений по развитию управлению контролю финансированию науки. Государство выступает по отношению к науке в следующих основных функциях: как законодатель устанавливающий правовые основы функционирования науки в обществе в целом и конкретные нормы регулирования его...
24352. Теория и практика. Критерии истинности познания. Научная истина 98.5 KB
  Мы исходим из установки что наши знания это не абсолютные истины но рабочие гипотезы которые мы готовы сменить отбросить если они противоречат новым фактам. б Понятие истины. Объективность истины. Диалектика абсолютной и относительной истины Важную роль в обосновании принципа доверия к субъекту имеет обоснование возможности достижения объективной истины.