32
Структурированн ый язык SQL

Sql

  • Upload
    sai17

  • View
    88

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sql

Структурированный язык SQL

Page 2: Sql

Основные дидактические единицы

Домены, базовые таблицы, информационные схемы, табличные выражения, условные выражения.

Page 3: Sql

Введение

Большинство современных СУБД построено на реляционной модели данных. Для получения информации из отношений (таблиц) базы данных в качестве языка манипулирования данными в теоретическом плане используются три абстрактных языка:

Page 4: Sql

Введение

oЯзык реляционной алгебры1

Язык реляционного исчисления на кортежах

2

oЯзык реляционного исчисления на доменах3

Page 5: Sql

В качестве практического языка работы с данными в середине 70-х годов фирмой IBM разработан язык структурных запросов [SQL], ставший впоследствии стандартом [de-facto] при работе с базами данных.

Наметившееся в настоящее время переход к крупным корпоративным СУБД типа [Oracle], [Informix],[Sybase], [DB2], [Progress] делает актуальным изучение языка SQL как в практическом плане, так и чисто теоретически, поскольку в основе элементов языка SQL лежат положения теории отношений, теории множеств и логики.

SQL

Page 6: Sql

SQLSQL Будем исходить из того, что в нашем распоряжении имеется база данных поставщиков, деталей и поставок, таблицы которой описаны следующим образом:

SQL

Page 7: Sql

SQL

P

Таблица деталей Р:

Create table P (n_det char(6) ,

name char(20),

cvet char(7),

ves smallint,town char(15))ю

SP

Таблица поставок SP:

Create table SP (n_post char(5) ,

n_det char(6),

date_post date,kol smallint)ю

S

Таблица поставщиков S:

Create table S (n_post char(5) not NULL,

name char(20),

reiting smallint,town char(15))

Page 8: Sql

Атенс30АдамсS5

Лондон20КларкS4

Париж30БлейкS3

Париж10ДжонсS2

Лондон20СмитS1

ГоpодРейтингФамилияHомеpпоставщика

Лондон19КрасныйБлюмP6

Париж12ГолубойКулачокP5

Лондон14КрасныйВинтP4

Рим17ГолубойВинтP3

Париж17ЗеленыйБолтP2

Лондон12КрасныйГайкаP1

ГоpодВесЦветНазваниеНомер детали

SQL

40008/22/95P5S4

30006/17/95P4S4

20003/23/95P2S4

20004/04/95P2S3

40006/12/95P2S2

30003/03/95P1S2

10008/13/95P6S1

10007/22/95P5S1

20006/15/95P4S1

40005/12/95P3S1

20004/05/95P2S1

30002/01/95P1S1

КоличествоДата поставки

Номер детали

Номер поставщика

S

P

SP

Page 9: Sql

Простые запросы на языке SQL

• для выборки данных из базы данных;

• для получения новых строк в составе оператора Insert;

• для обновления информации в составе оператора Update.

Оператор

Select

• спецификатор Select;

• спецификатор From;

• спецификатор Where;

• спецификатор Group by;

• спецификатор Having;

• спецификатор Order by;

• спецификатор Into temp.

Page 10: Sql

SQLSQL Обязательными являются только спецификаторы Select и From. Эти два спецификатора составляют основу каждого запроса к базе данных, поскольку они определяют таблицы, из которых выбираются данные, и столбцы, которые требуется выбрать.

SQL

Page 11: Sql

SQLSQL Спецификатор Where добавляется для выборки определенных строк или указания условия соединения. Спецификатор Order by добавляется для изменения порядка получаемых данных. Спецификатор Into temp добавляется для сохранения этих результатов в виде таблицы с целью выполнения последующих запросов. Два дополнительных спецификатора оператора Select - Group by (спецификатор группирования) и Having (спецификатор условия выборки группы) - позволяют выполнять более сложные выборки данных.

SQL

Page 12: Sql

Простые запросы на языке SQL

Запрос

Выдать полную информацию о поставщиках.

Select * from S

Результат: таблица S в полном объеме.

Атенс30АдамсS5

Лондон20КларкS4

Париж30БлейкS3

Париж10ДжонсS2

Лондон20СмитS1

ГоpодРейтингФамилияHомеpпоставщика

Page 13: Sql

Простые запросы на языке SQL

Запрос

Выдать таблицу S в следующем порядке: фамилия, город, рейтинг, номер_поставщика.

Select фамилия, город, рейтинг, номер_поставщика from S

Результат: таблица S в требуемом порядке.

Page 14: Sql

Простые запросы на языке SQL

Запрос

Выдать номера всех поставляемых деталей.

Select номер_детали from SP

Результат: столбец номер_детали таблицы SP

Page 15: Sql

Простые запросы на языке SQL

Запрос

Выдать номера всех поставляемых деталей, исключая дублирование.

Select distinct номер_детали from SP

P6 

P5 

P4 

P3 

P2 

P1 

Номер_деталиРезультат:

Page 16: Sql

Простые запросы на языке SQL

Запрос

Select номер_детали,

"вес в граммах", вес*454 from PP6 вес в граммах=8226 

--------------------- 

--------------------- 

P1 вес в граммах=5448Результат:

Page 17: Sql

Простые запросы на языке SQL

Запрос

Выдать сокращение фамилий до двух букв и рейтинг поставщика.

Select фамилия[1,2], рейтинг from S

30Ад 

20Кл 

30Бл 

10Дж 

20СмРезультат:

Page 18: Sql

Простые запросы на языке SQL

Запрос

Выдать список поставщиков, упорядоченных по городу, в пределах

города - по рейтингу.

Select * from S order by 4, 3

Париж30БлейкS3

Париж10ДжонсS2

Лондон20КларкS4

Лондон20СмитS1

Атенс30АдамсS5

ГоpодРейтингФамилияHомеpпоставщика

Page 19: Sql

Обозначения

SQLSQL Включение в выражение ключевого слова NOT порождает условие c обратным смыслом. Ключевое слово LIKE соответствует стандарту ANSI, а MATCHES является расширением INFORMIX.

Page 20: Sql

  

отменяет специальное назначение следующего за ним символа \

служит для замены одиночного символа или символа из диапазона[]

заменяет любой одиночный символ?

заменяет последовательность символов*

 MATCHES

отменяет специальное назначение следующего за ним символа\

заменяет любой одиночный символ-

заменяет последовательность символов%

 LIKE

ЗНАЧЕНИЕСИМВОЛ

Обозначения

Page 21: Sql

Запрос

Выбрать список деталей, начинающихся с буквы «Б»

Select номер_детали, название, вес from P

where название like "Б%"

19БлюмP6

12БолтP5

весназваниеномер_детали

Запросы на языке SQL

Page 22: Sql

SQLSQLcount - число значений в столбце

sum - сумма значений по столбцу

avg - среднее значение в столбце

Агрегатные функции

Page 23: Sql

Запрос

Выдать средний, минимальный и максимальный объем поставок для поставщика S1 с соответствующим заголовком.

Select avg(количество) average,

min(количество) minimum,

max(количество) maximum

from SP where номер_поставщика='S1'

Запросы на языке SQL

400100216.6

maximumminimumaverage

Page 24: Sql

Временные функции

SQLSQL day - день месяца

current - текущая дата

month - значение месяца

Page 25: Sql

Запрос

Выдать перечень поставок и их количество, а также день, месяц, день недели и количество дней, прошедших с момента поставки на сегодняшний день.

Select номер_детали, количество

Day(дата_поставки) day,

Month(дата_поставки) month,

Weekday(дата_поставки) weekday,

Day(дата_поставки) - -current

from SP

Запросы на языке SQL

. . .. . .. . .. . .. . .. . .

. . .345200P2

. . .321300P1

(Expression)ю

weekdaymonthDayКоличествоНомердетали

Page 26: Sql

Другие функции

SQLSQLlength - размер в байтах символьной строки ( поля таблицы )ю

hex - 16-й код выражения

round - округленное значение выражения

trunc - обрезание значения выражения

Page 27: Sql

Выдать все комбинации информации о поставщиках и деталях, расположенных в одном городе.

Select S.*,P.* from S, Pwhere S.город=P.город

Запросы на языке SQL

Запрос

. . .. . .. . .. . .. . .. . .. . .. . .. . .

Париж17зеленыйБолтP2Париж10ДжонсS2

Лондон19красныйБлюмP6Лондон20СмитS1

Лондон14красныйВинтP4Лондон20СмитS1

Лондон12красныйГайкаP1Лондон20СмитS1

p.городвесцветназв-ен_детs.городрейтингфам-ян_пост

Page 28: Sql

Группирование

SQLSQLОператор group by группирует таблицу, представленную фразой from в группы т.о., чтобы в каждой группе все строки имели одно и тоже значение поля, указанного во фразе group by. Далее, к каждой группе перекомпанованной таблицы ( а не к каждой строке исходной таблицы) применяется фраза select, в результате чего, каждое выражение во фразе select принимает единственное значение для группы.

Page 29: Sql

Выдать для каждой поставляемой детали ее номер и общий объем поставок, за исключением поставок поставщика S1.

Select номер_детали, sum( количество)ю

from SP

where номер_поставщика

group by номер_детали

Запросы на языке SQL

Запрос

400P5

300P4

800P2

300P1

(Sum)юHомеpпоставщика

Page 30: Sql

ОБЪЕДЕНЕНИЕ

SQLSQL Объединяемые оператором UNION таблицы должны быть совместны по объединению:

• иметь одинаковое число столбцов;

• соответствующие столбцы должны иметь одинаковые типы.

Любое число предложений select может быть соединено оператором union. Избыточные дубликаты исключаются из результата объединения.

Page 31: Sql

Выдать номера деталей, которые имеют вес более 16 фунтов, либо поставляются поставщиком S2.

Select номер_детали

from P

where вес>16

unionSelect номер_детали

from SP

where номер_поставщика='S2'

Запросы на языке SQL

Запрос

P6

P3

P2

P1

Номер_детали

Page 32: Sql

Удалить все поставки для поставщиков из Лондона.

delete from SP

where 'Лондон'=(Select город from Swhere S.номер_поставщика=SP.номер_поставщика)ю

Результат: таблица SP с отсутствующими строками о поставках для поставщиков из Лондона.

Запрос

Удаление