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

Вставка записей в таблицу.

Читайте также:
  1. А). Создание поля для нумерации записей
  2. Безналичные расчеты – это денежные расчеты путем записей по счетам в банках, в результате которых деньги списываются со счета плательщика и зачисляются на счет получателя.
  3. Вопрос 3. Ведение рабочих записей.
  4. Вставка записей в список с помощью формы
  5. Вставка номеров страниц
  6. выбрать Вставка/Ссылка/ Сноска...

Подзапросы.

1. Подзапросы с подмножеством

Получить список студентов - задолжников

SELECT *

FROM studs

WHERE n_stud IN

(SELECT n_stud

FROM kurs_stud

WHERE n_otmetka=2 OR EMPTY(n_otmetka))

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

2. Подзапросы с EXISTS и NOT EXISTS

EXISTS означает примерно "если подмножество не пусто", соотвественно NOT EXISTS означает "если подмножество пусто". Используются в подзапросах.

Найти всех преподавателей, которые не ведут ни одного предмета

SELECT *

FROM preps

WHERE NOT EXISTS

(SELECT *

FROM kurs_grup

WHERE preps.n_prep = kurs_grup.n_prep)

Haйти всех студентов из группы М-101, у которых есть хоть одна 3-ка.

SELECT *

FROM studs

WHERE n_grupa IN

(SELECT n_grupa FROM grups WHERE c_grupa='M-101')

AND EXISTS

(SELECT *

FROM kurs_stud

WHERE studs.n_stud=kurs_stud.n_stud

AND n_otmetka = 3)

Контрольные задания.

1. Получить список студентов с указанием группы, у которых нет отметок. (Нет записей в таблице KURS_STUD)

2. Получить список предметов, которые неизвестно кто ведет.

Группировка данных

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

Найти, сколько студентов в каждой группе

SELECT n_grupa, COUNT(*)

FROM studs

GROUP BY n_grupa

Группировка идет по полю n_grupa - все данные с одинаковым значением этого поля группируются и подсчитывается число записей в каждой такой группе.

Группировать можно и данные из разных таблиц.

Количество часов по лекциям и практикам отдельно на каждой кафедре

SELECT preps.n_kaf, kurs.c_priznak, SUM(kurs.n_time)

FROM preps, kurs, kurs_grup

WHERE preps.n_prep=kurs_grup.n_prep

AND kurs.n_lekz=kurs_grup.n_lekz

GROUP BY preps.n_kaf, kurs.c_priznak

Отбор групп.

Выбирать можно не только записи, но и группы.

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

SELECT grups.c_grupa, 'кол-во пятерок ',COUNT(*)

FROM grups, studs, kurs_stud

WHERE grups.n_grupa=studs.n_grupa

AND studs.n_stud=kurs_stud.n_stud

AND kurs_stud.n_otmetka=5

GROUP BY grups.c_grupa

HAVING COUNT(*) > 10

 

Контрольные задания.

1. Посчитать количество студентов каждого преподавателя.

2. Посчитать, сколько зачетов и экзаменов должен принять каждый преподаватель.

3. Найти студентов, которые не сдали 2 и более предметов.

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

Вставка записей в таблицу.

1. Прямое занесение данных

"вручную" в таблицу кафедр с вычислением уникального ключа

INSERT (n_kaf, c_kaf, N_kol, c_sav, n_kol_kurs)

INTO kafedr

VALUES (5, "Мет.Оптимизации", 0, 'Не знаю', 30)

Самостоятельно занесите еще несколько записей.

2. Вставка записей из другой таблицы.

То же с вычислением уникального ключа

INSERT INTO kafedr(n_kaf, c_kaf, N_kol, c_sav, n_kol_kurs)

SELECT max(n_kaf),'Следующая кафедра',0, 'Не знаю', 0

FROM kafedr

Мат. Анализ читается у всех групп 1 курса мат. Факультета. У всех ведет Воронин.

Внести соответствующие записи в таблицу KURS_GRUP

INSERT INTO kurs_grup(n_lekz, n_grupa, n_prep)

SELECT kurs.n_lekz, grups.n_grupa, 1

FROM kurs, grups

WHERE kurs.n_lekz='Мат.анализ'

AND grups.n_kurs=1

3. Контрольные задания.

Вставить в таблицу KURS_STUD всех студентов 1-го курса и все предметы, которые у них ведутся из таблицы KURS_GRUP. Отметки расставить случайным образом.


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



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