- •Лекция 18
- •Связывание таблиц
- •Выборка данных из таблиц «Дисциплины» и «Учебный_план» (таблицы связаны по ключевому полю ID_Дисциплина)
- •Использование ключевого слова LEFT [OUTER]
- •Использование ключевого слова RIGHT [OUTER]
- •Использование раздела WHERE для связывания таблиц
- •Раздел GROUP BY
- •COUNT
- •Примеры запросов с группировкой
- •Ключевое слово ALL в разделе GROUP BY
- •Раздел COMPUTE
- •Использование команды SELECT...INTO
- •Работа с таблицей «Контакты»
- •Вставка одной строки
- •Команда INSERT
- •Вставка результата запроса
- •Вставка результата запроса
- •Изменение данных – команда UPDATE
- •Удаление данных – команда DELETE
Примеры запросов с группировкой
SELECT Семестр, SUM(Количество_часов) AS 'Нагрузка' FROM [Учебный_план]
GROUP BY Семестр
SELECT Семестр, COUNT(*) AS 'Экзамены'
FROM [Учебный_план]
WHERE Отчетность = 'э'
GROUP BY Семестр
Ключевое слово ALL в разделе GROUP BY
SELECT Семестр, COUNT(*) AS 'Количество часов > 60'
FROM [Учебный_план] WHERE Количество_часов > 60 GROUP BY Семестр
SELECT Семестр, COUNT(*) AS 'Количество часов > 60'
FROM [Учебный_план] WHERE Количество_часов > 60 GROUP BY ALL Семестр
Раздел COMPUTE
COMPUTE <Функция_агрегирования> (<столбец_агрегирования>)}[,...,
n]
SELECT Наименование,[ BY <столбецСеместр, Количество_группировки>часов FROM[,...,nУчебный] ] _план, Дисциплины
WHERE (Учебный_план.ID_Дисциплина = Дисциплины.ID_Дисциплина) AND
(Семестр = 2) COMPUTE SUM
Использование команды SELECT...INTO
INTO <имя_новой_таблицы>
SELECT {<имя_столбца> [[AS] <псевдоним_столбца>] [, ...,
n] }
INTO <имя_новой_таблицы>
FROM {<имя_исходной_таблицы> [,..., n]}
SELECT ID_Студент, Адрес, Телефон
INTO Контакты
FROM Студенты
Работа с таблицей «Контакты»
SELECT *
FROM Контакты
WHERE Телефон LIKE '120%'
ALTER TABLE Контакта
ADD CONSTRAINT FK_Контакт
FOREIGN KEY (ID_Студент)
REFERENCES Студенты
SELECT *
FROM Студенты INNER JOIN Контакты ON Студенты.ID_Студент =
Контакты.ID_Студент
Вставка одной строки
INSERT [INTO] <имя_таблицы> [(<список_колонок>)]
VALUES (<список_значений>)
INSERT Сводная_ведомость VALUES (10, 3, 5)
INSERT INTO Сводная_ведомость (ID_Дисциплина, ID_Студент)
VALUES (3, 10)
Команда INSERT
INSERT [ INTO] <имя_таблицы>
{[ (<список_колонок>) ]
{VALUES
( { DEFAULT | NULL | <выражение> } [, ..., n] ) | <результирующая_таблица>
}
}
| DEFAULT VALUES
Вставка результата запроса
INSERT INTO
<имя_таблицы>
SELECT
CREATE TABLE |
Студент 2000 |
<выражение_запроса> |
|
(ID_Студент_2000 |
INTEGER NOT NULL, |
Фамилия |
CHAR(30) NOT NULL, |
Имя |
CHAR(15) NOT NULL, |
Отчество |
CHAR(20) NOT NULL, |
Адрес |
CHAR(30), |
Телефон |
CHAR(8), |
PRIMARY KEY |
(ID_Студент_2000)) |
INSERT INTO Студент_2000
SELECT ID_Студент, Фамилия, Имя, Отчество, Адрес, Телефон FROM Студенты
WHERE Год_поступления = 2000
Вставка результата запроса
CREATE TABLE Преподаватель_дисциплина
(ID_Дисциплина |
INTEGER NOT NULL, |
ID_ПреподавательINTEGER NOT NULL, |
|
Наименование |
CHAR(20) NOT NULL, |
Фамилия |
CHAR(30) NOT NULL, |
Имя |
CHAR(15) NOT NULL, |
Отчество |
CHAR(20) NOT NULL, |
Должность |
CHAR(20) NOT NULL) |
INSERT INTO Преподаватель_дисциплина
SELECT DISTINCT Дисциплины.ID_Дисциплина, Кадровый_состав.ID_Преподаватель, Наименование, Фамилия, Имя, Отчество, Должность
FROM Кадровый_состав, Учебный_план, Дисциплины
WHERE
Кадровый_состав.ID_Преподаватель = Учебный_план.ID_Преподаватель AND Дисциплины.ID_Дисциплина = Учебный_план.ID_Дисциплина
Изменение данных – команда UPDATE
UPDATE <имя_таблицы>
SET { <имя_колонки> = { <выражение> | DEFAULT | NULL }} [,...,n]
{ [ FROM { <имя_исходной_таблицы> } [,...,n] ]
[ WHERE <условие_отбора> ] } UPDATE Учебный_план
SET Количество_часов = Количество_часов + 2 WHERE (Отчетность= ‘э’)
SELECT *
FROM Учебный_план
WHERE (Отчетность= ‘э’) AND (Семестр = 1)