Язык структурных запросов sql введение
Скачать 58.6 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. Оператор Select используется для выборки данных из базы данных; для получения новых строк в составе оператора Insert; для обновления информации в составе оператора Update. В общем случае оператор Select содержит следующие восемь спецификаторов, расположенных в операторе в следующем порядке: спецификатор Select; спецификатор From; спецификаторы Join; спецификатор Where; спецификатор Group by; спецификатор Having; спецификатор Order by; спецификатор Into temp. Обязательными являются только спецификаторы Select и From. Эти два спецификатора составляют основу каждого запроса к базе данных, поскольку они определяют таблицы, из которых выбираются данные, и столбцы, которые требуется выбрать. Спецификаторы Join (их в одном операторе Select может быть несколько) используются для перечисления присоединяемых таблиц и указания условия соединения. Спецификатор Where добавляется для выборки определенных строк или указания условия соединения. Спецификатор Orderby добавляется для изменения порядка получаемых данных. Спецификатор 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 город='Париж' order by рейтинг 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. |