sql запросы. Язык структурных запросов sql введение
Скачать 63.05 Kb.
|
Язык структурных запросов SQL ВВЕДЕНИЕ Большинство современных СУБД построено на реляционной модели данных. Для получения информации из отношений (таблиц) базы данных в качестве языка манипулирования данными в теоретическом плане используются три абстрактных языка:
В качестве практического языка работы с данными в середине 70-х годов фирмой IBM разработан язык структурных запросов SQL, ставший впоследствии стандартом de-facto при работе с базами данных. Наметившееся в настоящее время переход к крупным корпоративным СУБД типа Oracle, Informix, Sybase, DB2, Progress, PostgreSQLделает актуальным изучение языка SQL как в практическом плане, так и чисто теоретически, поскольку в основе элементов языка SQL лежат положения теории отношений, теории множеств и логики. Методические указания по изучению языка SQL Предлагаемые методические указания по изучению языка SQL содержат набор сгруппированных по темам заданий, выполнение которых позволит слушателям получить начальные навыки по работе с базами данных и формирования запросов на языке SQL. Каждая тема предлагает последовательное изучение конструкций операторов языка SQL по мере их усложнения. Общая схема выполнения заданий по каждой теме следующая: ставится содержательная задача, предлагается запись запроса на языке SQL, дается результат запроса. Далее необходимо с использованием инструментальных средств работы с SQL подготовить предлагаемый запрос на языке SQL и убедиться в правильности получения решения. При необходимости поясняются конструкции языка SQL и делаются другие замечания методического характера, способствующие усвоению материала. Будем исходить из того, что в нашем распоряжении имеется база данных (точнее схема базы данных) поставщиков, деталей и поставок, таблицы которой описаны следующим образом: Таблица поставщиков S: Create table S (n_post char(5) not NULL, name char(20), reiting smallint, town char(15)) Таблица деталей Р: Create table P (n_det char(6) , name char(20), cvet char(7), ves smallint, town char(15)) Таблица поставок SP: Create table SP (n_post char(5) , n_det char(6), date_post date, kol smallint) Замечания. Структура приведенной базы данных максимально упрощена: в таблицах отсутствуют ограничения, первичные ключи и пр. Сделано это осмысленно, поскольку предметом данного методического пособия является изучение основ языка SQL, а не принципов проектирования реляционных баз данных. Содержание таблиц базы данных следующее: Таблица поставщиков (S)
Таблица деталей (P)
Таблица поставок (SP)
В качестве инструментария для выполнения заданий лабораторных работ в рамках СУБД PostgreSQL можно использовать интерактивную программу phpPgAdmin (или pgAdmin), позволяющей наряду с прочими возможностями подготавливать и выполнять запросы в текстовом редакторе. (Описание программы phpPgAdmin) Замечание 1. В целях большей наглядности при записи запроса на языке SQL поля таблиц базы данных записаны на русском языке и при переносе текстов запросов необходимо выполнить соответствующие замены с учетом реальных имен полей таблиц. Замечание 2. К особенностью работы с PostgreSQL относится следующее. Все незащищенные (незаключенные в двойные кавычки) идентификаторы (имена таблиц, столбцов, индексов, представлений и пр.) преобразуются к нижнему регистру. Так любая смешанная комбинация символов разных регистров (stAtEs, STATES) при отсутствии кавычек перед выполнением команды автоматически приводится к виду states. Идентификаторы, заключенные в кавычки, указывают на их буквенную интерпретацию с учетом используемого регистра. Идентификаторы обязательно должны заключаться в кавычки только в двух случаях: если идентификатор совпадает с ключевым словом или в его имени присутствует хотя бы одна прописная буква. I. Простые запросы на языке SQL Запрос на языке SQL формируется с использованием оператора Select__*_from__S_Символ_*'>Select. Оператор Select используется
В общем случае оператор Select содержит следующие восемь спецификаторов, расположенных в операторе в следующем порядке:
Обязательными являются только спецификаторы Select и From. Эти два спецификатора составляют основу каждого запроса к базе данных, поскольку они определяют таблицы, из которых выбираются данные, и столбцы, которые требуется выбрать. Спецификаторы Join (их в одном операторе Select может быть несколько) используются для перечисления присоединяемых таблиц и указания условия соединения. Спецификатор Where добавляется для выборки определенных строк или указания условия соединения. Спецификатор Order by добавляется для изменения порядка получаемых данных. Спецификатор Into temp добавляется для сохранения этих результатов в виде таблицы с целью выполнения последующих запросов. Два дополнительных спецификатора оператора Select - Group by (спецификатор группирования) и Having (спецификатор условия выборки группы) - позволяют выполнять более сложные выборки данных. У пр а ж н е н и я 1. Выбор всех строк и столбцов таблицы. Пример. Выдать полную информацию о поставщиках. Select * from S Символ * после Select означает, что в результат должны быть включены все столбцы таблицы S. Результат: таблица S в полном объеме. Подготовьте запрос и проверьте полученный результат. 2. Измение порядка следования столбцов. Пример. Выдать таблицу S в следующем порядке: фамилия, город, рейтинг, номер_поставщика. Select фамилия, город, рейтинг, номер_поставщика from S Результат: таблица S в требуемом порядке. Подготовьте запрос и проверьте полученный результат. 3. Выбор заданных столбцов. Пример. Выдать номера всех поставляемых деталей. Selectномер_детали from SP Результат: столбец номер_детали таблицы SP Подготовьте запрос и проверьте полученный результат. 4. Выбор без повторения. Пример. Выдать номера всех поставляемых деталей, исключая дублирование. Select distinct номер_детали from SP
Подготовьте запрос и проверьте полученный результат. 5. Использование в запросах констант и выражений. Пример. Выдать вес каждой детали в граммах. Selectномер_детали || ' вес в граммах=' || вес*454 from P || - оператор конкатинации строк
Подготовьте запрос и проверьте полученный результат. 6.Ограничение в выборке. Пример. Выдать номера всех поставщиков, находящихся в Париже и имеющих рейтинг > 20. Selectномер_поставщика from S whereгород='Париж' and рейтинг>20
Подготовьте запрос и проверьте полученный результат. 7. Выборка с упорядочиванием. Пример. Выдать номера поставщиков, находящихся в Париже в порядке убывания рейтинга. Selectномер_поставщика,рейтинг from S whereгород='Париж' orderbyрейтингdesc
Подготовьте запрос и проверьте полученный результат. 8. Упорядочивание по нескольким столбцам. Пример. Выдать список поставщиков, упорядоченных по городу, в пределах города - по рейтингу. Select * from S order by 4, 3
Подготовьте запрос и проверьте полученный результат. 9. Фраза between. Пример. Выдать информацию о деталях, вес которых лежит в диапазоне от 16 до 19. Selectномер_детали, название, вес from P where вес between 16 and 19
Подготовьте запрос и проверьте полученный результат. 10. Фраза in ( not in ). Пример. Выдать детали, вес которых равен 12, 16 или 17. |