Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Эквиваленты запросов на SQL языке

Читайте также:
  1. V. СОЗ ДАНИЕ ЗАПРОСОВ
  2. Алфавитный указатель терминов на русском языке
  3. Алфавитный указатель терминов на русском языке
  4. АНАЛОГИЯ В ЯЗЫКЕ И В ЭТИМОЛОГИЧЕСКОМ ИССЛЕДОВАНИИ
  5. Внелитературная лексика в языке современной печати
  6. Г) регистрирует информацию, имеющуюся в словарном файле для данного слова, - переводные эквиваленты, грамматические и семантические признаки исходного
  7. Грамматические конструкции, используемые при описании фотографии на английском языке

Задание

Выполните задания согласно варианту:

Чётные номера-2 вариант, нечётные номера-1 вариант

Вариант 1

1. Принять 2 сотрудников на работу в любые отделы

2. Перевести одного сотрудника внутри подразделения с одной должности на другую

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

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

5. Напечатать список уволенных сотрудников, отсортированный по названию подразделений

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

7. Напечатать количество сотрудников в каждом подразделении в виде: Название подразделения всего мужчин женщин

 

Вариант 2

1. Уволить 2 сотрудников

2. Перевести одного сотрудника из одного подразделения в другое

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

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

5. Напечатать список переведенных сотрудников, отсортированный по названию подразделений

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

7. Напечатать количество сотрудников в каждом подразделении в виде: Название подразделения всего мужчин женщин

 

 

Порядок выполнения работы

1.1- В Query Analyzer с помощью оператора Insert Into ввести 2 записи в таблицу истории назначений

1.2 В Query Analyzer с помощью оператора Update в поле дата_по в таблицу истории назначений записать дату увольнения для уволенных сотрудников

2 В Query Analyzer с помощью оператора Update в поле дата_по в таблицу истории назначений записать дату увольнения для переведённого сотрудника и ввести новую запись в таблицу истории назначений, используя оператор Insert into

3 Создать запрос, в котором выбрать из таблицы истории назначений записи с такими номерами, в которых поле дата_по пусто

4 Создать подзапрос, использовать его во внешнем запросе

 

5.1 Создать вложенный запрос, в котором выбрать из таблицы истории назначений записи с такими номерами, в которых поле дата_по не пусто и нет записей, в которых оно пусто

5.2 Создать вложенный запрос, в котором выбрать из таблицы истории назначений записи с такими номерами, в которых поле дата_по не пусто и есть записи, в которых оно пусто

Пример запроса со связанным подзапросом:

SELECT n,Фамилия FROM dbo.Сотрудники where n in

(SELECT distinct naz.n FROM dbo.Назначения naz

WHERE (date_end IS not NULL) and

not exists(SELECT naz1.n FROM dbo.Назначения naz1

WHERE (naz1.date_end IS NULL) and naz.n=naz1.n))

Теоретическая подготовка(проводится дома)

Написать на SQL-языке команды для пунктов 2-7

 

Контрольные вопросы

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

ü Чем отличается запрос с обычным подзапросом от запроса со связным подзапросом?

 


Отчёт по практической работе № 5 студентки Круглова АС группы П-303

Тема: “Подзапросы ”

Цель: Научиться писать на T SQL сложные запросы

Вариант 2

Выполнение работы

Эквиваленты запросов на SQL языке

UPDATE Назначения

SET date_end = GETDATE()

WHERE (n = 2) OR

(n = 23)

2

UPDATE Назначения

SET date_end = GETDATE()

WHERE (n = 8) AND (date_end IS NULL)

 

INSERT INTO Назначения

(n, kod_p, kod_d, date_b, date_end, n_pr)

VALUES (8, 4, 42, GETDATE(), NULL, NULL)

SELECT Сотрудники.Фамилия, Подраздел.name_p

FROM Сотрудники INNER JOIN

Назначения ON Сотрудники.n = Назначения.n INNER JOIN

Подраздел ON Назначения.kod_p = Подраздел.kod_p

WHERE (Назначения.date_end IS NULL)

ORDER BY Подраздел.name_p

SELECT Сотрудники.Фамилия

FROM Сотрудники INNER JOIN

Назначения ON Сотрудники.n = Назначения.n

WHERE (Назначения.date_end IS NULL) AND (Назначения.kod_p =

(SELECT kod_p

FROM Назначения AS Назначения_1

WHERE (n = 5)))

SELECT Сотрудники.n, Сотрудники.Фамилия, Подраздел.name_p

FROM Назначения INNER JOIN

Сотрудники ON Назначения.n = Сотрудники.n INNER JOIN

Подраздел ON Назначения.kod_p = Подраздел.kod_p

WHERE (Назначения.date_end IS NULL) AND EXISTS

(SELECT n

FROM Назначения AS Назначения_1

WHERE (NOT (date_end IS NULL)) AND (n = Сотрудники.n))

ORDER BY Подраздел.name_p

SELECT Должности.name_d, Сотрудники.Фамилия

FROM Сотрудники INNER JOIN

Назначения AS naz ON Сотрудники.n = naz.n INNER JOIN

Должности ON naz.kod_d = Должности.kod_d

WHERE (NOT EXISTS

(SELECT 1 AS Expr1

FROM Сотрудники AS Сотр INNER JOIN

Назначения ON Сотр.n = Назначения.n

WHERE (naz.kod_d = Назначения.kod_d) AND (Сотр.Пол = 'ж')))

SELECT DISTINCT подразделения.name_p,

(SELECT COUNT(n) AS Expr1

FROM Назначения

WHERE (kod_p = подразделения.kod_p)) AS Всего,

(SELECT COUNT(Назначения_3.n) AS man

FROM Назначения AS Назначения_3 INNER JOIN

Сотрудники ON Назначения_3.n = Сотрудники.n

WHERE (Назначения_3.kod_p = подразделения.kod_p) AND (Сотрудники.Пол = 'м')) AS Мужчин,

(SELECT COUNT(Назначения_2.n) AS wman

FROM Назначения AS Назначения_2 INNER JOIN

Сотрудники AS Сотрудники_2 ON Назначения_2.n = Сотрудники_2.n

WHERE (Назначения_2.kod_p = подразделения.kod_p) AND (Сотрудники_2.Пол = 'ж')) AS Женщин

FROM Назначения AS Назначения_1 INNER JOIN

Сотрудники AS Сотрудники_1 ON Назначения_1.n = Сотрудники_1.n INNER JOIN

Подраздел AS подразделения ON Назначения_1.kod_p = подразделения.kod_p

 

Ответы на контрольные вопросы

 

1. В каком случае вводятся псевдонимы таблиц в запросы со связными подзапросами?
Псевдоним таблицы в запросе со связанным подзапросом вводиться в случае, если результат связанного запроса зависит от результата основного запроса и наоборот.

2. Чем отличается запрос с обычным подзапросом от запроса со связным подзапросом?
Запрос с обычным подзапросом отличается от запроса со связанным подзапросом тем, что при выполнении запроса с обычным подзапросом, сначала выполняется подзапрос, а потом только основной запрос. При запросе со связанным подзапросом, подзапрос выполняется отдельно для каждой строки основного запроса, т.е. во втором случае выполнение подзапроса происходит по строкам, а не целиком, как в первом.

 

 


Дата добавления: 2015-12-08; просмотров: 109 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.009 сек.)