Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SQL в вопросах и задачах

.pdf
Скачиваний:
34
Добавлен:
21.05.2015
Размер:
917.91 Кб
Скачать

71

Н ужный рез ультат, од нако, может бытьп олуч ен и п утемисп ольз ов а ния

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

SELECT SURNAME, MARK

FROM STUDENT LEFT OUTER JOIN EXAM_MARKS

ON STUDENT.STUDENT_ID = EXAM_MARKS.STUDENT_ID;

При исп ольз ов ании лево го соед инения расширение в ыв од имой таблицы осущ еств ляетсяз а сч ет з ап исей в ход ной таблицы, имякоторой указ а но слева от оп ератора JOIN.

След ует з аметить, ч то нотацияз ап росов с в нешнимсоед инением СУ Б Д ORACLE отлич аетсяот п рив ед енной нота ции, з ад а в аемой ста нд артом яз ыка SQL. В нота ции, исп ольз уемой в Oracle, этот жез а п рос буд ет иметьв ид

SELECT SURNAME, MARK, SUBJ_ID FROM STUDENT, EXAM_MARKS

WHERE STUDENT.STUDENT_ID = EXAM_MARKS.STUDENT_ID(+);

Зна к (+) став итсяу той та блицы, котораяд оп олняетсяз ап исями с NULL- з нач ениями, ч тобы п ри соед инении таблиц в в ыход ноеотношениеп оп а ли и тез ап иси д ругой таблицы, д лякоторых в та блицесо з наком(+) нена ход ится

строк с соотв етств ующ ими

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

соед инения. То естьд лялево го

в нешнего соед инения(п о нотации станд арта

SQL) в з а п росеORACLE-SQL указ а тель(+) став итсяу пр а во йтаблицы.

Прив ед енный в ыше з ап рос может бытьреа лиз ов а н и с п р именением

пр а во го в неш него со ед и нени я. О н буд ет иметьслед ующ ий в ид

SELECT SURNAME, MARK

FROM EXAM_MARKS RIGHT OUTER JOIN STUDENT

ON EXAM_MARKS.STUDENT_ID = STUDENT.STUDENT_ID;

Зд есь таблица STUDENT, з а сч ет з ап исей котор ой осущ еств ляется расширениев ыв од имой таблицы, стоит сп рав а от оп ератора JOIN.

В нотации Oracle э тот зап р ос буд ет в ыгляд етьслед ующ имобраз ом.

SELECT SURNAME, MARK, SUBJ_ID FROM STUDENT, EXAM_MARKS

WHERE EXAM_MARKS.STUDENT_ID(+) = STUDENT.STUDENT_ID;

Вид но, ч то исп ольз ов ание в нешнего п р а в ого или лев ого соед инения

 

 

72

п оз в оляет

сущ еств енно

уп ростить з а п рос, сд елать его з ап ись более

комп актной.

 

Иногд а

в оз никает

необход имость в ключ ения в рез ультат з а п роса

з ап исей из

обеих (п рав ой и лев ой) соед иняемых та блиц, д ля которых не

уд ов летв оряется услов иесоед инения. Такоесоед инениеназ ыв ается по лны м

внеш ни м со ед и нени ем

и осущ еств ляетсяуказ анием

з а п росеключ ев ых слов

FULL OUTER JOIN или UNION JOIN.

 

УП Р АЖ НЕ НИ Я

 

 

45.Н а п ишите з ап рос,

который в ып олняет в ыв од

д анных о фамилиях,

сд а ва вш и х э кзамены студ ентов , в месте с ид ентификатора ми кажд ого сд анного ими п ред мета обуч ения.

46.Н а п ишите з ап р ос, который в ып олняет в ыборку з нач ений фамилии в сех студ ентов с указ а нием д ля студ ентов , сд а в а в ших экз а мены, ид ентифика торов сд анных ими п ред метов обуч ения.

47.Н а п ишите з а п рос, который в ып олняет

в ыв од д анных о

фа милиях

студ ентов , сд а ва вш и х экз амены, в месте с

наименов а ниями

кажд ого

сд анного ими п ред мета обуч ения.

 

 

 

 

48.Н а п ишите з ап рос на

в ыд ач у д ля ка жд ого

студ ента

наз в а ний в сех

п ред метов обуч ения, п о которымэтот студ ентп олуч ил оценку 4 или 5.

49.Н а п ишите з ап р ос на

в ыд а ч у д а нных о

наз в а ниях в сех

п ред метов , п о

которымстуд енты п олуч или только хорошие(4 и 5) оценки. В в ыход ных д анных д олжны бытьп р ив ед ены фамилии студ ентов , на з в анияп ред метов и оценка.

50.Н а п ишите з ап рос, который в ып олняет в ыв од сп иска унив ерситетов с

р ейтингом, п рев ыша ющ им 300, в месте со

з нач ением максимального

р аз мера стип енд ии, п олуч аемой студ ентами

этих унив ерситетах.

51.Н а п ишите з ап р ос на в ыд ач у сп иска фа милий студ ентов (в а лфа в итном п оряд ке) в местесо з нач ением рейтинга унив ерситета , гд екажд ый из них уч ится, в ключ ив в сп исок и тех студ ентов , д лякоторых в баз ед анных не указ ано место их уч ебы.

73

2.19.3. И спол ь з ование псевдоним ов при соединении

табл иц

Часто п ри п олуч ении информации из таблиц баз ы д анных необход имо осущ еств лятьсоед инениетаблицы с еежекоп ией. Н а п ример, это требуетсяв случ а е, когд а требуется найти фамилии студ ентов , имеющ их од инаков ые имена. При соед инении таблицы с еежекоп ией в в од ят п сев д онимы (алиасы)

таблицы. Зап рос д ля п оиска фа милий студ ентов , имеющ их од инаков ые имена, в ыгляд ит след ующ имобраз ом

SELECT FIRST.SURNAME, SECOND.SURNAME

FROM STUDENT FIRST, STUDENT SECOND

WHERE FIRST.NAME = SECOND.NAME

В э том з а п росев в ед ены д в а п сев д онима д ляод ной та блицы STUDENT,

ч то п оз в оляет

корректно

з ад а ть в ыражение,

св яз ыв а ющ ее д в е коп ии

таблицы.

Ч тобы исключ ить п ов торения строк

в в ыв од имом рез ультате

з ап роса

из -з а

п ов торного

сра в нения од ной и

той же п ар ы студ ентов ,

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

SELECT FIRST.SURNAME, SECOND.SURNAME

FROM STUDENT FIRST, STUDENT SECOND

WHERE FIRST.NAME = SECOND.NAME

AND FIRST.SURNAME < SECOND.SURNAME

УП Р АЖ НЕ НИ Я

52.Н а п исать з ап р ос, в ып олняющ ий в ыв од сп иска в сех п ар фамилий студ ентов , п рожив а ющ их в од номгор од е. При этомнев ключ атьв сп исок комбина ции фамилий студ ентов самих с собой (то естькомбинацию тип а “Ив анов -Ив а нов ”) и комбина ции фамилий студ ентов , отлич ающ иеся п оряд ком след ов а ния (то естьв ключ атьод ну из д в ух комбина ций тип а “Ив анов -Петров ” и “Петров -Ив анов ”).

53.Н а п исать з ап рос, в ып олняющ ий

в ыв од сп иска

в сех

п ар

наз в аний

унив ерситетов , расп оложенных в

од ном город е,

не в ключ ая в сп исок

комбина ции на з в аний унив ерситетов самих с собой и

п ары

наз в аний

унив ерситетов , отлич ающ иесяп оряд комслед ов а ния.

 

 

 

 

74

 

 

54.Н а п исать з а п рос,

который

п оз в оляет

п олуч ить д анные о

наз в а ниях

унив ерситетов и

город ов , в

которых

они расп оложены, с

рейтингом,

р ав нымили п рев ыша ющ имрейтингВГ У .

Д О П О Л НИ Т Е Л ЬНЫ

Е УП Р АЖ НЕ НИ Я НА В Ы БО Р КУД АННЫ

Х

55.Н а п исатьз ап рос,

в ып олняющ ий в ыв од д анных об именах и

фамилиях

студ ентов , п олуч ив ших хотябы од ну отлич нуюоценку.

 

56.Н а п исатьз ап рос,

в ып олняющ ий в ыв од д анных об именах и

фамилиях

студ ентов , имеющ их в есьнабор оценок (тройки, ч етв ерки и п ятерки).

57.Н а п исать з а п рос,

в ып олняющ ий в ыбор ку з нач ений ид ентифика торов

студ ентов , имеющ их такиежеоценки, ч то и студ ент с ид ентификатором

12.

58.Н а п исать з а п рос,

в ып олняющ ий

в ыборку

в сех

п а р ид ентифика торов

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

 

 

59.Н а п исатьз ап рос, в ып олняющ ий в ыв од

д анных об именах и

фамилиях

студ ентов , неп олуч ив ших ни од ной отлич ной оценки.

 

 

60.Н а п исать з ап рос,

в ып олняющ ий

в ыборку з нач ений

наименов аний

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

61.Н а п исать з ап рос,

в ып олняющ ий

в ыв од

колич еств а

студ ентов , не

имеющ их ни од ной оценки.

 

 

 

 

 

 

62.Н а п исатьз ап рос, в ып олняющ ий в ыв од

колич еств а

студ ентов ,

имеющ их

только отлич ныеоценки.

 

 

 

 

 

 

63.Н а п исатьз ап рос,

в ып олняющ ий в ыв од

д анных о

п р ед метах

обуч ения,

которыеп реп од а ютсяп реп од а в ателемп о фа милии К олесников .

 

64.Н а п исатьз ап рос, в ып олняющ ий в ыв од

имен и фамилий п реп од ав ателей,

п ров од ящ их з анятияна п ер в омкурсе.

 

 

 

 

 

65.Н а п исатьз ап р ос, в ып олняющ ий в ыв од имен и фамилий студ ентов , место п рожив а ния которых не сов п а д ает с город ом, в котором наход ится их унив ерситет.

66.Н а п исатьз а п рос, в ып олняющ ий в ыв од колич еств а экз аменов , сд а нных (с п оложительной оценкой) студ ентомс ид ентификатором32.

75

67.Н а п исатьз ап рос, в ып олняющ ий в ыв од имен и фамилий п реп од ав ателей, ч итающ их д в а и болеера з лич ных п ред мета обуч ения.

68.Н а п исатьз ап рос, в ып олняющ ий в ыв од имен и фамилий п реп од ав ателей,

п ров од ящ их з анятияв д в ух и болеесеместр ах.

 

 

69.Н а п исать з ап рос,

в ып олняющ ий

в ыв од

д анных о

наименов а ниях

п ред метов обуч ения, ч итаемых д в умяи болееп реп од а в ателями.

 

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

обуч ения,

п реп од ав аемого д ля студ ентов ВГ У , его на именов ание,

фа милию и имя

п реп од ав ателя, и город , в которомжив етстуд ент.

 

 

71.Н а п исать з ап р ос,

в ып олняющ ий

в ыв од

колич еств а

ч а сов

з анятий,

п ров од имых п реп од а в ателемЛ агутиным.

 

 

 

72.Н а п исать з ап рос,

в ып олняющ ий

в ыв од

фамилий

п реп од ав ателей,

ч итающ их та киежеп ред меты обуч ения, ч то и п реп од ав а тельСорокин.

73.Н а п исатьз ап р ос, в ып олняющ ий в ыв од фа милий п реп од ав ателей, уч ебна я нагруз ка которых (колич еств о уч ебных ч асов ) п рев ышает нагр уз ку п реп од ав ателяН икола ев а.

74.Н а п исать

з ап р ос,

в ып олняющ ий

в ыв од

д анных

о

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

в ед ущ их обуч ение хотя бы п о од ному из

п ред метов

обуч ения, которые

п реп од аютсяп реп од ав а телемп о фа милии Сор окин.

 

 

75.Н а п исать

з а п рос,

в ып олняющ ий

в ыв од д анных

о фамилиях

п реп од ав ателей, п реп од ающ их студ ентам, обуч ающ имся в

унив ерситетах

с рейтингом, меньшим200.

 

 

 

 

76.Н а п исать з ап рос,

в ып олняющ ий

в ыв од

д анных

о

наименов а ниях

унив ерситетов , ра сп оложенных в М оскв е,

и имеющ их рейтинг меньше,

ч ему ВГ У .

 

 

 

 

 

77.Н а п исать з а п рос,

в ып олняющ ий

в ыв од

сп иска фамилий студ ентов ,

обуч аемых в унив ерситете, расп оложенном в город е,

на з в а ниекоторого

стоит п ерв ымв а лфав итномсп искегород ов .

 

 

 

78.Н а п исатьз ап р ос, в ып олняющ ий в ыв од сп иска студ ентов , сред няяоценка которых п рев ышает 4 балла .

79.Н

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

з

анятий, п ров од имых д лястуд ентов п ер в ого курса ВГ У .

 

 

76

 

 

 

 

 

80.Н а п исать з ап рос,

в ып олняющ ий в ыв од

сред него

колич еств а уч ебных

ч асов п ред метов обуч ения, п реп од а в аемых студ ента мв торого курса ВГ У .

81.Н а п исатьз ап рос,

в ып олняющ ий в ыв од

колич еств а

студ ентов , имеющ их

хотябы од ну неуд ов летв орительнуюоценку и п рожив а ющ их в город е,

не

сов п ад а ющ емс город омих унив ерситета.

 

 

 

 

82.Н а п исать з а п рос,

в ып олняющ ий в ыв од

сп иска

фамилий

студ ентов ,

имеющ их

только

отлич ные оценки

и

п рожив а ющ их в

город е,

не

сов п ад а ющ емс город омих унив ерситета.

 

 

 

 

83.Н а п исать з а п рос,

в ып олняющ ий в ыв од

сп иска

фамилий

студ ентов ,

имеющ их

д в е и

более отлич ных

оценки в

кажд ом семестре,

и

п рожив а ющ их в город е, несов п а д а ющ емс город омих унив ерситета.

84.Прив ед итекак можно большеформулиров ок з ап роса “Получ итьфамилии студ ентов , сд а в а в ших экз а мен п о информатике”.

85.Прив ед итекак можно большеформулиров ок з ап роса “Получ итьфамилии п реп од ав ателей, п реп од а ющ их информатику”.

3. М а н и пули р о ва н и еда н н ы ми

3.1. Ком анды м анипул ирования данны м и

В SQL д ляв ып олненияоп ер аций в в од а д анных в таблицу, их из менения и уд аления п р ед наз нач ены три кома нд ы яз ыка манип улиров а ния д а нными

(DML). Э то команд ы – INSERT (вставить), UPDATE (обновить), DELETE

(удалить).

К оманд а

INSERT осущ еств ляет в ста в ку в таблицу нов ой строки. В

п ростейшемслуч аеона имеет след ующ ий в ид :

 

 

INSERT INTO <и м ят а бли цы >

VALUES (<зна чени е>, <зна чени е>, … );

При такой з ап иси ука з анныев

скобках п ослеключ ев ого слов а VALUES

з нач ения в в од ятся в

п оля д обав ленной

в таблицу нов ой

строки в том

п оряд ке, в

котором

соотв етств ующ ие столбцы

указ аны

п ри соз д ании

таблицы, то естьв оп ератореCREATE TABLE.

 

 

Н а п ример, в в од

нов ой стр оки в

таблицу

STUDENT

может быть

осущ еств лен след ующ имобраз ом

 

 

 

 

INSERT INTO STUDENT

VALUES (101,‘Ива н о в’,‘Алекса н др ’, 200, 3,‘М о сква ’,‘6/10/1979’, 15);

Ч тобы така якоманд а могла бытьв ып олнена , таблица с указ аннымв ней

именем (STUDENT) д олжна

быть п ред в ар ительно оп ред елена

(соз д ана)

команд ой CREATE TABLE.

Е сли в ка кое-либо п оле необход имо

в ста в ить

NULL-з на ч ение, то оно в в од итсякак обыч ноез нач ение:

 

INSERT INTO STUDENT

VALUES (101,‘Ива н о в’, NULL, 200, 3,‘М о сква ’,‘6/10/1979’, 15);

В случ аях, когд а необход имо в в ести з нач ения п олей п оряд ке, отлич ном от п оряд ка столбцов , з а д анного команд ой CREATE TABLE, или если требуется в в ести з нач ения нев о в сестолбцы, то след ует исп ольз ов ать след ующ уюформу кома нд ы INSERT:

INSERT INTO STUDENT (STUDENT_ID, CITY, SURNAME, NAME)

VALUES (101, ‘М о сква ’, ‘Ива н о в’, ‘С а ша ’);

Столбцам, на именов а ниякоторых неуказ аны в п р ив ед енном в скобках сп иске, ав томатич ески п рисв а ив ается з нач ение п о умолч а нию, если оно

78

наз на ч ено п р и оп исании таблицы (кома нд а CREATE TABLE), либо з на ч ение

NULL.

С п омощ ью кома нд ы INSERT можно из в леч ь з нач ение из од ной

таблицы и раз меститьего

д ругой, к п римеру, з ап росомслед ующ его в ид а :

INSERT INTO STUDENT1

 

 

SELECT *

 

 

 

FROM STUDENT

М о сква ’;

 

 

WHERE CITY =

 

 

При

этом таблица STUDENT1 д олжна

быть п ред в арительно соз д ана

команд ой

CREATE TABLE (раз д ел

4.1) и

иметь структуру, ид ентич ную

таблицеSTUDENT.

 

 

 

У да ление строк из

та блицы

осущ еств ляется с п омощ ью кома нд ы

DELETE.

 

 

 

 

След ующ еев ыражениеуд а ляет в сестроки таблицы EXAM_MARKS1.

DELETE FROM EXAM_MARKS1;

В рез ультатетаблица ста нов ится п устой (п ослеэ того она может быть уд алена кома нд ой DROP TABLE).

Д ля уд а ления из

та блицы

сраз у нескольких строк, уд ов летв ор яющ их

некоторому услов ию

можно

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

нап ример ,

 

 

DELETE FROM EXAM_MARKS1

WHERE STUDENT_ID = 103;

М ожно уд алитьгруп п у строк

DELETE FROM STUDENT1

WHERE CITY = М о сква ’;

79

К оманд а UPDATE п оз в оляет изменять , то есть обнов лять, з на ч ения некоторых или в сех п олей сущ еств ующ ей строке или строках та блицы. Н а п ример, ч тобы д ля в сех унив ерситетов , св ед ения о которых на ход ятся в

таблице UNIVERSITY1,

из менить рейтинг на

з нач ение 200,

можно

исп ольз ов атьконструкцию:

 

 

UPDATE UNIVERSITY1

 

 

SET RATING =

200;

 

 

Д ля ука з ания конкретных строк таблицы,

з на ч ения п олей

которых

д олжны бытьиз менены, в

команд еUPDATE можно исп ольз ов атьп ред икат,

указ ыв аемый в п ред ложении WHERE.

 

 

UPDATE UNIVERSITY1

 

 

SET RATING = 200

 

 

WHERE CITY =

М о сква ’;

 

 

В р ез ультатев ып олненияэ того з ап р оса буд ет из менен рейтинг только у унив ерситетов , расп оложенных в М оскв е.

К оманд а UPDATE п оз в оляет из менятьнетолько

од ин, но и множеств о

столбцов .

Д ля указ ания конкретных столбцов ,

з нач ения которых д олжны

бытьмод ифициров а ны, исп ольз уетсяп ред ложениеSET.

Н а п ример, на именов а ниеп ред мета обуч ения М а тема ти ка’ (д ля него

SUBJ_ID

= 43) д олжно быть з аменено,

на

на з в ание Вы сша я

ма тема ти ка’, п р и этом ид ентификационный номер необход имо сохранить, но в соотв етств ующ ие п оля строки таблицы в в ести нов ыед а нныеоб этом п ред метеобуч ения. Зап рос буд ет в ыгляд етьслед ующ имобра з ом.

UPDATE SUBJECT1

Вы сша я ма тема ти ка’, HOUR = 36, SEMESTER

SET SUBJ_NAME =

= 1

 

WHERE SUBJ_ID =

43;

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

UPDATE UNIVERSITY1

SET RATING = RATING*2;

 

80

 

Н а п ример, д ля ув елич ения в таблице STUDENT1

з на ч ения п оля

STIPEND в д в а раз а д лястуд ентов из М оскв ы можно исп ольз ов атьз ап р ос

UPDATE STUDENT1

 

 

SET STIPEND = STIPEND*2

 

WHERE CITY =

М о сква ’;

 

Пред ложение SET

не яв ляется п ред икатом, п оэтому

нем можно

указ а тьз нач ениеNULL след ующ имобраз ом.

 

UPDATE UNIVERSITY1

 

SET RATING =

NULL

 

WHERE CITY =

М о сква ’;

 

УП Р АЖ НЕ НИ Я

 

 

 

 

 

 

 

86.Н а п ишите команд у, котора я в в од ит

в

таблицу

SUBJECT строку

д ля

нов ого п ред мета обуч ениясо след ующ ими з нач ениями п олей:

 

 

 

SEMESTER = 4; SUBJ_NAME

=

Алгеб р а ’; HOUR

 

=

72;

SUBJ_ID = 201.

 

 

 

 

 

 

 

87.Вв ед ите з ап ись д ля нов ого студ ента, которого

зов ут О р лов

Н икола й,

обуч ающ егося на п ерв ом курсеВГ У ,

жив ущ его

Воронеже, св ед ения о

д атерожд енияи раз мер естип енд ии неиз в естны.

 

 

 

 

88.Н а п ишите кома нд у, уд а ляющ ую из

таблицы

EXAM_MARKS з ап иси

обо

в сех оценка х студ ента, ид ентификатор которого рав ен 100.

 

 

 

89.Н а п ишите кома нд у, которая ув елич ив ает на

5 з на ч ение рейтинга в сех,

имеющ ихся в ба з е д а нных унив ерситетов ,

расп оложенных

в

Са нкт-

Петербурге.

 

 

 

 

 

 

 

90.Из мените в та блице з на ч ение город а,

в котором п рожив ает

студ ент

Ив а нов , на “Во р о н еж ”.

 

 

 

 

 

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]