0% нашли этот документ полезным (0 голосов)
14 просмотров19 страниц

SQL (упражнение №1)

Документ описывает основные понятия реляционных баз данных, такие как отношение, кортеж, атрибут, ключ, домен. Также рассматриваются отличия языка SQL от процедурных языков программирования.

Загружено:

kravchenkoyulia2001
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
0% нашли этот документ полезным (0 голосов)
14 просмотров19 страниц

SQL (упражнение №1)

Документ описывает основные понятия реляционных баз данных, такие как отношение, кортеж, атрибут, ключ, домен. Также рассматриваются отличия языка SQL от процедурных языков программирования.

Загружено:

kravchenkoyulia2001
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
Вы находитесь на странице: 1/ 19

9

1. О сн о вн ы епо н яти я и о пр еделен и я

1.1. О сновны е поня т ия рел я ц ионны х баз


данны х
О снов ой сов р еменных систем, исп ользующ их ба з ы д а нных, яв ляется
р еляци о нна я м о д ель д а нны х. В э той мод ели д а нные, п р ед ста в ляющ ие
инфор ма цию о п р ед метной обла сти, ор га низ ов а ны в в ид ед в умер ных та блиц,
на з ыв а емых о т но ш ени ям и . Н а р ис. 1 п р ив ед ен п р имер та кой та блицы-
отношенияи п оясняютсяоснов ныетер мины р еляционной мод ели.

К люч Н а и мен о ва н и е
За го ло во к а тр и б ута
о тн о шен и я
К о д_студ Имя_студ Фа к
ультет К ур с
0043 Ива н о в Ф и зи ческий 1
К о р теж
2004 Петр о в Х и ми ческий 2
5162 С и до р о в Ф и зи ческий 2
0007 О р ло в Х и ми ческий 4
0634 С ми р н о в Ф и зи ческий 3
0228 По по в Исто р и ческий 4
1735 К узн ецо в Ф и зи ческий 1

О тн о шен и е Атр и б ут
Зн а чен и еа тр и б ута

Рис. 1. Пр имер та блицы-отношенияр еляционной ба з ы д а нных

• О т но ш ени е – э то та блица , п од обна я п р ив ед енной на р ис. 1, и состоящ а я


из стр ок и столбцов . Вер хняя стр ока та блицы-отношения на з ыв а ется
10

за г о ло в ко м о т но ш ени я. Тер мины о т но ш ени е и т а бли ца обыч но


уп отр ебляются ка к синонимы, од на ко в яз ыке SQL исп ользуется тер мин
т а бли ца .
• Стр оки та блицы-отношения на з ыв а ются ко р т еж а м и или за пи сям и .
Столбцы на з ыв а ютсяа т р и бут а м и . Тер мины – а тр ибут, столбец, колонка ,
п оле обыч но исп ользуются ка к синонимы. К а жд ый а тр ибут имеет имя,
которое д олжно быть уника льным в конкр етной та блице-отношении,
од на ко в р а з ных та блица х имена а тр ибутов могут сов п а д а ть.
• К олич еств о кор тежей в та блице-отношении на з ыв а ется ка р д и на льны м
чи сло м отношения, а колич еств о а тр ибутов на з ыв а ется ст епенью
отношения.
• Ключ ил и пер в и чны й ключ отношения – э то уника льный ид ентифика тор
стр ок (кортежей), то естьта кой а тр ибут (на бор а тр ибутов ), д лякотор ого в
любой момент в р емени в отношении несущ еств ует стр ок с од ина ков ыми
з на ч ениями э того а тр ибута (на бор а а тр ибутов ). Н а п р ив ед енном р исунке
та блицы яч ейка с именем ключ ев ого а тр ибута имеет нижнюю гр а ницу в
в ид ед в ойной ч ер ты.
• Д о м ен отношения – э то сов окуп ность з на ч ений, из котор ых могут
в ыбир а ться з на ч ения конкр етного а тр ибута . То есть, конкр етный на бор
имеющ ихся в та блице з на ч ений а тр ибута в любой момент в р емени
д олжен быть п од множеств ом множеств а з на ч ений д омена , на котор ом
оп р ед елен э тот а тр ибут.
В общ ем случ а е на од ном и том же д омене могут быть оп р ед елены
з на ч ения р а з ных а тр ибутов . Ва жным яв ляется то, ч то д омены в в од ят
огр а нич ения на оп ер а ции ср а в нения з на ч ений р а з лич ных а тр ибутов . Э ти
огр а нич ения состоят в том, ч то кор р ектным обр а з ом можно ср а в нив а ть
межд у собой только з на ч ения а тр ибутов , оп р ед еленных на од ном и том же
д омене.
О тношения р еляционной ба з ы д а нных обла д а ют след ующ ими
св ойств а ми:
• в отношениях нед олжно бытькор тежей-д ублика тов .
• кор тежи отношений неуп ор яд оч ены.
• а тр ибуты отношений та кженеуп ор яд оч ены.
11

Из э тих св ойств отношенияв ытека ют след ующ иев а жныеслед ств ия.
• Из уника льности кор тежей след ует, ч то в отношении в сегд а имеется
а тр ибут или на бор а тр ибутов , п оз в оляющ их и д ент и ф и ци р о в а т ь кор теж,
д р угими слов а ми в отношении в сегда естьп ер в ич ный ключ .
• Из неуп ор яд оч енности кор тежей след ует, в о-п ер в ых, ч то в отношении не
сущ еств ует д р угого сп особа а д р еса ции кор тежей, кр оме а д р еса ции по
ключу, в о-в тор ых, ч то в отношении не сущ еств ует та ких п онятий ка к
п ер в ый кор теж, п ослед ний, п р ед ыд ущ ий, след ующ ий и т.д .
• Из неуп ор яд оч енности а тр ибутов след ует, ч то ед инств енным сп особом
их а д р еса ции в з а п р оса х яв ляетсяисп ользов а ниена именов а нияа тр ибута .
О тносительно св ойств а р еляционного отношения, ка са ющ егося
отсутств ия кор тежей-д ублика тов , след ует сд ела тьв а жноез а меч а ние. В э том
п ункте SQL не п олностью соотв етств ует р еляционной мод ели. А именно, в
отношениях, яв ляющ ихся р ез ульта та ми з а п р осов , SQL д о пуска ет на лич ие
од ина ков ых стр ок. Д ля их устр а нения в з а п р осе исп ользуется ключ ев ое
слов о DISTINCT (см. ниже).
Инфор ма ция в р еляционных ба з а х д а нных, ка к п р а в ило, хр а нится не в
од ной та блице-отношении, а в нескольких. Пр и соз д а нии нескольких та блиц
в з а имосв яз а нной инфор ма ции п ояв ляется в оз можность в ып олнения более
сложных оп ер а ций с д а нными, то естьболеесложной обр а ботки д а нных. Д ля
р а боты со св яз а нными д а нными из нескольких та бл иц в а жным яв ляется
п онятиета к на з ыв а емых в неш ни х ключей.
Внеш ни м ключо м та блицы на з ыв а етсяа тр ибут или на бор а тр ибутов э той
та блицы, ка жд ое з на ч ение котор ых в текущ ем состоянии та блицы в сегд а
сов п а д а ет со з на ч ением а тр ибутов , яв л яющ ихся ключ ом, в д р угой та блице.
Внешниеключ и исп ользуютсяд лясв яз ыв а нияз на ч ений а тр ибутов из р а з ных
та блиц. С п омощ ью в нешних ключ ей обесп еч ив а ется та к на з ыв а ема я
ссылоч на я целостность ба з ы д а нных, то есть согла сов а нность д а нных,
оп исыв а ющ их од ни и тежеобъекты, но хр а нящ ихсяв р а з ных та блица х.
12

1.2. О т л ичие SQL от проц едурны х я з ы ков


програм м ирования
Я з ык SQL относится к кла ссу неп р оцед ур ных яз ыков
п р огр а ммир ов а ния. В отлич ие от унив ер са льных п р оцед ур ных яз ыков ,
котор ые та кже могут бытьисп ользов а ны д ля р а боты с ба з а ми д а нных, яз ык
SQL ор иентир ов а н нена за пи си , а на м но ж ест в а .
Э то оз на ч а ет след ующ ее. В ка ч еств е в ход ной инфор ма ции д ля
фор мулир уемого на яз ыке SQL з а п р оса к ба з е д а нных исп ользуется
м но ж ест в о ко р т еж ей-за пи сей од ной или нескольких та блиц-отношений. В
р ез ульта те в ып олнения з а п р оса та кже обр а з уется м но ж ест в о ко р т еж ей
р ез ультир ующ ей та блицы-отношения. Д р угими слов а ми, в SQL р ез ульта том
любой оп ер а ции на д отношениями та кже яв ляется отношение. За п р ос SQL
з а д а ет неп р оцед ур у, то естьп ослед ов а тельностьд ейств ий, необход имых д ля
п олуч ения р ез ульта та , а услов ия, котор ым д олжны уд ов летв ор ятькор тежи
р ез ультир ующ его отношения, сфор мулир ов а нные в тер мина х в ход ного (или
в ход ных) отношений.

1.3. И нт еракт ивны й и вст роенны й SQL

Сущ еств уют и исп ользуются д в е фор мы яз ыка SQL: и нт ер а кт и в ны й


SQL и в ст р о енны йSQL.
Инт ер а кт и в ны й SQL исп ользуется д ля неп оср ед ств енного в в од а SQL-
з а п р осов п ользов а телем и п олуч енияр ез ульта та в интер а ктив ном р ежиме.
Вст р о енны й SQL состоит из кома нд SQL, в стр оенных в нутр ьп р огр а мм,
котор ые обыч но на п иса ны на некотор ом д р угом яз ыке (Па ска ль, С, С++ и
д р .). Э то д ела ет п р огр а ммы, на п иса нные на та ких яз ыка х, более мощ ными,
гибкими и э ффектив ными, обесп еч ив а я их п р именение д ля р а боты с
д а нными, хр а нящ имися в р еляционных ба з а х. Пр и э том, од на ко, тр ебуются
д оп олнительныеср ед ств а обесп еч ения интер фейса SQL с яз ыком, в котор ый
он в стр а ив а ется.
Д а нна я книга п осв ящ ена интер а ктив ному SQL, п оэ тому в ней не
обсужд а ются в оп р осы п остр оения интер фейса , п оз в оляющ его св яз а тьSQL с
д р угими яз ыка ми п р огр а ммир ов а ния.
13

1.4. С ост авны е част и SQL


И интер а ктив ный, и в стр оенный SQL п од р а з д еляются на след ующ ие
соста в ныеч а сти.
Язы к О пр ед елени я Д а нны х – DDL (Data Definition Language), д а ет
в оз можность соз д а ния, из менения и уд а ления р а з лич ных объектов ба з ы
д а нных (та блиц, инд ексов , п ользов а телей, п р ив илегий и т.д .).
К ч ислу д оп олнительных функций яз ыка оп р ед еления д а нных DDL
могут быть в ключ ены ср ед ств а оп р ед еления огр а нич ений целостности
д а нных, оп р ед еления п ор яд ка стр уктур хр а нения д а нных, оп иса ния
э лементов физ ич еского ур ов няхр а ненияд а нных.
Язы к О бр а бо т ки Д а нны х – DML (Data Manipulation Language),
п р ед оста в ляет в оз можность в ыбор ки инфор ма ции из ба з ы д а нных и ее
п р еобр а з ов а ния.
Тем неменее, э то нед в а р а з лич ных яз ыка , а комп оненты ед иного SQL.
14

1.5. Т ипы данны х SQL


В яз ыке SQL имеются ср ед ств а , п оз в ол яющ ие д ля ка жд ого а тр ибута
ука з ыв а тьтип д а нных, котор ому д олжны соотв етств ов а тьв сез на ч енияэ того
а тр ибута .
След ует отметить, ч то оп р ед елениетип ов д а нных яв ляетсятой ч а стью, в
которой коммер ч еские р еа лиз а ции яз ыка не п олностью согла суются с
тр ебов а ниями официа льного ста нд а р та SQL. Э то объясняется, в ч а стности,
жела нием сд ела тьSQL сов местимымс д р угими яз ыка ми п р огр а ммир ов а ния.

1.5.1. Т ип данны х “ст рока сим вол ов”


Ста нд а р т п од д ер жив а ет только од ин тип д ля п р ед ста в ления текста :
CHARACTER(CHAR). Э тот тип д а нных п р ед ста в ляет собой симв ольные
стр оки фиксир ов а нной д лины. Е го синта ксис имеет в ид :
CHARACTER [(д ли на )] или
CHAR [(д ли на )].
Текстов ые з на ч ения п оля та блицы, д ля котор ого оп р ед елен тип CHAR,
имеют ф и кси р о в а нную д лину, котор а я оп р ед еляется п а р а метр ом д ли на . Э тот
п а р а метр может п р инима ть з на ч ения от 1 д о 255, то есть строка может
сод ер жа тьд о 255 симв олов . Е сли в о в в од имой в п оле текстов ой конста нте
фа ктич еское ч исло симв олов меньше ч исла , оп р ед еленного п а р а метр ом
д ли на , то э та конста нта а в тома тич ески д оп олняется сп р а в а п р обела ми д о
з а д а нного ч исла симв олов .
Н екотор ые р еа лиз а ции яз ыка SQL п од д ер жив а ют в ка ч еств е тип а
д а нных стр оки п ер еменной д лины. Э тот тип может обоз на ч а тьсяключ ев ыми
слов а ми VARCHAR(), CHARACTER VARYING или CHAR VARYING(). О н
оп исыв а ет текстов ую стр оку, котор а я может иметьпр о и зв о льную д лину д о
оп р ед еленного конкр етной р еа лиз а цией SQL ма ксимума (в Oracle д о 2000
симв олов ). В отлич ие от тип а CHAR в э том случ а е п р и в в од е текстов ой
конста нты, фа ктич еска яд лина котор ой меньшез а д а нной, неп р оиз в од итсяее
д оп олненияп р обела ми д о з а д а нного ма ксима льного з на ч ения.
К онста нты, имеющ иетип CHARACTER и VARCHAR, в в ыр а жениях SQL
з а ключ а ютсяв од иноч ныека в ыч ки, на п р имер ‘т екст ’.
15

След ующ иеп р ед ложенияэ кв ив а лентны:


VARCHAR[(д ли на )], CHAR VARYING[(д ли на )],
CHARACTER VARYING[(д ли на )]

Е сли д лина стр оки не ука з а на яв но, она п ола га ется р а в ной од ному
симв олу в о в сех случ а ях.
По ср а в нению с тип ом CHAR тип д а нных VARCHAR п оз в оляет более
э кономно исп ользов а ть п а мять, в ыд еляемую д л я хр а нения текстов ых
з на ч ений, и ока з ыв а ется более уд обным п р и в ып олнении оп ер а ций
св яз а нных со ср а в нениемтекстов ых конста нт.

1.5.2. Числ овы е т ипы данны х


Ста нд а р тными ч ислов ыми тип а ми д а нных SQL яв ляются:
• INTEGER – исп ользуется д ля п р ед ста в ления целых ч исел в д иа п а з онеот
–231 д о +231 .
• SMOLLINT – исп ользуется д ля п р ед ста в ления целых ч исел в д иа п а з оне
меньшем, ч емд ляINTEGER, а именно – от –215 д о +215.

• DECIMAL (т о чно ст ь[,м а сш т а б]) – д есятич ное ч исло с фиксир ов а нной


точ кой, точ ность ука з ыв а ет, сколько з на ч а щ их цифр имеет ч исло.
М а сшта б ука з ыв а ет ма ксима льноеч исло цифр сп р а в а от точ ки
• NUMERIC (т о чно ст ь[,м а сш т а б]) – д есятич ное ч исло с фиксир ов а нной
точ кой, та коеже, ка к и DECIMAL.
• FLOAT [(т о чно ст ь)] – ч исло с п ла в а ющ ей точ кой и ука з а нной
минима льной точ ностью.
• REAL – ч исло та кое же, ка к п р и тип е FLOAT, з а исключ ением того, ч то
точ ностьуста на в лив а ется п о умолч а нию в з а в исимости от конкр етной
р еа лиз а ции SQL.
• DOUBLE PRECISION – ч исло та кое же, ка к и REAL, но точ ностьв д в а
р а з а п р ев ыша ет точ ностьд ляREAL.
СУ Б Д Oracle исп ользует д оп олнительно тип д а нных NUMBER д ля
п р ед ста в ления в сех ч ислов ых д а нных, целых, с фиксир ов а нной или
16

п ла в а ющ ей точ кой. Е го синта ксис:


NUMBER [(т о чно ст ь[, м а сш т а б])].

Е сли з на ч ение п а р а метр а т о чно ст ь не ука з а но яв но, оно п ола га ется


р а в ным 38. Зна ч ение п а р а метр а м а сш т а б п о умолч а нию п р ед п ола га ется
р а в ным 0. Зна ч ение п а р а метр а т о чно ст ь может из меняться от 1 д о 38;
з на ч ение п а р а метр а м а сш т а б может из меняться от –84 д о 128.
Исп ользов а ние отр ица тельных з на ч ений ма сшта ба оз на ч а ет сд в иг
д есятич ной точ ки в стор ону ста р ших р а з р яд ов . Н а п р имер , оп р ед еление
NUMBER (7, –3) оз на ч а ет окр углениед о тысяч .
Тип ы DECIMAL и NUMERIC п олностью э кв ив а лентны тип у NUMBER.
Синта ксис: DECIMAL [(т о чно ст ь[, м а сш т а б])],
DEC [(т о чно ст ь[, м а сш т а б])],
NUMERIC [(т о чно ст ь[, м а сш т а б])].

1.5.3. Д ат а и врем я
Тип д а нных, п р ед на з на ч енный д ля п р ед ста в ления д а т ы и в р ем ени ,
та кже яв ляется неста нд а р тным, хотя и ч р ез в ыч а йно п олез ным. Поэ тому д ля
точ ного в ыяснения того, ка кие тип ы д а нных п од д ер жив а ет конкр етна я
СУ Б Д , след ует обр а щ а тьсяк еед окумента ции.
В СУ Б Д Oracle имеется тип DATE, исп ользуемый д л я хр а нения д а ты и
в р емени. Под д ер жив а ются д а ты, на ч ина я от 1 янв а р я 4712 г. д о н.э . и д о 31
д ека бр я4712 г. Пр и оп р ед елении д а ты без уточ нения в р емени п о умолч а нию
п р инима етсяв р емяп олуноч и.
Н а лич ие тип а д а нных д л я хр а нения д а ты и в р емени п оз в оляет
п од д ер жив а ть сп ециа льную а р ифметику д а т и в р емен. Д оба в ление к
п ер еменной тип а DATE целого ч исла оз на ч а ет ув елич ение д а ты на
соотв етств ующ ееч исло д ней, а в ыч ита ниесоотв етств ует оп р ед елению более
р а нней д а ты.
К онста нты тип а DATE з а п исыв а ются в з а в исимости от фор ма та ,
п р инятого в оп ер а ционной системе. Н а п р имер ‘03.05.1999’ или ‘12/06/1989’,
или ‘03-nov-1999’, или ‘03-apr-99’.
17

1.5.4. Неопредел енны е ил и пропущ енны е данны е (NULL)


Д ля обоз на ч ения отсутств ующ их, п р оп ущ енных или неиз в естных
з на ч ений а тр ибута в SQL исп ользуется ключ ев ое слов о NULL. Д ов ольно
ч а сто можно в стр етить слов осоч ета ние “а т р и бут и м еет зна чени е NULL”.
Стр ого гов ор я, NULL не яв ляется з на ч ением в обыч ном п онима нии, а
исп ользуется именно д ля обоз на ч ения того фа кта , ч то д ейств ительное
з на ч ениеа тр ибута на са мом д елеп р оп ущ ено или неиз в естно. Э то п р ив од ит к
р яд у особенностей, ч то след ует уч итыв а ть п р и исп ользов а нии з на ч ений
а тр ибутов , котор ыемогут на ход итьсяв состоянии NULL.
• В а гр егир ующ их функциях, п оз в оляющ их п ол уч а тьсв од ную инфор ма цию
п о множеств у з на ч ений а тр ибута , на п р имер , сумма р ное или ср ед нее
з на ч ение, д ля обесп еч ения точ ности и од ноз на ч ности толков а ния
р ез ульта тов отсутств ующ иеили NULL-з на ч енияа тр ибутов игнор ир уются.

• У слов ные оп ер а тор ы от булев ой д в уз на ч ной логики true/false


р а сшир яютсяд о тр ехз на ч ной логики true/false/unknown.

• Все оп ер а тор ы, з а искл юч ением оп ер а тор а конка тена ции стр ок “ || ”,


в оз в р а щ а ют п устоез на ч ение (NULL), если з на ч ениелюбого из оп ер а нд ов
отсутств ует (имеет “з на ч ениеNULL”).

• Д ля п р ов ер ки на п устое з на ч ение след ует исп ользов а ть оп ер а тор ы


IS NULL и IS NOT NULL (исп ользов а ние д л я э того оп ер атора
ср а в нения“= ” яв ляетсяошибкой).
• Функции п р еобр а з ов а ния тип ов , имеющ ие NULL в ка ч еств е а р гумента ,
в оз в р а щ а ют п устоез на ч ение(NULL).

1.6. И спол ь з уем ы е т ерм ины и обоз начения


Ключев ы е сло в а – э то исп ользуемыев в ыр а жениях SQL слов а , имеющ ие
сп ециа льное на з на ч ение (на п р имер , они могут обоз на ч а ть конкр етные
кома нд ы SQL). К люч ев ые слов а нельзя исп ользов а тьд ля д р угих целей, к
п р имер у, в ка ч еств е имен объектов ба з ы д а нных. В книге они в ыд еляются
шр ифтом: КЛЮЧЕВОЕСЛОВО.
Ко м а нд ы , или пр ед ло ж ени я, яв ляются инстр укциями, с п омощ ью
18

котор ых SQL обр а щ а ется к ба з е д а нных. К ома нд ы состоят из од ной или


более логич еских ч а стей, на з ыв а емых п р ед ложениями. Пр ед ложения
на ч ина ютсяключ ев ымслов ом и состоят из ключ ев ых слов и а р гументов .
О бъекты ба з ы д а нных, имеющ ие имена (та блицы, а тр ибуты и д р .), в
книгета кжев ыд еляютсяособым обр а з ом: ТАБЛИЦА1, АТРИБУТ_2.
В оп иса нии синта ксиса кома нд SQL оп ер а тор оп р ед еления “::=”
р а з д еляет оп р ед еляемый э лемент (слев а от оп ер а тор а ) и собств енно его
оп р ед еление (сп р а в а от оп ер а тор а); кв а д р а тные скобки “[ ]” ука з ыв а ют
нео бяза т ельны й э лемент синта ксич еской констр укции; многоточ ие “...”
ука з ыв а ет, ч то в ыр а жение, п р ед шеств ующ ее ему, может п ов тор яться любое
ч исло р а з ; фигур ныескобки “{ }”объед иняют п ослед ов а тельностьэ лементов
в ло ги ческую гр уппу, од ин из э лементов котор ой д олжно бытьобяз а тельно
исп ользов а н; в ер тика льна я ч ер та “|” ука з ыв а ет, ч то ч а сть оп р ед еления,
след ующ а я з а э тим симв олом, яв ляется од ним из в оз можных в а р иа нтов ; в
углов ыескобки “< >” з а ключ а ютсяэ лементы, котор ыеобъясняются п о мер е
того, ка к в в од ятся.
19

1.7. Учебная баз а данны х


В п р ив од имых в п особии п р имер а х п остр оения SQL-з а п р осов и
контр ольных уп р а жнениеях исп ользуется ба з а д а нных, состоящ а я из
след ующ их та блиц.
Та блица 1.1. STUDENT (Студент)
STUDENT_ID SURNAME NAME STIPEND KURS CITY BIRTHDAY UNIV_ID
1 Ив а нов Ив а н 150 1 О рел 3/12/1982 10
3 Петров Петр 200 3 К урск 1/12/1980 10
6 Сид оров Ва д им 150 4 Москв а 7/06/1979 22
10 К уз нецов Б орис 0 2 Б рянск 8/12/1981 10
12 За йцев а О льга 250 2 Л ип ецк 1/05/1981 10
265 Па в лов А нд рей 0 3 Воронеж 5/11/1979 10
32 К отов Па в ел 150 5 Б елгор од NULL 14
654 Л укин А ртем 200 3 Воронеж 1/12/1981 10
276 Петров А нтон 200 4 NULL 5/08/1981 22
55 Б елкин Ва д им 250 5 Воронеж 7/01/1980 10
… … … … … … … … … … … … … … … …

STUDENT_ID – числовой код, идентифицирующий студента,


SURNAME – фамилия студента,
NAME – имя студента,
STIPEND – стипендия, которую получает студент,
KURS – курс, на котором учится студент,
CITY – город, в котором живет студент,
BIRTHDAY – дата рождения студента,
UNIV_ID – числовой код, идентифицирующий университет, в
котором учится студент.

Та блица 1.2. LECTURER (Преподаватель)


LECTURER_ID SURNAME NAME CITY UNIV_ID
24 К олесников Б орис Вор онеж 10
46 Н иконов Ив а н Вор онеж 10
74 Л агутин Па в ел М оскв а 22
108 Струков Н иколай М оскв а 22
276 Н иколаев Виктор Вор онеж 10
328 Сорокин А нд рей О рел 10
… … … … … … … … … …

LECTURER_ID – числовой код, идентифицирующий


преподавателя,
20

SURNAME – фамилия преподавателя,


NAME – имя преподавателя,
CITY – город, в котором живет преподаватель,
UNIV_ID – идентификатор университета, в котором работает
преподаватель.

Та блица 1.3. SUBJECT (Предмет обучения)


SUBJ_ID SUBJ_NAME HOUR SEMESTER
10 Информа тика 56 1
22 Физ ика 34 1
43 М а тематика 56 2
56 История 34 4
94 А нглийский 56 3
73 Физ кул ьтура 34 5
… … … … … … … …

SUBJ_ID – идентификатор предмета обучения,


SUBJ_NAME – наименование предмета обучения,
HOUR – количество часов, отводимых на изучение предмета,
SEMESTER – семестр, в котором изучается данный предмет.

Та блица 1.4. UNIVERSITY (Университеты)


UNIV_ID UNIV_NAME RATING CITY
22 МГ У 606 М оскв а
10 ВГ У 296 Воронеж
11 Н ГУ 345 Н ов осибирск
32 РГ У 416 Ростов
14 БГУ 326 Б елгор од
15 ТГ У 368 Томск
18 ВГ МА 327 Воронеж
… … … … … … … …

UNIV_ID – идентификатор университета,


UNIV_NAME – название университета,
RATING – рейтинг университета,
CITY – город, в котором расположен университет.
21

Та блица 1.5. EXAM_MARKS (Экзаменационные оценки)


EXAM_ID STUDENT_ID SUBJ_ID MARK EXAM_DATE
145 12 10 5 12/01/2000
34 32 10 4 23/01/2000
75 55 10 5 05/01/2000
238 12 22 3 17/06/1999
639 55 22 NULL 22/06/1999
43 6 22 4 18/01/2000
… … … … … … … … … …

EXAM_ID – идентификатор экзамена,


STUDENT_ID – идентификатор студента,
SUBJ_ID – идентификатор предмета обучения,
MARK – экзаменационная оценка,
EXAM_DATE – дата экзамена.

Та блица 1.6. SUBJ_LECT (Учебные дисциплины преподавателей)


LECTURER _ID SUBJ_ID
24 24
46 46
74 74
108 108
276 276
328 328
… … … …

LECTURER_ID – идентификатор преподавателя,


SUBJ_ID – идентификатор предмета обучения.

В О П РО С Ы

1. К а киеп оляп р ив ед енных та блиц яв ляютсяп ер в ич ными ключ а ми?


2. К а киед а нныехр а нятсяв столбце2 в та блице“Пр ед мет обуч ения”?
3. К а к п о-д р угому на з ыв а етсястр ока ? Столбец?
4. Поч ему мы неможемз а п р оситьд ляп р осмотр а п ер в ыеп ятьстр ок?
22

2. Вы б о р к
а да н н ы х (о пер а то р SELECT)

2.1. П рост ей ш ие SELECT-з апросы


О п ер а тор SELECT (ВЫБРАТЬ) яз ыка SQL яв ляется са мым в а жным и
са мым ч а сто исп ользуемым оп ер а тор ом. О н п р ед на з на ч ен д ля в ы бо р ки
инфор ма ции из та блиц ба з ы д а нных. У п р ощ енный синта ксис оп ер а тор а
SELECT в ыгляд ит след ующ им обр а з ом.

SELECT [DISTINCT] <спи со ка тр и б уто в>


FROM <спи со кта б ли ц>
[WHERE <усло ви евы б о р к
и >]
[ORDER BY <спи со ка тр и б уто в>]
[GROUP BY <спи со ка тр и б уто в>]
[HAVING <усло ви е>]
[UNION <вы р а ж ен и ес о пер а то р о м SELECT>];

В кв а д р а тных скобка х ука з а ны э лементы, котор ыемогут отсутств ов а тьв


з а п р осе.
К люч ев ое слов о SELECT сообщ а ет ба з е д а нных, ч то д а нное
п р ед ложение яв ляется з а п р осом на и зв лечени е инфор ма ции. После слов а
SELECT ч ер ез з а п ятую п ер еч исляются на и м ено в а ни я по лей (сп исок
а тр ибутов ), сод ер жимоекотор ых з а п р а шив а ется.
О бяз а тельным ключ ев ым слов ом в п р ед ложении-з а п р осе SELECT
яв ляется слов о FROM (ИЗ). За ключ ев ым слов ом FROM ука з ыв а ется сп исок
р а з д еленных з а п ятыми имен та бл иц, из котор ых из в лека етсяинфор ма ция.
Н а п р имер ,
SELECT NAME, SURNAME
FROM STUDENT;

Л юбой SQL-з а п р ос д олжен з а ка нч ив а ться симв олом “;” (т о чка с


за пят о й).
23

Пр ив ед енный з а п р ос осущ еств ляет в ыбор ку в сех з на ч ений п олей NAME


и SURNAME из та блицы STUDENT.

Е го р ез ульта томяв ляетсята блица след ующ его в ид а :

NAME SURNAME
Ив а н Ив а нов
Петр Петр ов
Ва д им Сид ор ов
Б орис К уз нецов
О льга Зайцев а
А нд рей Па в лов
Па в ел К отов
А ртем Л укин
А нтон Петр ов
Ва д им Б елкин
… … … …

Пор яд ок след ов а ния столбцов в э той та блице соотв етств ует п ор яд ку


п олей NAME и SURNAME, ука з а нному в з а п р осе, а не их п ор яд ку в о в ход ной
та блицеSTUDENT.
Е сли необход имо в ыв ести з на ч ения в сех столбцов та блицы, то можно
в место п ер еч исленияих имен исп ол ьзов а тьсимв ол “* ” (з в ез д оч ка ).
SELECT *
FROM STUDENT;

В д а нном случ а е в р ез ульта те в ып олнения з а п р оса буд ет п олуч ена в ся


та блица STUDENT.
Е щ е р а з обр а тим в нима ние на то, ч то п олуч а емые в р ез ульта те SQL-
з а п р оса та блицы не в п олной мер е отв еч а ют оп р ед елению р еляционного
отношения. В ч а стности, в них могут ока з а ться кор тежи с од ина ков ыми
з на ч ениями а тр ибутов .
Н а п р имер , з а п р ос “Получ итьсп исок на з в а ний гор од ов , гд е п р ожив а ют
студ енты, св ед ения о котор ых на ход ятся в та блице STUDENT”, можно
з а п иса тьв след ующ ем в ид е
SELECT CITY FROM STUDENT;

Е го р ез ульта том буд ет та блица


24

CITY
О рел
К урск
Москв а
Б рянск
Л ип ецк
В оронеж
Б елгор од
В оронеж
NULL
В оронеж
… …

Вид но, ч то в та блице в стр еч а ются од ина ков ые стр оки (в ыд елены
жир ным шр ифтом).
Д ля исключ енияиз р ез ульта та SELECT-з а п р оса п ов тор яющ ихсяз а п исей
исп ользуетсякл юч ев оеслов о DISTINCT (ОТЛИЧНЫЙ). Е сли з а п р ос SELECT
из в лека ет множеств о п олей, то DISTINCT и сключа ет д ублика ты стр ок, в
котор ых з на ч енияв сех в ыбр а нных п олей ид ентич ны.
За п р ос “О п р ед елитьсп исок на з в а ний р а зли чны х гор од ов , гд еп р ожив а ют
студ енты, св ед ения о котор ых на ход ятся в та блице STUDENT”, можно
з а п иса тьв след ующ ем в ид е.
SELECT DISTINCT CITY
FROM STUDENT;

В р ез ульта теп олуч имта блицу, в котор ой д ублика ты стр ок исключ ены.
CITY
О рел
К урск
Москв а
Б рянск
Л ип ецк
Воронеж
Б елгор од
NULL
… …

К люч ев ое слов о ALL (ВСЕ), в отлич ие от DISTINCT, ока з ыв а ет


п р отив оп оложное д ейств ие, то есть п р и его исп ол ьзов а нии п ов тор яющ иеся
стр оки в ключа ют ся в соста в в ыход ных д а нных. Режим, з а д а в а емый
25

ключ ев ым слов ом ALL, д ейств ует п о умолч а нию, п оэ тому в р еа льных


з а п р оса х д ляэ тих целей оно п р а ктич ески неисп ользуется.

Исп ользов а ние в оп ер а тор е SELECT п р ед ложения, оп р ед еляемого


ключ ев ым слов ом WHERE (ГДЕ), п оз в оляет з а д а в а ть в ыр а жение услов ия
(п р ед ика т), п р инима ющ ее з на ч ение и с т и на или л о ж ь д ля з на ч ений п олей
стр ок та блиц, к котор ым обр а щ а етсяоп ер а тор SELECT. Пр ед ложениеWHERE
оп р ед еляет, к а к ие ст р ок и ука за нны х т а бли ц д о лж ны бы т ь в ы бр а ны . В
та блицу, яв ляющ уюся р ез ульта том з а п р оса , в ключ а ются только те стр оки,
д ля котор ых услов ие (п р ед ика т), ука з а нное в п р ед ложении WHERE,
п р инима ет з на ч ениеи с т и на .
П ример.
Н а п иса тьз а п р ос, в ып олняющ ий в ыбор ку имен (NAME) в сех студ ентов с
фа милией (SURNAME) Петр о в, св ед ения о котор ых на ход ятся в та блице
STUDENT.
SELECT SURNAME, NAME
FROM STUDENT
WHERE SURNAME = ‘Петр о в’;

Рез ульта томэ того з а п р оса буд ет та блица :


SURNAME NAME
Петров Петр
Петров А нтон

В з а д а в а емых в п р ед ложении WHERE услов иях могут исп ользов а ться


оп ер а ции ср а в нения, оп р ед еляемые след ующ ими оп ер а тор а ми: = (р а в но), >
(больше), < (меньше), >= (большеили р а в но), <= (меньшеили р а в но), <> (не
р а в но), а та кжелогич ескиеоп ер а тор ы AND, OR и NOT.
Н а п р имер , з а п р ос д ля п олуч ения и м ен и ф а м и ли й студ ентов ,
обуч а ющ ихся на т р ет ьем кур се и п олуч а ющ их стип енд ию (р а з мер
стип енд ии бо льш е нуля) буд ет в ыгляд етьта ким обр а з ом:
SELECT NAME, SURNAME
FROM STUDENT
WHERE KURS = 3 AND STIPEND > 0;
26

Рез ульта т в ып олненияэ того з а п р оса имеет в ид :


SURNAME NAME
Петров Петр
Л укин А ртем

УП Р АЖ НЕ НИ Я

1. Н а п ишите з а п р ос д ля в ыв од а ид ентифика тор а (номер а ) п р ед мета


обуч ения, его на именов а ния, семестр а , в котор ом он ч ита ется, и
колич еств а отв од имых на него ч а сов д ляв сех стр ок та блицы SUBJECT.
2. Н а п ишите з а п р ос, п оз в оляющ ий в ыв ести в се стр оки та блицы
EXAM_MARKS, в котор ых п р ед мет обуч ения имеет номер (SUBJ_ID),
р а в ный 12.
3. Н а п ишите з а п р ос, в ыбир а ющ ий в се д а нные из та блицы STUDENT,
р а сп оложив столбцы та блицы в след ующ ем п ор яд ке: KURS, SURNAME,
NAME, STIPEND.
4. Н а п ишите з а п р ос SELECT, котор ый в ып олняет в ыв од на именов а ний
п р ед метов обуч ения (SUBJ_NAME) и след ом з а ним колич еств а ч а сов
(HOUR) д ля ка жд ого п р ед мета обуч ения (SUBJECT) в 4-м семестр е
(SEMESTR).
5. Н а п ишите з а п р ос, п оз в оляющ ий п олуч ить из та блицы EXAM_MARKS
з на ч ения столбца MARK (э кз а мена ционна я оценка ) д ля в сех студ ентов ,
исключ ив из сп иска п ов тор ениеод ина ков ых стр ок.
6. Н а п ишите з а п р ос, котор ый в ып олняет в ыв од сп иска фа милий студ ентов ,
обуч а ющ ихсяна тр етьеми болееста р ших кур са х.
7. Н а п ишитез а п р ос, в ыбир а ющ ий д а нныео фа милии, имени и номер екур са
д лястуд ентов , п олуч а ющ их стип енд июбол ьше140.
8. Н а п ишитез а п р ос, в ып олняющ ий в ыбор ку из та блицы SUBJECT на з в а ний
в сех п р ед метов обуч ения, на котор ыеотв од итсяболее30 ч а сов .
9. Н а п ишите з а п р ос, котор ый в ып олняет в ыв од сп иска унив ер ситетов ,
р ейтинг котор ых п р ев ыша ет 300 ба ллов .
10.Н а п ишите з а п р ос к та блице STUDENT д ля в ыв од а сп иска фа милий
27

(SURNAME), имен (NAME) и номер а кур са (KURS) в сех студ ентов со


стип енд ией большей или р а в ной 100, и жив ущ их в Вор онеже.
11.К а киед а нныебуд ут п олуч ены в р ез ульта тев ып олненияз а п р оса ?
SELECT *
FROM STUDENT
WHERE (STIPEND < 100 OR
NOT (BIRTHDAY >= ‘10/03/1980’
AND STUDENT_ID > 1003 ));
12.К а киед а нныебуд ут п олуч ены в р ез ульта тев ып олненияз а п р оса ?
SELECT *
FROM STUDENT
WHERE NOT ((BIRTHDAY = ‘10/03/1980’ OR STIPEND > 100)
AND STUDENT_ID > = 1003 );

Вам также может понравиться