Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD / Labs / Russian / Russian / Lab3R-Data manipulation.doc
Скачиваний:
18
Добавлен:
20.02.2016
Размер:
165.38 Кб
Скачать
      1. Ключевые слова и параметры

        schema

        Имя схемы, содержащей таблицу. Если схема опущена, то Oracle предполагает, что таблица находится в вашей схеме.  

        table

        Имя таблицы, в которой производятся обновления значений.

        set_clause

         

         

        column

        Имя столбца таблицы, значение которого должно быть обновлено. Если столбец отсутствует во фразе the set_clause, значение столбца не изменяется.

        subquery

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

        Если вы определили только один столбец во фразе set_clause, подзапрос должен возвратить только одно значение.

        Если вы определили множество столбцов во фразе set_clause, подзапрос должен возвратить столько значений, сколько указано столбцов.

        Если подзапрос не возвратил ни одной строки, то указанным столбцам присваивается значение NULL. 

        expr

        Новое значение, присваиваемое соответствующему столбцу. 

        where_clause

        Ограничивает строки, которые подвергаются обновлению. Строка обновляется, если указанное условие condition принимает значение TRUE. Если эта фраза опущена, то Oracle обновляет все строки таблицы. Синтаксис условий приведен в лабораторной работе 2 . Для любой строки, которая удовлетворяет условию фразы where_clause, столбцам в левой части оператора присваивания (=) фразы set_clause присваиваются значения соответствующих выражений в правой части. Выражения вычисляются в момент обновления строки.

      2. Примеры

Простые примеры

В следующем примере всем преподавателям на должности assistant устанавливается значение NULL столбца Commission:

UPDATE TEACHER

SET Commission = NULL

WHERE post = 'ассистент';

В следующем примере преподаватель Jones переводится на кафедру 20 с увеличением ставки на 100 (предполагаем, что у нас имеется только один преподаватель Jones):

UPDATE TEACHER

SET DepNo =20, salary = salary + 100

WHERE name = 'jones';

Сложный пример

В следующем примере показывается использование следующих синтаксических конструкций предложения UPDATE:

  • Обе формы фразы set_clause в одном предложении.

  • Коррелированный подзапрос.

  • Фраза where_clause, ограничивающая обновляемые строки.

  • Использование алиаса таблицы.

  • Обновление нескольких столбцов (salary, Commission) одновременно.

UPDATE TEACHER a

SET DepNo =

(SELECT DepNo

FROM deptartment

WHERE name = 'DBMS'),

(salary, Commission) =

(SELECT 1.1*AVG(salary), 1.5*AVG(Commission)

FROM TEACHER b

WHERE a.DepNo = b.DepNo)

WHERE DepNo IN

(SELECT DepNo

FROM DEPARTMENT

WHERE FacNo = 1);

Это предложение UPDATE выполняет следующие действия:

  • Обновляет значения только у тех преподавателей, которые работают на факультете, имеющем FacNo = 1

  • Устанавливает этим преподавателям значение DepNo, равным DepNo кафедры 'DBMS' (то есть все преподаватели переводятся на эту кафедру)

  • Устанавливает ставку этим учителям, в 1.1 раз большую средней ставки их предыдущей кафедры.

  • Устанавливает надбавку этим учителям, в 1.5 раз большую средней надбавки их предыдущей кафедры.

    1. Удаление строк в таблице

      1. Синтаксис

      1. Назначение

Удаляет указанные строки в таблице.

      1. Предварительные требования

Чтобы иметь возможность удалять строки в таблице, принадлежащей вашей схеме, вы должны иметь привилегию DELETE по отношению к этой таблице.

Для удаления строк в таблицах других схем необходима системная привилегия DELETE ANY TABLE.

      1. Ключевые слова и параметры

        schema

        Имя схемы, содержащей таблицу. Если схема опущена, то Oracle предполагает, что таблица находится в вашей схеме.  

        table

        Имя таблицы, из которой удаляются строки.

        where_clause

         

        Удаляются строки, удовлетворяющие указанному условию. Условие может ссылаться на таблицу, из которой производится удаление и может содержать подзапрос.  

        Если фраза where_clause опущена, Oracle удаляет все строки таблицы.  

        t_alias

        Предоставляет имя-синоним для таблицы, которое может использоваться в любом месте предложения DELETE.

      2. Примеры

В следующем примере удаляются все строки таблицы DEPARTMENT.

DELETE FROM DEPARTMENT;

В следующем примере в таблице TEACHER удаляются строки, имеющие отношение к профессорам с надбавкой менее 100:

DELETE FROM TEACHER

WHERE post = 'professor' AND Commission < 100;

  1. Задание

      1. Вставка строк в таблицу

Вставьте следующие строки в таблицы.

FACULTY

FacPK

Name

DeanFK

Building

Fund

1

informatics

NULL

5

57398.00

2

economy

NULL

3

NULL

3

linguistics

NULL

4

NULL

DEPARTMENT

DepPK

FacFK

Name

HeadFK

Building

Fund

1

1

SE

NULL

5

14378.00

2

1

CAD

NULL

5

15000.00

3

1

DBMS

NULL

4

22000.00

4

2

Accounts

NULL

3

NULL

TEACHER

TchPK

DepFK

Name

Post

Tel

Hiredate

Salary

Commission

ChiefFK

1

1

Andrew

ассистент

2281319

01.02.2001

250

80

NULL

2

1

John

профессор

2281550

01.07.2001

400

150

1

3

2

Bill

преподаватель

NULL

17.11.2002

240

80

1

4

2

Albert

ассистент

NULL

11.11.2001

260

100

4

SGROUP

GrpPK

DepFK

Course

Num

Quantity

Curator

Rating

1

1

1

101

33

4

20

2

1

1

102

35

4

22

3

3

2

205

20

1

15

4

3

3

305

25

NULL

40

5

3

4

405

25

2

37

SUBJECT

SbjPK

Name

1

pascal

2

C

3

OS

4

inernet

5

dbms

ROOM

RomPK

Num

Seates

Floor

Building

1

101

20

1

5

2

316

150

3

5

3

201

150

2

2

4

202

30

2

5

LECTURE

TchFK

GrpFK

SbjFK

RomFK

Type

Day

Week

Lesson

1

1

1

1

лекция

пон

1

1

1

2

2

1

лабораторная

пон

1

1

2

3

3

1

лекция

втр

1

3

2

4

4

2

практика

срд

1

3

4

4

5

2

практика

чет

2

4

4

4

5

3

семинар

пят

2

1

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

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

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

  • деканы факультетов никому не подчиняются:

  • заведующие кафедр подчиняются деканам факультетов (если зав кафедры является деканом, то он никому не подчиняется)

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

  • преподаватели, проводящие лабораторные работы по дисциплине, подчиняются преподавателям, читающим лекции по этой дисциплине.

Обновите таблицу FACULTY, заменяя NULL в столбце DeanFK на внешние ключи соответствующих деканов

Обновите таблицу DEPARTMENT, заменяя NULL в столбце HeadFK на внешние ключи соответствующих заведующих кафедр.

Вставьте в таблицу SGROUP информацию о вашей группе.

Вставьте в таблицу SUBJECT все изучаемые вами в текущий момент дисциплины.

Вставьте в таблицу ROOM информацию о тех аудиториях, где проводятся у вас занятия.

Вставьте в таблицу LECTURE расписание всех ваших занятий.

Соседние файлы в папке Russian