SQL (упражнение №1)
SQL (упражнение №1)
К люч Н а и мен о ва н и е
За го ло во к а тр и б ута
о тн о шен и я
К о д_студ Имя_студ Фа к
ультет К ур с
0043 Ива н о в Ф и зи ческий 1
К о р теж
2004 Петр о в Х и ми ческий 2
5162 С и до р о в Ф и зи ческий 2
0007 О р ло в Х и ми ческий 4
0634 С ми р н о в Ф и зи ческий 3
0228 По по в Исто р и ческий 4
1735 К узн ецо в Ф и зи ческий 1
О тн о шен и е Атр и б ут
Зн а чен и еа тр и б ута
Из э тих св ойств отношенияв ытека ют след ующ иев а жныеслед ств ия.
• Из уника льности кор тежей след ует, ч то в отношении в сегд а имеется
а тр ибут или на бор а тр ибутов , п оз в оляющ их и д ент и ф и ци р о в а т ь кор теж,
д р угими слов а ми в отношении в сегда естьп ер в ич ный ключ .
• Из неуп ор яд оч енности кор тежей след ует, в о-п ер в ых, ч то в отношении не
сущ еств ует д р угого сп особа а д р еса ции кор тежей, кр оме а д р еса ции по
ключу, в о-в тор ых, ч то в отношении не сущ еств ует та ких п онятий ка к
п ер в ый кор теж, п ослед ний, п р ед ыд ущ ий, след ующ ий и т.д .
• Из неуп ор яд оч енности а тр ибутов след ует, ч то ед инств енным сп особом
их а д р еса ции в з а п р оса х яв ляетсяисп ользов а ниена именов а нияа тр ибута .
О тносительно св ойств а р еляционного отношения, ка са ющ егося
отсутств ия кор тежей-д ублика тов , след ует сд ела тьв а жноез а меч а ние. В э том
п ункте SQL не п олностью соотв етств ует р еляционной мод ели. А именно, в
отношениях, яв ляющ ихся р ез ульта та ми з а п р осов , SQL д о пуска ет на лич ие
од ина ков ых стр ок. Д ля их устр а нения в з а п р осе исп ользуется ключ ев ое
слов о DISTINCT (см. ниже).
Инфор ма ция в р еляционных ба з а х д а нных, ка к п р а в ило, хр а нится не в
од ной та блице-отношении, а в нескольких. Пр и соз д а нии нескольких та блиц
в з а имосв яз а нной инфор ма ции п ояв ляется в оз можность в ып олнения более
сложных оп ер а ций с д а нными, то естьболеесложной обр а ботки д а нных. Д ля
р а боты со св яз а нными д а нными из нескольких та бл иц в а жным яв ляется
п онятиета к на з ыв а емых в неш ни х ключей.
Внеш ни м ключо м та блицы на з ыв а етсяа тр ибут или на бор а тр ибутов э той
та блицы, ка жд ое з на ч ение котор ых в текущ ем состоянии та блицы в сегд а
сов п а д а ет со з на ч ением а тр ибутов , яв л яющ ихся ключ ом, в д р угой та блице.
Внешниеключ и исп ользуютсяд лясв яз ыв а нияз на ч ений а тр ибутов из р а з ных
та блиц. С п омощ ью в нешних ключ ей обесп еч ив а ется та к на з ыв а ема я
ссылоч на я целостность ба з ы д а нных, то есть согла сов а нность д а нных,
оп исыв а ющ их од ни и тежеобъекты, но хр а нящ ихсяв р а з ных та блица х.
12
Е сли д лина стр оки не ука з а на яв но, она п ола га ется р а в ной од ному
симв олу в о в сех случ а ях.
По ср а в нению с тип ом CHAR тип д а нных VARCHAR п оз в оляет более
э кономно исп ользов а ть п а мять, в ыд еляемую д л я хр а нения текстов ых
з на ч ений, и ока з ыв а ется более уд обным п р и в ып олнении оп ер а ций
св яз а нных со ср а в нениемтекстов ых конста нт.
1.5.3. Д ат а и врем я
Тип д а нных, п р ед на з на ч енный д ля п р ед ста в ления д а т ы и в р ем ени ,
та кже яв ляется неста нд а р тным, хотя и ч р ез в ыч а йно п олез ным. Поэ тому д ля
точ ного в ыяснения того, ка кие тип ы д а нных п од д ер жив а ет конкр етна я
СУ Б Д , след ует обр а щ а тьсяк еед окумента ции.
В СУ Б Д Oracle имеется тип DATE, исп ользуемый д л я хр а нения д а ты и
в р емени. Под д ер жив а ются д а ты, на ч ина я от 1 янв а р я 4712 г. д о н.э . и д о 31
д ека бр я4712 г. Пр и оп р ед елении д а ты без уточ нения в р емени п о умолч а нию
п р инима етсяв р емяп олуноч и.
Н а лич ие тип а д а нных д л я хр а нения д а ты и в р емени п оз в оляет
п од д ер жив а ть сп ециа льную а р ифметику д а т и в р емен. Д оба в ление к
п ер еменной тип а DATE целого ч исла оз на ч а ет ув елич ение д а ты на
соотв етств ующ ееч исло д ней, а в ыч ита ниесоотв етств ует оп р ед елению более
р а нней д а ты.
К онста нты тип а DATE з а п исыв а ются в з а в исимости от фор ма та ,
п р инятого в оп ер а ционной системе. Н а п р имер ‘03.05.1999’ или ‘12/06/1989’,
или ‘03-nov-1999’, или ‘03-apr-99’.
17
В О П РО С Ы
2. Вы б о р к
а да н н ы х (о пер а то р SELECT)
NAME SURNAME
Ив а н Ив а нов
Петр Петр ов
Ва д им Сид ор ов
Б орис К уз нецов
О льга Зайцев а
А нд рей Па в лов
Па в ел К отов
А ртем Л укин
А нтон Петр ов
Ва д им Б елкин
… … … …
CITY
О рел
К урск
Москв а
Б рянск
Л ип ецк
В оронеж
Б елгор од
В оронеж
NULL
В оронеж
… …
Вид но, ч то в та блице в стр еч а ются од ина ков ые стр оки (в ыд елены
жир ным шр ифтом).
Д ля исключ енияиз р ез ульта та SELECT-з а п р оса п ов тор яющ ихсяз а п исей
исп ользуетсякл юч ев оеслов о DISTINCT (ОТЛИЧНЫЙ). Е сли з а п р ос SELECT
из в лека ет множеств о п олей, то DISTINCT и сключа ет д ублика ты стр ок, в
котор ых з на ч енияв сех в ыбр а нных п олей ид ентич ны.
За п р ос “О п р ед елитьсп исок на з в а ний р а зли чны х гор од ов , гд еп р ожив а ют
студ енты, св ед ения о котор ых на ход ятся в та блице STUDENT”, можно
з а п иса тьв след ующ ем в ид е.
SELECT DISTINCT CITY
FROM STUDENT;
В р ез ульта теп олуч имта блицу, в котор ой д ублика ты стр ок исключ ены.
CITY
О рел
К урск
Москв а
Б рянск
Л ип ецк
Воронеж
Б елгор од
NULL
… …
УП Р АЖ НЕ НИ Я